diff --git a/DEPS b/DEPS index de6221b..14b13909 100644 --- a/DEPS +++ b/DEPS
@@ -137,7 +137,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'cb549d80bab3e4427ef2540031717b69b72ffef2', + 'v8_revision': 'ee8d4aca6f746ceeda730abf2ef7dc3fab20064e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -145,11 +145,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '95e58587bed917de783fea8f6529229ce2f124ed', + 'angle_revision': 'e4faae213dfd8bd6ab4464922c8fe54d44fc47b9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': 'e228502d01637b60f93856b8afc9447772d48ab6', + 'swiftshader_revision': '2568cf76ee2c21dac908ae94aebbeae715c6faef', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -168,7 +168,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling googletest # and whatever else without interference from each other. - 'googletest_revision': '9997a830ee5589c2da79198bc3b60d1c47e50118', + 'googletest_revision': '3f5b5b8f8493a03fa25f1e4a7eae7678514a431d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling lighttpd # and whatever else without interference from each other. @@ -252,11 +252,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'spv_tools_revision': '06ce59b0b07658e35f0aa91f8301105968bbdc5e', + 'spv_tools_revision': '2947e88f793824cf62ffb44f6e99a20f8054c388', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'spv_headers_revision': 'c4f8f65792d4bf2657ca751904c511bbcf2ac77b', + 'spv_headers_revision': '30ebd2f19c8d1e604bdeb3cbf9a16adf4c6df325', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -802,7 +802,7 @@ # Build tools for Chrome OS. Note: This depends on third_party/pyelftools. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '802c51c55135928f90117cf8b19f90031f4db23d', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'be0bae41e32836324b91eb56ceb8839c202cd315', 'condition': 'checkout_linux', }, @@ -1177,7 +1177,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '9c05e647cb982ba03f82ebcabe613e04710e05ce', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'c827dc29b351a286099d5701afa473017f0e19b6', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78', @@ -1348,7 +1348,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '6f0b34abee8dba611c253738d955c59f703c147a', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '2a1f020dd9e60407abf55703bc1268cbb8cc530d', + Var('webrtc_git') + '/src.git' + '@' + 'efe931463c18db830c64d313f751abe5be35a754', 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -1389,7 +1389,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@77830e8b14f7da43303dde0490602caf108f757f', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@5d29b3945d6955b57d010c0065996c75be028026', 'condition': 'checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index 795e6ed..dc0ed30f 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -847,6 +847,9 @@ '|chrome/browser/chromeos/printing/'\ '|printing/', }, + 'custom_proxy': { + 'filepath': 'services/network/network_service_proxy_delegate.*', + }, 'custom_tabs': { 'filepath': 'chrome/android/java/src/org/chromium/chrome/browser/customtabs/|'\ 'chrome/android/java/src/org/chromium/chrome/browser/browseractions/|'\ @@ -2253,6 +2256,8 @@ 'cups_printing': ['baileyberro+watch-printers@chromium.org', 'jimmyxgong+watch-printers@chromium.org', 'zentaro+watch-printers@chromium.org'], + 'custom_proxy': ['lbendig@opera.com', + 'wdzierzanowski@opera.com'], 'custom_tabs': ['amalova+watch@chromium.org', 'lizeb+watch-custom-tabs@chromium.org', 'peconn+watch@chromium.org',
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index d5a5348b..71da560b 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -192,8 +192,6 @@ "bluetooth_devices_observer.h", "cancel_mode.cc", "cancel_mode.h", - "cast_config_controller.cc", - "cast_config_controller.h", "custom_tab/arc_custom_tab_view.cc", "custom_tab/arc_custom_tab_view.h", "dbus/ash_dbus_helper.cc",
diff --git a/ash/app_list/app_list_presenter_delegate_unittest.cc b/ash/app_list/app_list_presenter_delegate_unittest.cc index 748eac0..f96103b 100644 --- a/ash/app_list/app_list_presenter_delegate_unittest.cc +++ b/ash/app_list/app_list_presenter_delegate_unittest.cc
@@ -1229,6 +1229,49 @@ EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); } +// Verifies that in clamshell mode, AppList has the expected state based on the +// drag distance after dragging from Peeking state. +TEST_F(AppListPresenterDelegateTest, DragAppListViewFromPeeking) { + GetAppListTestHelper()->ShowAndRunLoop(GetPrimaryDisplayId()); + GetAppListTestHelper()->CheckState(ash::mojom::AppListViewState::kPeeking); + + // Calculate |threshold| in the same way with AppListView::EndDrag. + const int threshold = + app_list::AppListConfig::instance().peeking_app_list_height() / + app_list::kAppListThresholdDenominator; + + // Drag AppListView downward by |threshold| then release the gesture. + // Check the final state should be Peeking. + ui::test::EventGenerator* generator = GetEventGenerator(); + app_list::AppListView* view = GetAppListView(); + const int drag_to_peeking_distance = threshold; + gfx::Point drag_start = view->GetBoundsInScreen().top_center(); + gfx::Point drag_end(drag_start.x(), + drag_start.y() + drag_to_peeking_distance); + generator->GestureScrollSequence( + drag_start, drag_end, + generator->CalculateScrollDurationForFlingVelocity(drag_start, drag_end, + 2, 1000), + 1000); + GetAppListTestHelper()->WaitUntilIdle(); + GetAppListTestHelper()->CheckState(ash::mojom::AppListViewState::kPeeking); + + // Drag AppListView upward by bigger distance then release the gesture. + // Check the final state should be kFullscreenAllApps. + const int drag_to_fullscreen_distance = threshold + 1; + drag_start = view->GetBoundsInScreen().top_center(); + drag_end = + gfx::Point(drag_start.x(), drag_start.y() - drag_to_fullscreen_distance); + + generator->GestureScrollSequence( + drag_start, drag_end, + generator->CalculateScrollDurationForFlingVelocity(drag_start, drag_end, + 2, 1000), + 1000); + GetAppListTestHelper()->CheckState( + ash::mojom::AppListViewState::kFullscreenAllApps); +} + // Test a variety of behaviors for home launcher (app list in tablet mode). class AppListPresenterDelegateHomeLauncherTest : public AppListPresenterDelegateTest {
diff --git a/ash/app_list/presenter/app_list_presenter_impl.cc b/ash/app_list/presenter/app_list_presenter_impl.cc index d79f5f76..62a194a 100644 --- a/ash/app_list/presenter/app_list_presenter_impl.cc +++ b/ash/app_list/presenter/app_list_presenter_impl.cc
@@ -9,7 +9,6 @@ #include "ash/app_list/app_list_metrics.h" #include "ash/app_list/app_list_view_delegate.h" #include "ash/app_list/views/app_list_main_view.h" -#include "ash/app_list/views/app_list_view.h" #include "ash/app_list/views/contents_view.h" #include "ash/public/cpp/app_list/app_list_features.h" #include "ash/public/cpp/app_list/app_list_switches.h" @@ -211,16 +210,8 @@ void AppListPresenterImpl::EndDragFromShelf( ash::mojom::AppListViewState app_list_state) { - if (view_) { - if (app_list_state == ash::mojom::AppListViewState::kClosed || - view_->app_list_state() == ash::mojom::AppListViewState::kClosed) { - view_->Dismiss(); - } else { - view_->SetState(app_list_state); - } - view_->SetIsInDrag(false); - view_->UpdateChildViewsYPositionAndOpacity(); - } + if (view_) + view_->EndDragFromShelf(app_list_state); } void AppListPresenterImpl::ProcessMouseWheelOffset(
diff --git a/ash/app_list/presenter/app_list_presenter_impl.h b/ash/app_list/presenter/app_list_presenter_impl.h index fb4353c..f5fec27 100644 --- a/ash/app_list/presenter/app_list_presenter_impl.h +++ b/ash/app_list/presenter/app_list_presenter_impl.h
@@ -12,6 +12,7 @@ #include "ash/app_list/app_list_metrics.h" #include "ash/app_list/presenter/app_list_presenter_delegate.h" #include "ash/app_list/presenter/app_list_presenter_export.h" +#include "ash/app_list/views/app_list_view.h" #include "ash/public/cpp/pagination/pagination_model_observer.h" #include "ash/public/cpp/shelf_types.h" #include "ash/public/interfaces/app_list_view.mojom.h"
diff --git a/ash/app_list/views/app_list_view.cc b/ash/app_list/views/app_list_view.cc index 18167c7..3172b96c 100644 --- a/ash/app_list/views/app_list_view.cc +++ b/ash/app_list/views/app_list_view.cc
@@ -46,6 +46,7 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/image/image_skia.h" +#include "ui/gfx/interpolated_transform.h" #include "ui/gfx/skia_util.h" #include "ui/keyboard/keyboard_controller.h" #include "ui/strings/grit/ui_strings.h" @@ -69,10 +70,6 @@ // The height of the half app list from the bottom of the screen. constexpr int kHalfAppListHeight = 561; -// The fraction of app list height that the app list must be released at in -// order to transition to the next state. -constexpr int kAppListThresholdDenominator = 3; - // The scroll offset in order to transition from PEEKING to FULLSCREEN constexpr int kAppListMinScrollToSwitchStates = 20; @@ -448,6 +445,52 @@ DISALLOW_COPY_AND_ASSIGN(AppListBackgroundShieldView); }; +// Animation used to translate AppListView as well as its child views. The +// location and opacity of child views' are updated in each animation frame so +// it is expensive. Only used when |update_childview_each_frame_| is true. +class PeekingResetAnimation : public ui::LayerAnimationElement { + public: + PeekingResetAnimation(int y_offset, int duration_ms, AppListView* view) + : ui::LayerAnimationElement( + ui::LayerAnimationElement::TRANSFORM, + base::TimeDelta::FromMilliseconds(duration_ms)), + transform_(std::make_unique<ui::InterpolatedTranslation>( + gfx::PointF(0, y_offset), + gfx::PointF())), + view_(view) { + DCHECK(view_->is_in_drag() && + view_->app_list_state() == ash::mojom::AppListViewState::kPeeking && + !view_->is_tablet_mode()); + } + + ~PeekingResetAnimation() override = default; + + // ui::LayerAnimationElement: + void OnStart(ui::LayerAnimationDelegate* delegate) override {} + bool OnProgress(double current, + ui::LayerAnimationDelegate* delegate) override { + const double progress = + gfx::Tween::CalculateValue(gfx::Tween::EASE_OUT, current); + delegate->SetTransformFromAnimation( + transform_->Interpolate(progress), + ui::PropertyChangeReason::FROM_ANIMATION); + + // Update child views' location and opacity at each animation frame because + // child views' padding changes along with the app list view's bounds. + view_->app_list_main_view()->contents_view()->UpdateYPositionAndOpacity(); + + return true; + } + void OnGetTarget(TargetValue* target) const override {} + void OnAbort(ui::LayerAnimationDelegate* delegate) override {} + + private: + std::unique_ptr<ui::InterpolatedTransform> transform_; + AppListView* view_; + + DISALLOW_COPY_AND_ASSIGN(PeekingResetAnimation); +}; + //////////////////////////////////////////////////////////////////////////////// // AppListView::TestApi @@ -961,53 +1004,54 @@ const int location_y_in_current_work_area = location_in_screen_coordinates.y() - GetDisplayNearestView().work_area().y(); - // If the drag ended near the bezel, close the app list and return early. + // If the drag ended near the bezel, close the app list. if (location_y_in_current_work_area >= (fullscreen_height - kAppListBezelMargin)) { Dismiss(); - return; - } - switch (app_list_state_) { - case ash::mojom::AppListViewState::kFullscreenAllApps: - if (drag_delta < -app_list_threshold) { - if (is_tablet_mode_ || is_side_shelf_) + } else { + switch (app_list_state_) { + case ash::mojom::AppListViewState::kFullscreenAllApps: + if (drag_delta < -app_list_threshold) { + if (is_tablet_mode_ || is_side_shelf_) + Dismiss(); + else + SetState(ash::mojom::AppListViewState::kPeeking); + } else { + SetState(app_list_state_); + } + break; + case ash::mojom::AppListViewState::kFullscreenSearch: + if (drag_delta < -app_list_threshold) Dismiss(); else - SetState(ash::mojom::AppListViewState::kPeeking); - } else { - SetState(app_list_state_); - } - break; - case ash::mojom::AppListViewState::kFullscreenSearch: - if (drag_delta < -app_list_threshold) - Dismiss(); - else - SetState(app_list_state_); - break; - case ash::mojom::AppListViewState::kHalf: - if (drag_delta > app_list_threshold) - SetState(ash::mojom::AppListViewState::kFullscreenSearch); - else if (drag_delta < -app_list_threshold) - Dismiss(); - else - SetState(app_list_state_); - break; - case ash::mojom::AppListViewState::kPeeking: - if (drag_delta > app_list_threshold) { - SetState(ash::mojom::AppListViewState::kFullscreenAllApps); - UMA_HISTOGRAM_ENUMERATION(kAppListPeekingToFullscreenHistogram, - kSwipe, kMaxPeekingToFullscreen); - } else if (drag_delta < -app_list_threshold) { - Dismiss(); - } else { - SetState(app_list_state_); - } - break; - case ash::mojom::AppListViewState::kClosed: - NOTREACHED(); - break; + SetState(app_list_state_); + break; + case ash::mojom::AppListViewState::kHalf: + if (drag_delta > app_list_threshold) + SetState(ash::mojom::AppListViewState::kFullscreenSearch); + else if (drag_delta < -app_list_threshold) + Dismiss(); + else + SetState(app_list_state_); + break; + case ash::mojom::AppListViewState::kPeeking: + if (drag_delta > app_list_threshold) { + SetState(ash::mojom::AppListViewState::kFullscreenAllApps); + UMA_HISTOGRAM_ENUMERATION(kAppListPeekingToFullscreenHistogram, + kSwipe, kMaxPeekingToFullscreen); + } else if (drag_delta < -app_list_threshold) { + Dismiss(); + } else { + SetState(app_list_state_); + } + break; + case ash::mojom::AppListViewState::kClosed: + NOTREACHED(); + break; + } } } + SetIsInDrag(false); UpdateChildViewsYPositionAndOpacity(); initial_drag_point_ = gfx::Point(); } @@ -1320,7 +1364,6 @@ // Avoid scrolling events for the app list in tablet mode. if (is_side_shelf_ || is_tablet_mode()) return; - SetIsInDrag(false); EndDrag(event->location()); event->SetHandled(); break; @@ -1484,6 +1527,9 @@ if (target_state == ash::mojom::AppListViewState::kClosed) return; + base::AutoReset<bool> auto_reset( + &update_childview_each_frame_, + ShouldUpdateChildViewsDuringAnimation(target_state)); const display::Display display = GetDisplayNearestView(); const int target_state_y = GetPreferredWidgetYForState(target_state); gfx::Rect target_bounds = fullscreen_widget_->GetNativeView()->bounds(); @@ -1515,7 +1561,8 @@ ui::Layer* layer = fullscreen_widget_->GetLayer(); layer->SetBounds(target_bounds); gfx::Transform transform; - transform.Translate(0, original_state_y - target_state_y); + const int y_offset = original_state_y - target_state_y; + transform.Translate(0, y_offset); layer->SetTransform(transform); ui::LayerAnimator* animator = layer->GetAnimator(); @@ -1549,12 +1596,18 @@ TRACE_EVENT_ASYNC_BEGIN0("ui", "AppList::StateTransitionAnimations", transition_animation_observer_.get()); - layer->SetTransform(gfx::Transform()); + if (update_childview_each_frame_) { + animator->StartAnimation( + new ui::LayerAnimationSequence(std::make_unique<PeekingResetAnimation>( + y_offset, animation_duration, this))); + } else { + layer->SetTransform(gfx::Transform()); - // In transition animation, layout is only performed after it is complete, - // which makes the child views jump. So update y positions in advance here to - // avoid that. - app_list_main_view_->contents_view()->UpdateYPositionAndOpacity(); + // In transition animation, layout is only performed after it is complete, + // which makes the child views jump. So update y positions in advance here + // to avoid that. + app_list_main_view_->contents_view()->UpdateYPositionAndOpacity(); + } } void AppListView::StartCloseAnimation(base::TimeDelta animation_duration) { @@ -1675,11 +1728,12 @@ if (!is_in_drag && !is_tablet_mode_) presentation_time_recorder_.reset(); - if (app_list_state_ == ash::mojom::AppListViewState::kClosed) - return; - if (is_in_drag == is_in_drag_) return; + is_in_drag_ = is_in_drag; + + if (app_list_state_ == ash::mojom::AppListViewState::kClosed) + return; if (is_in_drag && !is_tablet_mode_) { DCHECK(!presentation_time_recorder_); @@ -1688,7 +1742,6 @@ kAppListDragInClamshellMaxLatencyHistogram); } - is_in_drag_ = is_in_drag; GetAppsContainerView()->UpdateControlVisibility(app_list_state_, is_in_drag_); } @@ -2002,7 +2055,7 @@ } int AppListView::GetPreferredWidgetYForState( - ash::mojom::AppListViewState state) { + ash::mojom::AppListViewState state) const { // Note that app list container fills the screen, so we can treat the // container's y as the top of display. const display::Display display = GetDisplayNearestView(); @@ -2060,6 +2113,29 @@ app_list_background_shield_->SetTransform(transform); } +bool AppListView::ShouldUpdateChildViewsDuringAnimation( + ash::mojom::AppListViewState target_state) const { + // Return true when following conditions are all satisfied: + // (1) In Clamshell mode. + // (2) AppListView is in drag and both the current state and the target state + // are Peeking. For example, drag AppListView from Peeking state by a little + // offset then release the drag. + // (3) The top of AppListView's current bounds is lower than that of + // AppList in Peeking state. Because UI janks obviously in this situation + // wihtout updating child views in each animation frame. + + if (is_tablet_mode_) + return false; + + if (target_state != ash::mojom::AppListViewState::kPeeking || !is_in_drag_ || + app_list_state_ != target_state) { + return false; + } + + return fullscreen_widget_->GetNativeView()->bounds().origin().y() > + GetPreferredWidgetYForState(target_state); +} + void AppListView::OnStateTransitionAnimationCompleted() { delegate_->OnStateTransitionAnimationCompleted(app_list_state_); } @@ -2070,4 +2146,16 @@ animation_transition); } +void AppListView::EndDragFromShelf( + ash::mojom::AppListViewState app_list_state) { + if (app_list_state == ash::mojom::AppListViewState::kClosed || + app_list_state_ == ash::mojom::AppListViewState::kClosed) { + Dismiss(); + } else { + SetState(app_list_state); + } + SetIsInDrag(false); + UpdateChildViewsYPositionAndOpacity(); +} + } // namespace app_list
diff --git a/ash/app_list/views/app_list_view.h b/ash/app_list/views/app_list_view.h index 713a53d..4c08ac72c 100644 --- a/ash/app_list/views/app_list_view.h +++ b/ash/app_list/views/app_list_view.h
@@ -57,8 +57,14 @@ class TransitionAnimationObserver; namespace { + // The background corner radius in peeking and fullscreen state. constexpr int kAppListBackgroundRadius = 28; + +// The fraction of app list height that the app list must be released at in +// order to transition to the next state. +constexpr int kAppListThresholdDenominator = 3; + } // namespace // AppListView is the top-level view and controller of app list UI. It creates @@ -281,6 +287,9 @@ void OnTabletModeAnimationTransitionNotified( TabletModeAnimationTransition animation_transition); + // Called at the end of dragging AppList from Shelf. + void EndDragFromShelf(ash::mojom::AppListViewState app_list_state); + views::Widget* get_fullscreen_widget_for_test() const { return fullscreen_widget_; } @@ -420,7 +429,7 @@ // Returns preferred y of fullscreen widget bounds in parent window for the // specified state. - int GetPreferredWidgetYForState(ash::mojom::AppListViewState state); + int GetPreferredWidgetYForState(ash::mojom::AppListViewState state) const; // Returns preferred fullscreen widget bounds in parent window for the // specified state. Note that this function should only be called after the @@ -432,6 +441,11 @@ // |app_list_state_| and |is_in_drag_|. void UpdateAppListBackgroundYPosition(); + // Returns whether it should update child views' position and opacity in each + // animation frame. + bool ShouldUpdateChildViewsDuringAnimation( + ash::mojom::AppListViewState target_state) const; + AppListViewDelegate* delegate_; // Weak. Owned by AppListService. AppListModel* const model_; // Not Owned. SearchModel* const search_model_; // Not Owned. @@ -510,6 +524,14 @@ // Records the presentation time for app launcher dragging. std::unique_ptr<ash::PresentationTimeRecorder> presentation_time_recorder_; + // Update child views' position and opacity in each animation frame when it is + // true. The padding between child views is affected by the height of + // AppListView. In the normal animation, child views' location is only updated + // at the end of animation. As a result, the dramatic change in padding leads + // to animation jank. However, updating child views in each animation frame is + // expensive. So it is only applied in the limited scenarios. + bool update_childview_each_frame_ = false; + base::WeakPtrFactory<AppListView> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(AppListView);
diff --git a/ash/app_list/views/apps_grid_view.cc b/ash/app_list/views/apps_grid_view.cc index ed1b276..6eff47428 100644 --- a/ash/app_list/views/apps_grid_view.cc +++ b/ash/app_list/views/apps_grid_view.cc
@@ -359,6 +359,12 @@ if (item_list_) item_list_->RemoveObserver(this); + // Cancel animations now, otherwise RemoveAllChildViews() may call back to + // ViewHierarchyChanged() during removal, which can lead to double deletes + // (because ViewHierarchyChanged() may attempt to delete a view that is part + // way through deletion). + bounds_animator_.Cancel(); + view_model_.Clear(); RemoveAllChildViews(true); }
diff --git a/ash/cast_config_controller.cc b/ash/cast_config_controller.cc deleted file mode 100644 index a5826b89..0000000 --- a/ash/cast_config_controller.cc +++ /dev/null
@@ -1,84 +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/cast_config_controller.h" - -#include <utility> -#include <vector> - -namespace ash { - -CastConfigController::CastConfigController() = default; - -CastConfigController::~CastConfigController() = default; - -bool CastConfigController::Connected() { - return client_.is_bound(); -} - -void CastConfigController::AddObserver(CastConfigControllerObserver* observer) { - observers_.AddObserver(observer); -} - -void CastConfigController::RemoveObserver( - CastConfigControllerObserver* observer) { - observers_.RemoveObserver(observer); -} - -void CastConfigController::BindRequest(mojom::CastConfigRequest request) { - bindings_.AddBinding(this, std::move(request)); -} - -bool CastConfigController::HasSinksAndRoutes() const { - return !sinks_and_routes_.empty(); -} - -bool CastConfigController::HasActiveRoute() const { - for (const auto& sr : sinks_and_routes_) { - if (!sr->route->title.empty() && sr->route->is_local_source) - return true; - } - - return false; -} - -void CastConfigController::SetClient( - mojom::CastConfigClientAssociatedPtrInfo client) { - client_.Bind(std::move(client)); - - // If we added observers before we were connected to, run them now. - if (observers_.might_have_observers()) - client_->RequestDeviceRefresh(); -} - -void CastConfigController::OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) { - sinks_and_routes_.clear(); - for (const auto& item : devices) - sinks_and_routes_.emplace_back(item.Clone()); - - for (auto& observer : observers_) { - std::vector<mojom::SinkAndRoutePtr> devices_copy; - for (const auto& item : devices) - devices_copy.emplace_back(item.Clone()); - observer.OnDevicesUpdated(std::move(devices_copy)); - } -} - -void CastConfigController::RequestDeviceRefresh() { - if (client_) - client_->RequestDeviceRefresh(); -} - -void CastConfigController::CastToSink(ash::mojom::CastSinkPtr sink) { - if (client_) - client_->CastToSink(std::move(sink)); -} - -void CastConfigController::StopCasting(ash::mojom::CastRoutePtr route) { - if (client_) - client_->StopCasting(std::move(route)); -} - -} // namespace ash
diff --git a/ash/cast_config_controller.h b/ash/cast_config_controller.h deleted file mode 100644 index 5f9d8bd5..0000000 --- a/ash/cast_config_controller.h +++ /dev/null
@@ -1,83 +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_CAST_CONFIG_CONTROLLER_H_ -#define ASH_CAST_CONFIG_CONTROLLER_H_ - -#include <vector> - -#include "ash/public/interfaces/cast_config.mojom.h" -#include "base/macros.h" -#include "base/observer_list.h" -#include "mojo/public/cpp/bindings/associated_binding.h" -#include "mojo/public/cpp/bindings/binding_set.h" - -namespace ash { - -// There is a single CastConfigController which receives device -// information. This observer interface sends that information to all the -// TrayCast items--there is one per display. -class CastConfigControllerObserver { - public: - virtual void OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) = 0; - - protected: - virtual ~CastConfigControllerObserver() {} -}; - -// We want to establish our connection lazily and preferably only once, as -// TrayCast instances will come and go. -class CastConfigController : public ash::mojom::CastConfig { - public: - CastConfigController(); - ~CastConfigController() override; - - // Returns whether our SetClient() method has been called and the client - // object pointer is still live. - bool Connected(); - - void AddObserver(CastConfigControllerObserver* observer); - void RemoveObserver(CastConfigControllerObserver* observer); - - void BindRequest(mojom::CastConfigRequest request); - - // Return true if there are available cast devices. - bool HasSinksAndRoutes() const; - - // Return true if casting is active. The route may be DIAL based, such as - // casting YouTube where the cast sink directly streams content from another - // server. In that case, this device is not actively transmitting information - // to the cast sink. - bool HasActiveRoute() const; - - // ash::mojom::CastConfig: - void SetClient(mojom::CastConfigClientAssociatedPtrInfo client) override; - void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; - - // Methods to forward to |client_|. - void RequestDeviceRefresh(); - void CastToSink(mojom::CastSinkPtr sink); - void StopCasting(mojom::CastRoutePtr route); - - const std::vector<mojom::SinkAndRoutePtr>& sinks_and_routes() const { - return sinks_and_routes_; - } - - private: - // Bindings for the CastConfig interface. - mojo::BindingSet<mojom::CastConfig> bindings_; - - mojom::CastConfigClientAssociatedPtr client_; - - std::vector<mojom::SinkAndRoutePtr> sinks_and_routes_; - - base::ObserverList<CastConfigControllerObserver>::Unchecked observers_; - - DISALLOW_COPY_AND_ASSIGN(CastConfigController); -}; - -} // namespace ash - -#endif // ASH_CAST_CONFIG_CONTROLLER_H_
diff --git a/ash/ime/ime_controller.cc b/ash/ime/ime_controller.cc index 6d08aa3..5c30e5aa 100644 --- a/ash/ime/ime_controller.cc +++ b/ash/ime/ime_controller.cc
@@ -19,9 +19,9 @@ : mode_indicator_observer_(std::make_unique<ModeIndicatorObserver>()) {} ImeController::~ImeController() { - Shell* shell = Shell::Get(); - shell->cast_config()->RemoveObserver(this); - shell->display_manager()->RemoveObserver(this); + if (CastConfigController::Get()) + CastConfigController::Get()->RemoveObserver(this); + Shell::Get()->display_manager()->RemoveObserver(this); } void ImeController::AddObserver(Observer* observer) { @@ -40,9 +40,9 @@ client_ = std::move(client); // Initializes some observers for client. - Shell* shell = Shell::Get(); - shell->cast_config()->AddObserver(this); - shell->display_manager()->AddObserver(this); + if (CastConfigController::Get()) + CastConfigController::Get()->AddObserver(this); + Shell::Get()->display_manager()->AddObserver(this); } bool ImeController::CanSwitchIme() const { @@ -186,13 +186,12 @@ client_->UpdateMirroringState(is_mirroring); } -void ImeController::OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) { +void ImeController::OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) { DCHECK(client_); bool casting_desktop = false; - for (auto& receiver : devices) { - if (receiver->route->content_source == mojom::ContentSource::DESKTOP) { + for (const auto& receiver : devices) { + if (receiver.route.content_source == ContentSource::kDesktop) { casting_desktop = true; break; }
diff --git a/ash/ime/ime_controller.h b/ash/ime/ime_controller.h index 678a5a4..5bbe32b 100644 --- a/ash/ime/ime_controller.h +++ b/ash/ime/ime_controller.h
@@ -9,7 +9,7 @@ #include <vector> #include "ash/ash_export.h" -#include "ash/cast_config_controller.h" +#include "ash/public/cpp/cast_config_controller.h" #include "ash/public/interfaces/ime_controller.mojom.h" #include "ash/public/interfaces/ime_info.mojom.h" #include "base/macros.h" @@ -29,7 +29,7 @@ // which might live in Chrome browser or in a separate mojo service. class ASH_EXPORT ImeController : public mojom::ImeController, public display::DisplayObserver, - public CastConfigControllerObserver { + public CastConfigController::Observer { public: class Observer { public: @@ -113,8 +113,8 @@ void OnDisplayMetricsChanged(const display::Display& display, uint32_t changed_metrics) override; - // CastConfigControllerObserver: - void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; + // CastConfigController::Observer: + void OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) override; // Synchronously returns the cached caps lock state. bool IsCapsLockEnabled() const;
diff --git a/ash/media/media_notification_view.cc b/ash/media/media_notification_view.cc index 0923282..4e93dfc 100644 --- a/ash/media/media_notification_view.cc +++ b/ash/media/media_notification_view.cc
@@ -20,6 +20,7 @@ #include "ui/message_center/public/cpp/message_center_constants.h" #include "ui/message_center/views/notification_control_buttons_view.h" #include "ui/message_center/views/notification_header_view.h" +#include "ui/native_theme/native_theme_dark_aura.h" #include "ui/views/controls/button/image_button_factory.h" #include "ui/views/layout/box_layout.h" #include "ui/views/style/typography.h" @@ -110,6 +111,7 @@ SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::kVertical, gfx::Insets(), 0)); + SetNativeTheme(ui::NativeThemeDarkAura::instance()); // |controls_button_view_| has the common notification control buttons. control_buttons_view_ = std::make_unique<message_center::NotificationControlButtonsView>(this);
diff --git a/ash/mojo_interface_factory.cc b/ash/mojo_interface_factory.cc index fb10ab6..f401f98 100644 --- a/ash/mojo_interface_factory.cc +++ b/ash/mojo_interface_factory.cc
@@ -15,7 +15,6 @@ #include "ash/assistant/assistant_screen_context_controller.h" #include "ash/assistant/assistant_setup_controller.h" #include "ash/autotest/shelf_integration_test_api.h" -#include "ash/cast_config_controller.h" #include "ash/display/ash_display_controller.h" #include "ash/display/cros_display_config.h" #include "ash/display/display_output_protection.h" @@ -133,10 +132,6 @@ Shell::Get()->message_center_controller()->BindRequest(std::move(request)); } -void BindCastConfigOnMainThread(mojom::CastConfigRequest request) { - Shell::Get()->cast_config()->BindRequest(std::move(request)); -} - void BindDisplayOutputProtectionRequestOnMainThread( mojom::DisplayOutputProtectionRequest request) { Shell::Get()->display_output_protection()->BindRequest(std::move(request)); @@ -303,8 +298,6 @@ registry->AddInterface( base::BindRepeating(&BindAshMessageCenterControllerRequestOnMainThread), main_thread_task_runner); - registry->AddInterface(base::BindRepeating(&BindCastConfigOnMainThread), - main_thread_task_runner); if (base::FeatureList::IsEnabled(features::kKioskNextShell)) { registry->AddInterface( base::BindRepeating(&BindKioskNextShellControllerRequestOnMainThread),
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn index bce7add..56e71f1 100644 --- a/ash/public/cpp/BUILD.gn +++ b/ash/public/cpp/BUILD.gn
@@ -56,6 +56,8 @@ "caption_buttons/frame_size_button_delegate.h", "caption_buttons/snap_controller.cc", "caption_buttons/snap_controller.h", + "cast_config_controller.cc", + "cast_config_controller.h", "default_frame_header.cc", "default_frame_header.h", "default_scale_factor_retriever.cc",
diff --git a/ash/public/cpp/cast_config_controller.cc b/ash/public/cpp/cast_config_controller.cc new file mode 100644 index 0000000..7206371 --- /dev/null +++ b/ash/public/cpp/cast_config_controller.cc
@@ -0,0 +1,40 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/public/cpp/cast_config_controller.h" + +#include "base/logging.h" + +namespace ash { + +namespace { +CastConfigController* g_instance = nullptr; +} + +CastSink::CastSink() = default; + +CastSink::CastSink(const CastSink& other) = default; + +SinkAndRoute::SinkAndRoute() = default; + +SinkAndRoute::SinkAndRoute(const SinkAndRoute& other) = default; + +SinkAndRoute::SinkAndRoute(SinkAndRoute&& other) = default; + +// static +CastConfigController* CastConfigController::Get() { + return g_instance; +} + +CastConfigController::CastConfigController() { + DCHECK_EQ(nullptr, g_instance); + g_instance = this; +} + +CastConfigController::~CastConfigController() { + DCHECK_EQ(this, g_instance); + g_instance = nullptr; +} + +} // namespace ash
diff --git a/ash/public/cpp/cast_config_controller.h b/ash/public/cpp/cast_config_controller.h new file mode 100644 index 0000000..132c9d43 --- /dev/null +++ b/ash/public/cpp/cast_config_controller.h
@@ -0,0 +1,115 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_PUBLIC_CPP_CAST_CONFIG_CONTROLLER_H_ +#define ASH_PUBLIC_CPP_CAST_CONFIG_CONTROLLER_H_ + +#include <string> +#include <vector> + +#include "ash/public/cpp/ash_public_export.h" +#include "base/observer_list_types.h" + +namespace ash { + +// The type of icon the sink is associated with. These values match +// media_router::SinkIconType. +enum class SinkIconType { + kCast = 0, + kCastAudioGroup = 1, + kCastAudio = 2, + kMeeting = 3, + kHangout = 4, + kEducation = 5, + kWiredDisplay = 6, + kGeneric = 7, +}; + +struct ASH_PUBLIC_EXPORT CastSink { + CastSink(); + CastSink(const CastSink& other); + + std::string id; + std::string name; + std::string domain; + + // Icon which describes the type of sink media is being routed to. + SinkIconType sink_icon_type = SinkIconType::kGeneric; +}; + +enum class ContentSource { + kUnknown, + kTab, + kDesktop, +}; + +struct ASH_PUBLIC_EXPORT CastRoute { + std::string id; + std::string title; + + // Is the activity source this computer? ie, are we mirroring the display? + bool is_local_source = false; + + // What is source of the content? For example, we could be DIAL casting a + // tab or mirroring the entire desktop. + ContentSource content_source = ContentSource::kUnknown; +}; + +struct ASH_PUBLIC_EXPORT SinkAndRoute { + SinkAndRoute(); + SinkAndRoute(const SinkAndRoute& other); + SinkAndRoute(SinkAndRoute&& other); + + CastSink sink; + CastRoute route; +}; + +// This interface allows the UI code in ash, e.g. |TrayCastDetailedView|, to +// access the cast system. This is implemented in Chrome and is expected to +// outlive ash::Shell. +class ASH_PUBLIC_EXPORT CastConfigController { + public: + class Observer : public base::CheckedObserver { + public: + virtual void OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) = 0; + + protected: + ~Observer() override = default; + }; + + // Returns the singleton instance, which may be null in unit tests. + static CastConfigController* Get(); + + virtual void AddObserver(Observer* observer) = 0; + virtual void RemoveObserver(Observer* observer) = 0; + + // Return true if there are available cast devices. + virtual bool HasSinksAndRoutes() const = 0; + + // Return true if casting is active. The route may be DIAL based, such as + // casting YouTube where the cast sink directly streams content from another + // server. In that case, this device is not actively transmitting information + // to the cast sink. + virtual bool HasActiveRoute() const = 0; + + // Request fresh data from the backend. When the data is available, all + // registered observers will get called. + virtual void RequestDeviceRefresh() = 0; + + virtual const std::vector<ash::SinkAndRoute>& GetSinksAndRoutes() = 0; + + // Initiate a casting session to the sink identified by |sink_id|. + virtual void CastToSink(const std::string& sink_id) = 0; + + // A user-initiated request to stop the given cast session. + virtual void StopCasting(const std::string& route_id) = 0; + + protected: + CastConfigController(); + virtual ~CastConfigController(); +}; + +} // namespace ash + +#endif // ASH_PUBLIC_CPP_CAST_CONFIG_CONTROLLER_H_
diff --git a/ash/public/cpp/manifest.cc b/ash/public/cpp/manifest.cc index 196a363c..df991f083 100644 --- a/ash/public/cpp/manifest.cc +++ b/ash/public/cpp/manifest.cc
@@ -11,7 +11,6 @@ #include "ash/public/interfaces/ash_message_center_controller.mojom.h" #include "ash/public/interfaces/assistant_controller.mojom.h" #include "ash/public/interfaces/assistant_volume_control.mojom.h" -#include "ash/public/interfaces/cast_config.mojom.h" #include "ash/public/interfaces/constants.mojom.h" #include "ash/public/interfaces/cros_display_config.mojom.h" #include "ash/public/interfaces/display_output_protection.mojom.h" @@ -81,7 +80,7 @@ mojom::AssistantNotificationController, mojom::AssistantScreenContextController, mojom::AssistantSetupController, - mojom::AssistantVolumeControl, mojom::CastConfig, + mojom::AssistantVolumeControl, mojom::KioskNextShellController, mojom::CrosDisplayConfigController, mojom::DockedMagnifierController,
diff --git a/ash/public/interfaces/BUILD.gn b/ash/public/interfaces/BUILD.gn index 521ee16..162ac134 100644 --- a/ash/public/interfaces/BUILD.gn +++ b/ash/public/interfaces/BUILD.gn
@@ -27,7 +27,6 @@ "assistant_image_downloader.mojom", "assistant_setup.mojom", "assistant_volume_control.mojom", - "cast_config.mojom", "constants.mojom", "cros_display_config.mojom", "display_output_protection.mojom",
diff --git a/ash/public/interfaces/cast_config.mojom b/ash/public/interfaces/cast_config.mojom deleted file mode 100644 index 2f27a9c..0000000 --- a/ash/public/interfaces/cast_config.mojom +++ /dev/null
@@ -1,78 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module ash.mojom; - -// The type of icon the sink is associated with. These values match -// media_router::SinkIconType. -enum SinkIconType { - CAST = 0, - CAST_AUDIO_GROUP = 1, - CAST_AUDIO = 2, - MEETING = 3, - HANGOUT = 4, - EDUCATION = 5, - WIRED_DISPLAY = 6, - GENERIC = 7 -}; - -struct CastSink { - string id; - string name; - string domain; - - // Icon which describes the type of sink media is being routed to. - SinkIconType sink_icon_type = SinkIconType.GENERIC; -}; - -enum ContentSource { - UNKNOWN, - TAB, - DESKTOP -}; - -struct CastRoute { - string id; - string title; - - // Is the activity source this computer? ie, are we mirroring the display? - bool is_local_source = false; - - // What is source of the content? For example, we could be DIAL casting a - // tab or mirroring the entire desktop. - ContentSource content_source = ContentSource.UNKNOWN; -}; - -struct SinkAndRoute { - CastSink sink; - CastRoute route; -}; - -// Allows clients (e.g. Chrome browser) to interface with the cast item in the -// system tray. -interface CastConfig { - // Sets the client interface. This client interface will receive commands from - // ash and provide OnDevicesUpdated() calls. - SetClient(associated CastConfigClient client); - - // Invoked whenever there is new sink or route information available. - OnDevicesUpdated(array<SinkAndRoute> device); -}; - -// This delegate allows the UI code in ash, e.g. |TrayCastDetailedView|, -// to access the cast system. -// -// TODO(erg): Eventually, this should no longer be exported by chrome, but -// should be exported by a separate cast service. -interface CastConfigClient { - // Request fresh data from the backend. When the data is available, all - // registered observers will get called. - RequestDeviceRefresh(); - - // Initiate a casting session to |sink|. - CastToSink(CastSink sink); - - // A user-initiated request to stop the given cast session. - StopCasting(CastRoute route); -};
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc index a932f19..83febfe 100644 --- a/ash/shelf/shelf_layout_manager.cc +++ b/ash/shelf/shelf_layout_manager.cc
@@ -277,6 +277,7 @@ Shell::Get()->activation_client()->AddObserver(this); Shell::Get()->locale_update_controller()->AddObserver(this); state_.session_state = Shell::Get()->session_controller()->GetSessionState(); + shelf_background_type_ = GetShelfBackgroundType(); wallpaper_controller_observer_.Add(Shell::Get()->wallpaper_controller()); display::Screen::GetScreen()->AddObserver(this); ScreenRotationAnimator::GetForRootWindow(
diff --git a/ash/shell.cc b/ash/shell.cc index b98dd53..d25afe58 100644 --- a/ash/shell.cc +++ b/ash/shell.cc
@@ -22,7 +22,6 @@ #include "ash/app_list/app_list_controller_impl.h" #include "ash/assistant/assistant_controller.h" #include "ash/autoclick/autoclick_controller.h" -#include "ash/cast_config_controller.h" #include "ash/dbus/ash_dbus_helper.h" #include "ash/dbus/ash_dbus_services.h" #include "ash/detachable_base/detachable_base_handler.h" @@ -619,7 +618,6 @@ ash_display_controller_(std::make_unique<AshDisplayController>()), brightness_control_delegate_( std::make_unique<system::BrightnessControllerChromeos>()), - cast_config_(std::make_unique<CastConfigController>()), connector_(connector), first_run_helper_(std::make_unique<FirstRunHelper>()), focus_cycler_(std::make_unique<FocusCycler>()),
diff --git a/ash/shell.h b/ash/shell.h index e561b7b..baab7eb 100644 --- a/ash/shell.h +++ b/ash/shell.h
@@ -106,7 +106,6 @@ class BluetoothNotificationController; class BluetoothPowerController; class BrightnessControlDelegate; -class CastConfigController; class DisplayOutputProtection; class CrosDisplayConfig; class DesksController; @@ -353,7 +352,6 @@ BrightnessControlDelegate* brightness_control_delegate() { return brightness_control_delegate_.get(); } - CastConfigController* cast_config() { return cast_config_.get(); } service_manager::Connector* connector() { return connector_; } CrosDisplayConfig* cros_display_config() { return cros_display_config_.get(); @@ -710,7 +708,6 @@ std::unique_ptr<AssistantController> assistant_controller_; std::unique_ptr<BacklightsForcedOffSetter> backlights_forced_off_setter_; std::unique_ptr<BrightnessControlDelegate> brightness_control_delegate_; - std::unique_ptr<CastConfigController> cast_config_; std::unique_ptr<CrosDisplayConfig> cros_display_config_; service_manager::Connector* const connector_; std::unique_ptr<DesksController> desks_controller_;
diff --git a/ash/system/cast/cast_feature_pod_controller.cc b/ash/system/cast/cast_feature_pod_controller.cc index 239427c2..4eee642 100644 --- a/ash/system/cast/cast_feature_pod_controller.cc +++ b/ash/system/cast/cast_feature_pod_controller.cc
@@ -17,11 +17,11 @@ CastFeaturePodController::CastFeaturePodController( UnifiedSystemTrayController* tray_controller) : tray_controller_(tray_controller) { - Shell::Get()->cast_config()->AddObserver(this); } CastFeaturePodController::~CastFeaturePodController() { - Shell::Get()->cast_config()->RemoveObserver(this); + if (CastConfigController::Get() && button_) + CastConfigController::Get()->RemoveObserver(this); } FeaturePodButton* CastFeaturePodController::CreateButton() { @@ -33,7 +33,12 @@ button_->ShowDetailedViewArrow(); button_->DisableLabelButtonFocus(); button_->SetID(VIEW_ID_CAST_MAIN_VIEW); - Update(); + + if (CastConfigController::Get()) { + CastConfigController::Get()->AddObserver(this); + CastConfigController::Get()->RequestDeviceRefresh(); + } + return button_; } @@ -46,14 +51,13 @@ } void CastFeaturePodController::OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) { + const std::vector<SinkAndRoute>& devices) { Update(); } void CastFeaturePodController::Update() { - CastConfigController* cast_config = Shell::Get()->cast_config(); - button_->SetVisible(cast_config->Connected() && - cast_config->HasSinksAndRoutes() && + auto* cast_config = CastConfigController::Get(); + button_->SetVisible(cast_config && cast_config->HasSinksAndRoutes() && !cast_config->HasActiveRoute()); }
diff --git a/ash/system/cast/cast_feature_pod_controller.h b/ash/system/cast/cast_feature_pod_controller.h index cfae108..a88258a4f 100644 --- a/ash/system/cast/cast_feature_pod_controller.h +++ b/ash/system/cast/cast_feature_pod_controller.h
@@ -6,7 +6,7 @@ #define ASH_SYSTEM_CAST_CAST_FEATURE_POD_CONTROLLER_H_ #include "ash/ash_export.h" -#include "ash/cast_config_controller.h" +#include "ash/public/cpp/cast_config_controller.h" #include "ash/system/unified/feature_pod_controller_base.h" #include "base/macros.h" @@ -17,7 +17,7 @@ // Controller of cast feature pod button. class ASH_EXPORT CastFeaturePodController : public FeaturePodControllerBase, - public CastConfigControllerObserver { + public CastConfigController::Observer { public: CastFeaturePodController(UnifiedSystemTrayController* tray_controller); ~CastFeaturePodController() override; @@ -28,7 +28,7 @@ SystemTrayItemUmaType GetUmaType() const override; // CastConfigControllerObserver: - void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; + void OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) override; private: void Update();
diff --git a/ash/system/cast/cast_notification_controller.cc b/ash/system/cast/cast_notification_controller.cc index 78c15e7..d35efc42 100644 --- a/ash/system/cast/cast_notification_controller.cc +++ b/ash/system/cast/cast_notification_controller.cc
@@ -22,31 +22,31 @@ namespace { bool ShouldShowNotification() { - CastConfigController* cast_config = Shell::Get()->cast_config(); - return cast_config->Connected() && cast_config->HasSinksAndRoutes() && + auto* cast_config = CastConfigController::Get(); + return cast_config && cast_config->HasSinksAndRoutes() && cast_config->HasActiveRoute(); } -base::string16 GetNotificationTitle(const mojom::CastSinkPtr& sink, - const mojom::CastRoutePtr& route) { - switch (route->content_source) { - case ash::mojom::ContentSource::UNKNOWN: +base::string16 GetNotificationTitle(const CastSink& sink, + const CastRoute& route) { + switch (route.content_source) { + case ContentSource::kUnknown: return l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_CAST_CAST_UNKNOWN); - case ash::mojom::ContentSource::TAB: - case ash::mojom::ContentSource::DESKTOP: + case ContentSource::kTab: + case ContentSource::kDesktop: return l10n_util::GetStringFUTF16( IDS_ASH_STATUS_TRAY_CAST_NOTIFICATION_TITLE, - base::UTF8ToUTF16(sink->name)); + base::UTF8ToUTF16(sink.name)); } } -base::string16 GetNotificationMessage(const mojom::CastRoutePtr& route) { - switch (route->content_source) { - case ash::mojom::ContentSource::UNKNOWN: +base::string16 GetNotificationMessage(const CastRoute& route) { + switch (route.content_source) { + case ContentSource::kUnknown: return base::string16(); - case ash::mojom::ContentSource::TAB: - return base::UTF8ToUTF16(route->title); - case ash::mojom::ContentSource::DESKTOP: + case ContentSource::kTab: + return base::UTF8ToUTF16(route.title); + case ContentSource::kDesktop: return l10n_util::GetStringUTF16( IDS_ASH_STATUS_TRAY_CAST_CAST_DESKTOP_NOTIFICATION_MESSAGE); } @@ -58,40 +58,41 @@ } // namespace CastNotificationController::CastNotificationController() { - Shell::Get()->cast_config()->AddObserver(this); - Shell::Get()->cast_config()->RequestDeviceRefresh(); + if (CastConfigController::Get()) { + CastConfigController::Get()->AddObserver(this); + CastConfigController::Get()->RequestDeviceRefresh(); + } } CastNotificationController::~CastNotificationController() { - Shell::Get()->cast_config()->RemoveObserver(this); + if (CastConfigController::Get()) + CastConfigController::Get()->RemoveObserver(this); } void CastNotificationController::OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) { - if (ShouldShowNotification()) - ShowNotification(std::move(devices)); - else - RemoveNotification(); -} + const std::vector<SinkAndRoute>& devices) { + if (!ShouldShowNotification()) { + message_center::MessageCenter::Get()->RemoveNotification( + kNotificationId, false /* by_user */); + return; + } -void CastNotificationController::ShowNotification( - std::vector<mojom::SinkAndRoutePtr> devices) { for (const auto& device : devices) { - const mojom::CastSinkPtr& sink = device->sink; - const mojom::CastRoutePtr& route = device->route; + const CastSink& sink = device.sink; + const CastRoute& route = device.route; // We only want to display casts that came from this machine, since on a // busy network many other people could be casting. - if (route->id.empty() || !route->is_local_source) + if (route.id.empty() || !route.is_local_source) continue; - displayed_route_ = route.Clone(); + displayed_route_id_ = route.id; message_center::RichNotificationData data; data.buttons.push_back(message_center::ButtonInfo( l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_CAST_STOP))); - std::unique_ptr<Notification> notification = ash::CreateSystemNotification( + std::unique_ptr<Notification> notification = CreateSystemNotification( message_center::NOTIFICATION_TYPE_SIMPLE, kNotificationId, GetNotificationTitle(sink, route), GetNotificationMessage(route), base::string16() /* display_source */, GURL(), @@ -110,13 +111,8 @@ } } -void CastNotificationController::RemoveNotification() { - message_center::MessageCenter::Get()->RemoveNotification(kNotificationId, - false /* by_user */); -} - void CastNotificationController::StopCasting() { - Shell::Get()->cast_config()->StopCasting(displayed_route_.Clone()); + CastConfigController::Get()->StopCasting(displayed_route_id_); Shell::Get()->metrics()->RecordUserMetricsAction( UMA_STATUS_AREA_CAST_STOP_CAST); }
diff --git a/ash/system/cast/cast_notification_controller.h b/ash/system/cast/cast_notification_controller.h index c8ccc110..3622c7d 100644 --- a/ash/system/cast/cast_notification_controller.h +++ b/ash/system/cast/cast_notification_controller.h
@@ -5,27 +5,27 @@ #ifndef ASH_SYSTEM_CAST_CAST_NOTIFICATION_CONTROLLER_H_ #define ASH_SYSTEM_CAST_CAST_NOTIFICATION_CONTROLLER_H_ -#include "ash/cast_config_controller.h" +#include "ash/public/cpp/cast_config_controller.h" + +#include "base/macros.h" +#include "base/memory/weak_ptr.h" namespace ash { -class CastNotificationController : public CastConfigControllerObserver { +class CastNotificationController : public CastConfigController::Observer { public: CastNotificationController(); ~CastNotificationController() override; // CastConfigControllerObserver: - void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; + void OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) override; private: - void ShowNotification(std::vector<mojom::SinkAndRoutePtr> devices); - void RemoveNotification(); - void StopCasting(); // The cast activity id that we are displaying. If the user stops a cast, we // send this value to the config delegate so that we stop the right cast. - mojom::CastRoutePtr displayed_route_; + std::string displayed_route_id_; base::WeakPtrFactory<CastNotificationController> weak_ptr_factory_{this};
diff --git a/ash/system/cast/tray_cast.cc b/ash/system/cast/tray_cast.cc index 4644ee4..07e3c7ec 100644 --- a/ash/system/cast/tray_cast.cc +++ b/ash/system/cast/tray_cast.cc
@@ -11,7 +11,6 @@ #include "ash/metrics/user_metrics_recorder.h" #include "ash/public/cpp/ash_view_ids.h" -#include "ash/public/interfaces/cast_config.mojom.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" @@ -33,32 +32,32 @@ // Returns the correct vector icon for |icon_type|. Some types may be different // for branded builds. -const gfx::VectorIcon& SinkIconTypeToIcon(mojom::SinkIconType icon_type) { +const gfx::VectorIcon& SinkIconTypeToIcon(SinkIconType icon_type) { switch (icon_type) { #if defined(GOOGLE_CHROME_BUILD) - case mojom::SinkIconType::CAST: + case SinkIconType::kCast: return kSystemMenuCastDeviceIcon; - case mojom::SinkIconType::EDUCATION: + case SinkIconType::kEducation: return kSystemMenuCastEducationIcon; - case mojom::SinkIconType::HANGOUT: + case SinkIconType::kHangout: return kSystemMenuCastHangoutIcon; - case mojom::SinkIconType::MEETING: + case SinkIconType::kMeeting: return kSystemMenuCastMeetingIcon; #else - case mojom::SinkIconType::CAST: - case mojom::SinkIconType::EDUCATION: + case SinkIconType::kCast: + case SinkIconType::kEducation: return kSystemMenuCastGenericIcon; - case mojom::SinkIconType::HANGOUT: - case mojom::SinkIconType::MEETING: + case SinkIconType::kHangout: + case SinkIconType::kMeeting: return kSystemMenuCastMessageIcon; #endif - case mojom::SinkIconType::GENERIC: + case SinkIconType::kGeneric: return kSystemMenuCastGenericIcon; - case mojom::SinkIconType::CAST_AUDIO_GROUP: + case SinkIconType::kCastAudioGroup: return kSystemMenuCastAudioGroupIcon; - case mojom::SinkIconType::CAST_AUDIO: + case SinkIconType::kCastAudio: return kSystemMenuCastAudioIcon; - case mojom::SinkIconType::WIRED_DISPLAY: + case SinkIconType::kWiredDisplay: return kSystemMenuCastGenericIcon; } @@ -70,41 +69,42 @@ namespace tray { -CastDetailedView::CastDetailedView( - DetailedViewDelegate* delegate, - const std::vector<mojom::SinkAndRoutePtr>& sinks_routes) +CastDetailedView::CastDetailedView(DetailedViewDelegate* delegate) : TrayDetailedView(delegate) { CreateItems(); - UpdateReceiverList(sinks_routes); + OnDevicesUpdated(CastConfigController::Get()->GetSinksAndRoutes()); + CastConfigController::Get()->AddObserver(this); } -CastDetailedView::~CastDetailedView() = default; +CastDetailedView::~CastDetailedView() { + CastConfigController::Get()->RemoveObserver(this); +} void CastDetailedView::CreateItems() { CreateScrollableList(); CreateTitleRow(IDS_ASH_STATUS_TRAY_CAST); } -void CastDetailedView::UpdateReceiverList( - const std::vector<mojom::SinkAndRoutePtr>& sinks_routes) { +void CastDetailedView::OnDevicesUpdated( + const std::vector<SinkAndRoute>& sinks_routes) { // Add/update existing. - for (const auto& it : sinks_routes) - sinks_and_routes_[it->sink->id] = it->Clone(); + for (const auto& device : sinks_routes) + sinks_and_routes_.insert(std::make_pair(device.sink.id, device)); // Remove non-existent sinks. Removing an element invalidates all existing // iterators. - auto i = sinks_and_routes_.begin(); - while (i != sinks_and_routes_.end()) { + auto iter = sinks_and_routes_.begin(); + while (iter != sinks_and_routes_.end()) { bool has_receiver = false; for (auto& receiver : sinks_routes) { - if (i->first == receiver->sink->id) + if (iter->first == receiver.sink.id) has_receiver = true; } if (has_receiver) - ++i; + ++iter; else - i = sinks_and_routes_.erase(i); + iter = sinks_and_routes_.erase(iter); } // Update UI. @@ -119,11 +119,10 @@ // Add a view for each receiver. for (auto& it : sinks_and_routes_) { - const ash::mojom::SinkAndRoutePtr& sink_route = it.second; - const base::string16 name = base::UTF8ToUTF16(sink_route->sink->name); + const CastSink& sink = it.second.sink; views::View* container = AddScrollListItem( - SinkIconTypeToIcon(sink_route->sink->sink_icon_type), name); - view_to_sink_map_[container] = sink_route->sink.Clone(); + SinkIconTypeToIcon(sink.sink_icon_type), base::UTF8ToUTF16(sink.name)); + view_to_sink_map_[container] = sink.id; } scroll_content()->SizeToPreferredSize(); @@ -134,7 +133,7 @@ // Find the receiver we are going to cast to. auto it = view_to_sink_map_.find(view); if (it != view_to_sink_map_.end()) { - Shell::Get()->cast_config()->CastToSink(it->second.Clone()); + CastConfigController::Get()->CastToSink(it->second); Shell::Get()->metrics()->RecordUserMetricsAction( UMA_STATUS_AREA_DETAILED_CAST_VIEW_LAUNCH_CAST); }
diff --git a/ash/system/cast/tray_cast.h b/ash/system/cast/tray_cast.h index 0803d80..0c1d717 100644 --- a/ash/system/cast/tray_cast.h +++ b/ash/system/cast/tray_cast.h
@@ -8,8 +8,7 @@ #include <string> #include <vector> -#include "ash/cast_config_controller.h" -#include "ash/shell_observer.h" +#include "ash/public/cpp/cast_config_controller.h" #include "ash/system/tray/tray_detailed_view.h" #include "base/macros.h" @@ -19,15 +18,14 @@ // This view displays a list of cast receivers that can be clicked on and casted // to. It is activated by clicking on the chevron inside of // |CastSelectDefaultView|. -class CastDetailedView : public TrayDetailedView { +class CastDetailedView : public TrayDetailedView, + public CastConfigController::Observer { public: - CastDetailedView(DetailedViewDelegate* delegate, - const std::vector<mojom::SinkAndRoutePtr>& sinks_and_routes); + explicit CastDetailedView(DetailedViewDelegate* delegate); ~CastDetailedView() override; - // Updates the list of available receivers. - void UpdateReceiverList( - const std::vector<mojom::SinkAndRoutePtr>& sinks_routes); + // CastConfigController::Observer: + void OnDevicesUpdated(const std::vector<SinkAndRoute>& devices) override; private: void CreateItems(); @@ -37,10 +35,10 @@ // TrayDetailedView: void HandleViewClicked(views::View* view) override; - // A mapping from the receiver id to the receiver/activity data. - std::map<std::string, ash::mojom::SinkAndRoutePtr> sinks_and_routes_; - // A mapping from the view pointer to the associated activity id. - std::map<views::View*, ash::mojom::CastSinkPtr> view_to_sink_map_; + // A mapping from the sink id to the receiver/activity data. + std::map<std::string, SinkAndRoute> sinks_and_routes_; + // A mapping from the view pointer to the associated activity sink id. + std::map<views::View*, std::string> view_to_sink_map_; DISALLOW_COPY_AND_ASSIGN(CastDetailedView); };
diff --git a/ash/system/cast/unified_cast_detailed_view_controller.cc b/ash/system/cast/unified_cast_detailed_view_controller.cc index 30737d7..4bbd35a 100644 --- a/ash/system/cast/unified_cast_detailed_view_controller.cc +++ b/ash/system/cast/unified_cast_detailed_view_controller.cc
@@ -20,15 +20,8 @@ views::View* UnifiedCastDetailedViewController::CreateView() { DCHECK(!view_); - view_ = new tray::CastDetailedView( - detailed_view_delegate_.get(), - Shell::Get()->cast_config()->sinks_and_routes()); + view_ = new tray::CastDetailedView(detailed_view_delegate_.get()); return view_; } -void UnifiedCastDetailedViewController::OnDevicesUpdated( - std::vector<mojom::SinkAndRoutePtr> devices) { - view_->UpdateReceiverList(std::move(devices)); -} - } // namespace ash
diff --git a/ash/system/cast/unified_cast_detailed_view_controller.h b/ash/system/cast/unified_cast_detailed_view_controller.h index f8fac22..9f3d10c 100644 --- a/ash/system/cast/unified_cast_detailed_view_controller.h +++ b/ash/system/cast/unified_cast_detailed_view_controller.h
@@ -5,8 +5,9 @@ #ifndef ASH_SYSTEM_CAST_UNIFIED_CAST_DETAILED_VIEW_CONTROLLER_H_ #define ASH_SYSTEM_CAST_UNIFIED_CAST_DETAILED_VIEW_CONTROLLER_H_ -#include "ash/cast_config_controller.h" +#include "ash/public/cpp/cast_config_controller.h" #include "ash/system/unified/detailed_view_controller.h" +#include "base/macros.h" namespace ash { namespace tray { @@ -17,8 +18,7 @@ class UnifiedSystemTrayController; // Controller of Cast detailed view in UnifiedSystemTray. -class UnifiedCastDetailedViewController : public DetailedViewController, - public CastConfigControllerObserver { +class UnifiedCastDetailedViewController : public DetailedViewController { public: explicit UnifiedCastDetailedViewController( UnifiedSystemTrayController* tray_controller); @@ -27,9 +27,6 @@ // DetailedViewControllerBase: views::View* CreateView() override; - // CastConfigControllerObserver: - void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; - private: const std::unique_ptr<DetailedViewDelegate> detailed_view_delegate_;
diff --git a/ash/system/message_center/unified_message_center_view.cc b/ash/system/message_center/unified_message_center_view.cc index 37e97d9..fd57f0be 100644 --- a/ash/system/message_center/unified_message_center_view.cc +++ b/ash/system/message_center/unified_message_center_view.cc
@@ -21,6 +21,7 @@ #include "ash/system/unified/unified_system_tray_view.h" #include "base/metrics/user_metrics.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/gfx/animation/linear_animation.h" #include "ui/gfx/canvas.h" #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/message_center_constants.h" @@ -40,6 +41,9 @@ namespace { +constexpr base::TimeDelta kHideStackingBarAnimationDuration = + base::TimeDelta::FromMilliseconds(330); + enum ClearAllButtonTag { kStackingBarClearAllButtonTag, kBottomClearAllButtonTag, @@ -205,7 +209,7 @@ stacked_notification_count_ = stacked_notification_count; if (features::IsNotificationStackingBarRedesignEnabled()) { - SetVisible(total_notification_count_ > 1); + UpdateVisibility(); auto tooltip = l10n_util::GetStringFUTF16Int( IDS_ASH_MESSAGE_CENTER_STACKING_BAR_CLEAR_ALL_BUTTON_TOOLTIP, @@ -229,6 +233,12 @@ return true; } +void StackingNotificationCounterView::SetAnimationState( + UnifiedMessageCenterAnimationState animation_state) { + animation_state_ = animation_state; + UpdateVisibility(); +} + void StackingNotificationCounterView::OnPaint(gfx::Canvas* canvas) { cc::PaintFlags flags; flags.setColor(message_center::kNotificationBackgroundColor); @@ -269,6 +279,20 @@ views::View::OnPaint(canvas); } +void StackingNotificationCounterView::UpdateVisibility() { + switch (animation_state_) { + case UnifiedMessageCenterAnimationState::IDLE: + SetVisible(total_notification_count_ > 1); + break; + case UnifiedMessageCenterAnimationState::HIDE_STACKING_BAR: + SetVisible(true); + break; + case UnifiedMessageCenterAnimationState::COLLAPSE: + SetVisible(false); + break; + } +} + UnifiedMessageCenterView::UnifiedMessageCenterView( UnifiedSystemTrayView* parent, UnifiedSystemTrayModel* model) @@ -278,7 +302,8 @@ scroll_bar_(new MessageCenterScrollBar(this)), scroller_(new views::ScrollView()), message_list_view_(new UnifiedMessageListView(this, model)), - last_scroll_position_from_bottom_(kClearAllButtonRowHeight) { + last_scroll_position_from_bottom_(kClearAllButtonRowHeight), + animation_(std::make_unique<gfx::LinearAnimation>(this)) { message_list_view_->Init(); AddChildView(stacking_counter_); @@ -309,6 +334,13 @@ UpdateVisibility(); } +void UnifiedMessageCenterView::OnNotificationSlidOut() { + if (stacking_counter_->visible() && + message_list_view_->GetTotalNotificationCount() <= 1) { + StartHideStackingBarAnimation(); + } +} + void UnifiedMessageCenterView::ListPreferredSizeChanged() { UpdateVisibility(); PreferredSizeChanged(); @@ -341,12 +373,20 @@ GetStackedNotificationCount()); if (stacking_counter_->visible()) { gfx::Rect counter_bounds(GetContentsBounds()); - counter_bounds.set_height(GetStackingNotificationCounterHeight()); + + int stacking_counter_height = GetStackingNotificationCounterHeight(); + int stacking_counter_offset = 0; + if (animation_state_ == + UnifiedMessageCenterAnimationState::HIDE_STACKING_BAR) + stacking_counter_offset = GetAnimationValue() * stacking_counter_height; + + counter_bounds.set_height(stacking_counter_height); + counter_bounds.set_y(counter_bounds.y() - stacking_counter_offset); stacking_counter_->SetBoundsRect(counter_bounds); gfx::Rect scroller_bounds(GetContentsBounds()); - scroller_bounds.Inset( - gfx::Insets(GetStackingNotificationCounterHeight(), 0, 0, 0)); + scroller_bounds.Inset(gfx::Insets( + stacking_counter_height - stacking_counter_offset, 0, 0, 0)); scroller_->SetBoundsRect(scroller_bounds); } else { scroller_->SetBoundsRect(GetContentsBounds()); @@ -360,8 +400,11 @@ gfx::Size preferred_size = scroller_->GetPreferredSize(); if (stacking_counter_->visible()) { - preferred_size.set_height(preferred_size.height() + - GetStackingNotificationCounterHeight()); + int bar_height = GetStackingNotificationCounterHeight(); + if (animation_state_ == + UnifiedMessageCenterAnimationState::HIDE_STACKING_BAR) + bar_height -= GetAnimationValue() * bar_height; + preferred_size.set_height(preferred_size.height() + bar_height); } // Hide Clear All button at the buttom from initial viewport. @@ -420,11 +463,53 @@ OnMessageCenterScrolled(); } +void UnifiedMessageCenterView::AnimationEnded(const gfx::Animation* animation) { + // This is also called from AnimationCanceled(). + animation_->SetCurrentValue(1.0); + PreferredSizeChanged(); + + switch (animation_state_) { + case UnifiedMessageCenterAnimationState::IDLE: + break; + case UnifiedMessageCenterAnimationState::HIDE_STACKING_BAR: + break; + case UnifiedMessageCenterAnimationState::COLLAPSE: + NOTIMPLEMENTED(); + break; + } + + animation_state_ = UnifiedMessageCenterAnimationState::IDLE; + stacking_counter_->SetAnimationState(animation_state_); +} + +void UnifiedMessageCenterView::AnimationProgressed( + const gfx::Animation* animation) { + PreferredSizeChanged(); +} + +void UnifiedMessageCenterView::AnimationCanceled( + const gfx::Animation* animation) { + AnimationEnded(animation); +} + void UnifiedMessageCenterView::SetNotificationRectBelowScroll( const gfx::Rect& rect_below_scroll) { parent_->SetNotificationRectBelowScroll(rect_below_scroll); } +void UnifiedMessageCenterView::StartHideStackingBarAnimation() { + animation_->End(); + animation_state_ = UnifiedMessageCenterAnimationState::HIDE_STACKING_BAR; + stacking_counter_->SetAnimationState(animation_state_); + animation_->SetDuration(kHideStackingBarAnimationDuration); + animation_->Start(); +} + +double UnifiedMessageCenterView::GetAnimationValue() const { + return gfx::Tween::CalculateValue(gfx::Tween::FAST_OUT_SLOW_IN, + animation_->GetCurrentValue()); +} + void UnifiedMessageCenterView::UpdateVisibility() { SessionControllerImpl* session_controller = Shell::Get()->session_controller();
diff --git a/ash/system/message_center/unified_message_center_view.h b/ash/system/message_center/unified_message_center_view.h index 6de6186..d34eb9eb 100644 --- a/ash/system/message_center/unified_message_center_view.h +++ b/ash/system/message_center/unified_message_center_view.h
@@ -8,12 +8,17 @@ #include "ash/ash_export.h" #include "ash/system/message_center/message_center_scroll_bar.h" #include "ash/system/message_center/unified_message_list_view.h" +#include "ui/gfx/animation/animation_delegate.h" #include "ui/views/background.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/label.h" #include "ui/views/focus/focus_manager.h" #include "ui/views/view.h" +namespace gfx { +class LinearAnimation; +} // namespace gfx + namespace views { class ScrollView; } // namespace views @@ -24,6 +29,25 @@ class UnifiedSystemTrayModel; class UnifiedSystemTrayView; +// Note: This enum represents the current animation state for +// UnifiedMessageCenterView. There is an equivalent animation state emum in +// the child UnifiedMessageListView. The animations for these two views can +// occur simultaneously or independently, so states for both views are tracked +// separately. +enum class UnifiedMessageCenterAnimationState { + // No animation is running. + IDLE, + + // Animating hiding the stacking bar. Runs when the user dismisses the + // second to last notification and during the clear all animation. + HIDE_STACKING_BAR, + + // Animating collapsing the entire message center. Runs after the user + // dismisses the last notification and during the clear all animation. + // TODO(tengs): This animation is not yet implemented. + COLLAPSE, +}; + // The header shown above the notification list displaying the number of hidden // notifications. There are currently two UI implementations toggled by the // NotificationStackingBarRedesign feature flag. @@ -36,14 +60,21 @@ // true if the count was updated from the previous SetCount() call. bool SetCount(int total_notification_count, int stacked_notification_count); + // Sets the current animation state. + void SetAnimationState(UnifiedMessageCenterAnimationState animation_state); + // views::View: void OnPaint(gfx::Canvas* canvas) override; private: friend class UnifiedMessageCenterViewTest; + void UpdateVisibility(); + int total_notification_count_ = 0; int stacked_notification_count_ = 0; + UnifiedMessageCenterAnimationState animation_state_ = + UnifiedMessageCenterAnimationState::IDLE; // These UI elements are only created and shown when the // NotificationStackingBarRedesign feature is enabled. @@ -58,7 +89,8 @@ : public views::View, public MessageCenterScrollBar::Observer, public views::ButtonListener, - public views::FocusChangeListener { + public views::FocusChangeListener, + public gfx::AnimationDelegate { public: UnifiedMessageCenterView(UnifiedSystemTrayView* parent, UnifiedSystemTrayModel* model); @@ -77,6 +109,10 @@ // Called from UnifiedMessageListView when the preferred size is changed. void ListPreferredSizeChanged(); + // Called from the UnifiedMessageListView after a notification is dismissed by + // the user and the slide animation is finished. + void OnNotificationSlidOut(); + // Configures MessageView to forward scroll events. Called from // UnifiedMessageListView. void ConfigureMessageView(message_center::MessageView* message_view); @@ -100,6 +136,11 @@ void OnWillChangeFocus(views::View* before, views::View* now) override; void OnDidChangeFocus(views::View* before, views::View* now) override; + // gfx::AnimationDelegate: + void AnimationEnded(const gfx::Animation* animation) override; + void AnimationProgressed(const gfx::Animation* animation) override; + void AnimationCanceled(const gfx::Animation* animation) override; + protected: // Virtual for testing. virtual void SetNotificationRectBelowScroll( @@ -108,6 +149,14 @@ private: friend class UnifiedMessageCenterViewTest; + // Starts the animation to hide the notification stacking bar. + void StartHideStackingBarAnimation(); + + // Returns the current animation value after tweening. + double GetAnimationValue() const; + + // Decides whether the message center should be shown or not based on + // current state. void UpdateVisibility(); // Scroll the notification list to the target position. @@ -132,6 +181,11 @@ // or collapsed). int available_height_ = 0; + // Tracks the current animation state. + UnifiedMessageCenterAnimationState animation_state_ = + UnifiedMessageCenterAnimationState::IDLE; + const std::unique_ptr<gfx::LinearAnimation> animation_; + views::FocusManager* focus_manager_ = nullptr; DISALLOW_COPY_AND_ASSIGN(UnifiedMessageCenterView);
diff --git a/ash/system/message_center/unified_message_center_view_unittest.cc b/ash/system/message_center/unified_message_center_view_unittest.cc index 0e085db3..183f14a 100644 --- a/ash/system/message_center/unified_message_center_view_unittest.cc +++ b/ash/system/message_center/unified_message_center_view_unittest.cc
@@ -118,17 +118,17 @@ size_changed_count_ = 0; } - void AnimateToValue(float value) { + void AnimateMessageListToValue(float value) { GetMessageListView()->animation_->SetCurrentValue(value); GetMessageListView()->AnimationProgressed( GetMessageListView()->animation_.get()); } - void AnimateToMiddle() { AnimateToValue(0.5); } + void AnimateMessageListToMiddle() { AnimateMessageListToValue(0.5); } - void AnimateToEnd() { GetMessageListView()->animation_->End(); } + void AnimateMessageListToEnd() { GetMessageListView()->animation_->End(); } - void AnimateUntilIdle() { + void AnimateMessageListUntilIdle() { while (GetMessageListView()->animation_->is_animating()) GetMessageListView()->animation_->End(); } @@ -144,6 +144,10 @@ return message_center_view()->message_list_view_; } + gfx::LinearAnimation* GetMessageCenterAnimation() { + return message_center_view()->animation_.get(); + } + views::ScrollView* GetScroller() { return message_center_view()->scroller_; } MessageCenterScrollBar* GetScrollBar() { @@ -224,10 +228,10 @@ GetScroller()->GetVisibleRect().bottom()); MessageCenter::Get()->RemoveNotification(id0, true /* by_user */); - AnimateToEnd(); - AnimateToMiddle(); + AnimateMessageListToEnd(); + AnimateMessageListToMiddle(); EXPECT_TRUE(message_center_view()->visible()); - AnimateToEnd(); + AnimateMessageListToEnd(); EXPECT_FALSE(message_center_view()->visible()); } @@ -251,8 +255,8 @@ // The first animation slides the notification out of the list, and the second // animation collapses the list. - AnimateToEnd(); - AnimateToValue(0); + AnimateMessageListToEnd(); + AnimateMessageListToValue(0); // The scroll position should not change after sliding the notification out // and instead should wait until the animation finishes. @@ -260,7 +264,7 @@ // The scroll position should be reduced by the height of the removed // notification after collapsing. - AnimateToEnd(); + AnimateMessageListToEnd(); EXPECT_EQ(scroll_position - GetMessageViewVisibleBounds(0).height(), GetScroller()->GetVisibleRect().y()); @@ -283,7 +287,7 @@ const int previous_list_height = GetMessageListView()->height(); MessageCenter::Get()->RemoveNotification(ids.back(), true /* by_user */); - AnimateUntilIdle(); + AnimateMessageListUntilIdle(); EXPECT_TRUE(message_center_view()->visible()); EXPECT_GT(previous_contents_height, GetScrollerContents()->height()); EXPECT_GT(previous_list_height, GetMessageListView()->height()); @@ -368,7 +372,7 @@ // When Clear All button is pressed, all notifications are removed and the // view becomes invisible. message_center_view()->ButtonPressed(nullptr, DummyEvent()); - AnimateUntilIdle(); + AnimateMessageListUntilIdle(); EXPECT_FALSE(message_center_view()->visible()); } @@ -521,7 +525,7 @@ EXPECT_TRUE(GetStackingCounter()->visible()); for (size_t i = 0; i < 5; ++i) { MessageCenter::Get()->RemoveNotification(ids[i], true /* by_user */); - AnimateUntilIdle(); + AnimateMessageListUntilIdle(); } EXPECT_FALSE(GetStackingCounter()->visible()); } @@ -615,7 +619,7 @@ EXPECT_TRUE(GetStackingCounter()->visible()); for (size_t i = 0; i < 4; ++i) { MessageCenter::Get()->RemoveNotification(ids[i], true /* by_user */); - AnimateUntilIdle(); + AnimateMessageListUntilIdle(); } EXPECT_TRUE(GetStackingCounter()->visible()); EXPECT_FALSE(GetStackingCounterLabel()->visible()); @@ -629,9 +633,25 @@ message_center_view()->height()); // Dismiss until there is only 1 notification left. The bar should be - // invisible. + // hidden after an animation. MessageCenter::Get()->RemoveNotification(ids[4], true /* by_user */); - AnimateUntilIdle(); + EXPECT_TRUE(GetStackingCounter()->visible()); + + // The HIDE_STACKING_BAR animation starts after the notification is slid out. + AnimateMessageListToEnd(); + auto* hide_animation = GetMessageCenterAnimation(); + EXPECT_TRUE(hide_animation->is_animating()); + EXPECT_TRUE(GetStackingCounter()->visible()); + + // Animate to middle. The bar should still be visible. + AnimateMessageListToMiddle(); + hide_animation->SetCurrentValue(0.5); + message_center_view()->AnimationProgressed(hide_animation); + EXPECT_TRUE(GetStackingCounter()->visible()); + + // Animate to end. The bar should now be hidden. + AnimateMessageListToEnd(); + hide_animation->End(); EXPECT_FALSE(GetStackingCounter()->visible()); } @@ -778,7 +798,7 @@ // Remove the notification and observe that the focus is cleared. MessageCenter::Get()->RemoveNotification(id1, true /* by_user */); - AnimateUntilIdle(); + AnimateMessageListUntilIdle(); EXPECT_FALSE(message_center_view()->GetFocusManager()->GetFocusedView()); widget->GetRootView()->RemoveChildView(message_center_view());
diff --git a/ash/system/message_center/unified_message_list_view.cc b/ash/system/message_center/unified_message_list_view.cc index 824a3b67..463ba3d 100644 --- a/ash/system/message_center/unified_message_list_view.cc +++ b/ash/system/message_center/unified_message_list_view.cc
@@ -395,6 +395,8 @@ UpdateClearAllAnimation(); } + UpdateBorders(); + if (state_ != State::IDLE) StartAnimation(); } @@ -457,9 +459,11 @@ } void UnifiedMessageListView::UpdateBorders() { - // When the stacking bar is shown, there should never be a top notification. - bool is_top = !features::IsNotificationStackingBarRedesignEnabled() || - children().size() == 1; + // The top notification is drawn with rounded corners when the stacking bar is + // not shown. + bool is_top = (!features::IsNotificationStackingBarRedesignEnabled() || + children().size() == 1) && + state_ != State::MOVE_DOWN; for (auto* child : children()) { AsMVC(child)->UpdateBorder(is_top, child == children().back()); is_top = false; @@ -532,8 +536,13 @@ case State::IDLE: break; case State::SLIDE_OUT: - FALLTHROUGH; + animation_->SetDuration(kClosingAnimationDuration); + animation_->Start(); + break; case State::MOVE_DOWN: + // |message_center_view_| can be null in tests. + if (message_center_view_) + message_center_view_->OnNotificationSlidOut(); animation_->SetDuration(kClosingAnimationDuration); animation_->Start(); break;
diff --git a/ash/system/tray/tray_bubble_view.cc b/ash/system/tray/tray_bubble_view.cc index 571d8e5bf..6b0e060 100644 --- a/ash/system/tray/tray_bubble_view.cc +++ b/ash/system/tray/tray_bubble_view.cc
@@ -24,6 +24,7 @@ #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/skia_util.h" +#include "ui/native_theme/native_theme_dark_aura.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/layout/box_layout.h" #include "ui/views/painter.h" @@ -232,6 +233,8 @@ set_margins(gfx::Insets()); SetPaintToLayer(); + SetNativeTheme(ui::NativeThemeDarkAura::instance()); + if (!ash::features::ShouldUseShaderRoundedCorner()) { bubble_content_mask_ = views::Painter::CreatePaintedLayer( views::Painter::CreateSolidRoundRectPainter(
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc index ba4ddc01..86872901 100644 --- a/ash/system/unified/unified_system_tray_bubble.cc +++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -20,6 +20,7 @@ #include "ash/wm/work_area_insets.h" #include "base/metrics/histogram_macros.h" #include "ui/aura/window.h" +#include "ui/native_theme/native_theme_dark_aura.h" #include "ui/wm/core/window_util.h" #include "ui/wm/public/activation_client.h"
diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java index 9001194..ae710cf 100644 --- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java +++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java
@@ -620,9 +620,9 @@ if (processType == LibraryProcessType.PROCESS_BROWSER && PLATFORM_REQUIRES_NATIVE_FALLBACK_EXTRACTION) { - // Perform the detection and deletion of obsolete native libraries on a background + // Perform the detection and deletion of obsolete native libraries on a // background thread. - PostTask.postTask(TaskTraits.BEST_EFFORT_MAY_BLOCK, () -> { + new Thread(() -> { final String suffix = BuildInfo.getInstance().extractedFileSuffix; final File[] files = getLibraryDir().listFiles(); if (files == null) return; @@ -645,7 +645,7 @@ } } } - }); + }).start(); } // From this point on, native code is ready to use and checkIsReady()
diff --git a/base/nix/xdg_util_unittest.cc b/base/nix/xdg_util_unittest.cc index ad81836..d6f4c5b 100644 --- a/base/nix/xdg_util_unittest.cc +++ b/base/nix/xdg_util_unittest.cc
@@ -9,6 +9,7 @@ #include "testing/gtest/include/gtest/gtest.h" using ::testing::_; +using ::testing::DoAll; using ::testing::Eq; using ::testing::Return; using ::testing::SetArgPointee;
diff --git a/base/task/common/scoped_defer_task_posting.cc b/base/task/common/scoped_defer_task_posting.cc index 9dc719c..00194bd3 100644 --- a/base/task/common/scoped_defer_task_posting.cc +++ b/base/task/common/scoped_defer_task_posting.cc
@@ -38,12 +38,13 @@ } // static -void ScopedDeferTaskPosting::Set(ScopedDeferTaskPosting* scope) { +bool ScopedDeferTaskPosting::Set(ScopedDeferTaskPosting* scope) { // We can post a task from within a ScheduleWork in some tests, so we can // get nested scopes. In this case ignore all except the top one. - if (!Get()) - return; - return GetScopedDeferTaskPostingTLS().Set(scope); + if (Get() && scope) + return false; + GetScopedDeferTaskPostingTLS().Set(scope); + return true; } // static @@ -52,10 +53,14 @@ } ScopedDeferTaskPosting::ScopedDeferTaskPosting() { - Set(this); + top_level_scope_ = Set(this); } ScopedDeferTaskPosting::~ScopedDeferTaskPosting() { + if (!top_level_scope_) { + DCHECK(deferred_tasks_.empty()); + return; + } Set(nullptr); for (DeferredTask& deferred_task : deferred_tasks_) { deferred_task.task_runner->PostTask(deferred_task.from_here,
diff --git a/base/task/common/scoped_defer_task_posting.h b/base/task/common/scoped_defer_task_posting.h index ebc12fc..51c8ab3 100644 --- a/base/task/common/scoped_defer_task_posting.h +++ b/base/task/common/scoped_defer_task_posting.h
@@ -34,7 +34,9 @@ private: static ScopedDeferTaskPosting* Get(); - static void Set(ScopedDeferTaskPosting* scope); + // Returns whether the |scope| was set as active, which happens only + // when the scope wasn't set before. + static bool Set(ScopedDeferTaskPosting* scope); void DeferTaskPosting(scoped_refptr<SequencedTaskRunner> task_runner, const Location& from_here, @@ -56,6 +58,11 @@ std::vector<DeferredTask> deferred_tasks_; + // Scopes can be nested (e.g. ScheduleWork inside PostTasks can post a task + // to another task runner), so we want to know whether the scope is top-level + // or not. + bool top_level_scope_ = false; + DISALLOW_COPY_AND_ASSIGN(ScopedDeferTaskPosting); };
diff --git a/base/task/sequence_manager/task_queue_impl.cc b/base/task/sequence_manager/task_queue_impl.cc index b72a9b0..50b182428 100644 --- a/base/task/sequence_manager/task_queue_impl.cc +++ b/base/task/sequence_manager/task_queue_impl.cc
@@ -50,6 +50,8 @@ TaskQueueImpl::GuardedTaskPoster::~GuardedTaskPoster() {} bool TaskQueueImpl::GuardedTaskPoster::PostTask(PostedTask task) { + // Do not process new PostTasks while we are handling a PostTask (tracing + // has to do this) as it can lead to a deadlock and defer it instead. ScopedDeferTaskPosting disallow_task_posting; auto token = operations_controller_.TryBeginOperation();
diff --git a/base/test/launcher/test_launcher_unittest.cc b/base/test/launcher/test_launcher_unittest.cc index 67e6b69..f0155d5 100644 --- a/base/test/launcher/test_launcher_unittest.cc +++ b/base/test/launcher/test_launcher_unittest.cc
@@ -74,8 +74,8 @@ } using ::testing::_; EXPECT_CALL(delegate, GetTests(_)) - .WillOnce( - DoAll(testing::SetArgPointee<0>(tests), testing::Return(true))); + .WillOnce(testing::DoAll(testing::SetArgPointee<0>(tests), + testing::Return(true))); EXPECT_CALL(delegate, WillRunTest(_, _)) .WillRepeatedly(testing::Return(true)); EXPECT_CALL(delegate, ShouldRunTest(_, _))
diff --git a/base/util/BUILD.gn b/base/util/BUILD.gn index c3b1942c..24a8de6 100644 --- a/base/util/BUILD.gn +++ b/base/util/BUILD.gn
@@ -7,6 +7,7 @@ test("base_util_unittests") { deps = [ "type-safety:tests", + "values:unittests", "//base/test:run_all_base_unittests", ] }
diff --git a/base/util/values/BUILD.gn b/base/util/values/BUILD.gn new file mode 100644 index 0000000..f3927a9 --- /dev/null +++ b/base/util/values/BUILD.gn
@@ -0,0 +1,26 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("values_util") { + sources = [ + "values_util.cc", + "values_util.h", + ] + + deps = [ + "//base:base", + ] +} + +source_set("unittests") { + testonly = true + sources = [ + "values_util_unittest.cc", + ] + + deps = [ + ":values_util", + "//testing/gtest", + ] +}
diff --git a/base/util/values/OWNERS b/base/util/values/OWNERS new file mode 100644 index 0000000..37b5467 --- /dev/null +++ b/base/util/values/OWNERS
@@ -0,0 +1,2 @@ +alancutter@chromium.org +jdoerrie@chromium.org
diff --git a/base/util/values/values_util.cc b/base/util/values/values_util.cc new file mode 100644 index 0000000..43b317b3 --- /dev/null +++ b/base/util/values/values_util.cc
@@ -0,0 +1,60 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/util/values/values_util.h" + +#include "base/strings/string_number_conversions.h" + +namespace util { + +base::Value Int64ToValue(int64_t integer) { + return base::Value(base::NumberToString(integer)); +} + +base::Optional<int64_t> ValueToInt64(const base::Value* value) { + return value ? ValueToInt64(*value) : base::nullopt; +} + +base::Optional<int64_t> ValueToInt64(const base::Value& value) { + if (!value.is_string()) + return base::nullopt; + + int64_t integer; + if (!base::StringToInt64(value.GetString(), &integer)) + return base::nullopt; + + return integer; +} + +base::Value TimeDeltaToValue(base::TimeDelta time_delta) { + return Int64ToValue(time_delta.InMicroseconds()); +} + +base::Optional<base::TimeDelta> ValueToTimeDelta(const base::Value* value) { + return value ? ValueToTimeDelta(*value) : base::nullopt; +} + +base::Optional<base::TimeDelta> ValueToTimeDelta(const base::Value& value) { + base::Optional<int64_t> integer = ValueToInt64(value); + if (!integer) + return base::nullopt; + return base::TimeDelta::FromMicroseconds(*integer); +} + +base::Value TimeToValue(base::Time time) { + return TimeDeltaToValue(time.ToDeltaSinceWindowsEpoch()); +} + +base::Optional<base::Time> ValueToTime(const base::Value* value) { + return value ? ValueToTime(*value) : base::nullopt; +} + +base::Optional<base::Time> ValueToTime(const base::Value& value) { + base::Optional<base::TimeDelta> time_delta = ValueToTimeDelta(value); + if (!time_delta) + return base::nullopt; + return base::Time::FromDeltaSinceWindowsEpoch(*time_delta); +} + +} // namespace util
diff --git a/base/util/values/values_util.h b/base/util/values/values_util.h new file mode 100644 index 0000000..de9fd1b9 --- /dev/null +++ b/base/util/values/values_util.h
@@ -0,0 +1,36 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_UTIL_VALUES_VALUES_UTIL_H_ +#define BASE_UTIL_VALUES_VALUES_UTIL_H_ + +#include "base/optional.h" +#include "base/time/time.h" +#include "base/values.h" + +namespace util { + +// Simple helper functions for converting int64_t, base::TimeDelta and +// base::Time to numeric string base::Values. +// Because base::TimeDelta and base::Time share the same internal representation +// as int64_t they are stored using the exact same numeric string format. + +// Stores the int64_t as a string. +base::Value Int64ToValue(int64_t integer); +base::Optional<int64_t> ValueToInt64(const base::Value* value); +base::Optional<int64_t> ValueToInt64(const base::Value& value); + +// Converts the TimeDelta to an int64_t of microseconds. +base::Value TimeDeltaToValue(base::TimeDelta time_delta); +base::Optional<base::TimeDelta> ValueToTimeDelta(const base::Value* value); +base::Optional<base::TimeDelta> ValueToTimeDelta(const base::Value& value); + +// Converts the Time to a TimeDelta from the Windows epoch. +base::Value TimeToValue(base::Time time); +base::Optional<base::Time> ValueToTime(const base::Value* value); +base::Optional<base::Time> ValueToTime(const base::Value& value); + +} // namespace util + +#endif // BASE_UTIL_VALUES_VALUES_UTIL_H_
diff --git a/base/util/values/values_util_unittest.cc b/base/util/values/values_util_unittest.cc new file mode 100644 index 0000000..ee543c18 --- /dev/null +++ b/base/util/values/values_util_unittest.cc
@@ -0,0 +1,71 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <limits> + +#include "base/util/values/values_util.h" + +#include "testing/gtest/include/gtest/gtest.h" + +namespace util { + +namespace { + +TEST(ValuesUtilTest, BasicLimits) { + struct { + int64_t input; + const char* expected; + } test_cases[] = { + {0, "0"}, + {-1234, "-1234"}, + {5678, "5678"}, + {std::numeric_limits<int64_t>::lowest(), "-9223372036854775808"}, + {std::numeric_limits<int64_t>::max(), "9223372036854775807"}, + }; + for (const auto& test_case : test_cases) { + int64_t input = test_case.input; + base::TimeDelta time_delta_input = base::TimeDelta::FromMicroseconds(input); + base::Time time_input = + base::Time::FromDeltaSinceWindowsEpoch(time_delta_input); + base::Value expected(test_case.expected); + SCOPED_TRACE(testing::Message() + << "input: " << input << ", expected: " << expected); + + EXPECT_EQ(Int64ToValue(input), expected); + EXPECT_EQ(*ValueToInt64(&expected), input); + + EXPECT_EQ(TimeDeltaToValue(time_delta_input), expected); + EXPECT_EQ(*ValueToTimeDelta(&expected), time_delta_input); + + EXPECT_EQ(TimeToValue(time_input), expected); + EXPECT_EQ(*ValueToTime(&expected), time_input); + } +} + +TEST(ValuesUtilTest, InvalidValues) { + std::unique_ptr<base::Value> test_cases[] = { + nullptr, + std::make_unique<base::Value>(), + std::make_unique<base::Value>(0), + std::make_unique<base::Value>(1234), + std::make_unique<base::Value>(true), + std::make_unique<base::Value>(base::Value::Type::BINARY), + std::make_unique<base::Value>(base::Value::Type::LIST), + std::make_unique<base::Value>(base::Value::Type::DICTIONARY), + std::make_unique<base::Value>(""), + std::make_unique<base::Value>("abcd"), + std::make_unique<base::Value>("1234.0"), + std::make_unique<base::Value>("1234a"), + std::make_unique<base::Value>("a1234"), + }; + for (const auto& test_case : test_cases) { + EXPECT_FALSE(ValueToInt64(test_case.get())); + EXPECT_FALSE(ValueToTimeDelta(test_case.get())); + EXPECT_FALSE(ValueToTime(test_case.get())); + } +} + +} // namespace + +} // namespace util
diff --git a/cc/input/snap_fling_controller_unittest.cc b/cc/input/snap_fling_controller_unittest.cc index 5deb03c..ebbf5b1 100644 --- a/cc/input/snap_fling_controller_unittest.cc +++ b/cc/input/snap_fling_controller_unittest.cc
@@ -77,9 +77,10 @@ EXPECT_CALL(mock_client_, GetSnapFlingInfo(testing::_, testing::_, testing::_)) - .WillOnce(DoAll(testing::SetArgPointee<1>(gfx::Vector2dF(0, 0)), - testing::SetArgPointee<2>(gfx::Vector2dF(0, 100)), - testing::Return(true))); + .WillOnce( + testing::DoAll(testing::SetArgPointee<1>(gfx::Vector2dF(0, 0)), + testing::SetArgPointee<2>(gfx::Vector2dF(0, 100)), + testing::Return(true))); EXPECT_CALL(mock_client_, RequestAnimationForSnapFling()).Times(1); EXPECT_CALL(mock_client_, ScrollByForSnapFling(testing::_)).Times(1); EXPECT_TRUE(controller_->HandleGestureScrollUpdate(gsu));
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 6802db5..5b6f640 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -10351,7 +10351,21 @@ scoped_refptr<viz::ContextProvider> display_context_provider_; }; -TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) { +enum RendererTestType { TEST_GL, TEST_SKIA }; + +class LayerTreeHostImplTestWithRenderer + : public LayerTreeHostImplTest, + public ::testing::WithParamInterface<RendererTestType> { + protected: + bool test_type() const { return GetParam(); } +}; + +// TODO(crbug.com/948128): Enable this test for SkiaRenderer. +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostImplTestWithRenderer, + ::testing::Values(TEST_GL)); + +TEST_P(LayerTreeHostImplTestWithRenderer, ShutdownReleasesContext) { scoped_refptr<viz::TestContextProvider> context_provider = viz::TestContextProvider::Create(); FrameSinkClient test_client(context_provider); @@ -10359,9 +10373,11 @@ constexpr bool synchronous_composite = true; constexpr bool disable_display_vsync = false; constexpr double refresh_rate = 60.0; + viz::RendererSettings renderer_settings = viz::RendererSettings(); + renderer_settings.use_skia_renderer = test_type() == TEST_SKIA; auto layer_tree_frame_sink = std::make_unique<viz::TestLayerTreeFrameSink>( context_provider, viz::TestContextProvider::CreateWorker(), nullptr, - viz::RendererSettings(), base::ThreadTaskRunnerHandle::Get().get(), + renderer_settings, base::ThreadTaskRunnerHandle::Get().get(), synchronous_composite, disable_display_vsync, refresh_rate); layer_tree_frame_sink->SetClient(&test_client);
diff --git a/cc/trees/layer_tree_host_unittest_copyrequest.cc b/cc/trees/layer_tree_host_unittest_copyrequest.cc index cad1e728..be57da1 100644 --- a/cc/trees/layer_tree_host_unittest_copyrequest.cc +++ b/cc/trees/layer_tree_host_unittest_copyrequest.cc
@@ -18,6 +18,7 @@ #include "components/viz/common/frame_sinks/copy_output_result.h" #include "components/viz/service/display/direct_renderer.h" #include "components/viz/test/fake_output_surface.h" +#include "components/viz/test/fake_skia_output_surface.h" #include "components/viz/test/test_gles2_interface.h" #include "components/viz/test/test_layer_tree_frame_sink.h" #include "gpu/GLES2/gl2extchromium.h" @@ -25,9 +26,32 @@ namespace cc { namespace { -// These tests only use direct rendering, as there is no output to copy for -// delegated renderers. -class LayerTreeHostCopyRequestTest : public LayerTreeTest {}; +enum CopyRequestTestType { TEST_GL, TEST_SKIA, TEST_SOFTWARE }; + +auto CombineWithCompositorModes(const std::vector<CopyRequestTestType>& types) { + return ::testing::Combine(::testing::ValuesIn(types), + ::testing::Values(CompositorMode::SINGLE_THREADED, + CompositorMode::THREADED)); +} + +class LayerTreeHostCopyRequestTest + : public LayerTreeTest, + public ::testing::WithParamInterface< + ::testing::tuple<CopyRequestTestType, CompositorMode>> { + public: + CopyRequestTestType test_type() const { + return ::testing::get<0>(GetParam()); + } + + CompositorMode compositor_mode() const { + return ::testing::get<1>(GetParam()); + } + + void InitializeFromTestType() { + use_skia_renderer_ = test_type() == TEST_SKIA; + use_software_renderer_ = test_type() == TEST_SOFTWARE; + } +}; class LayerTreeHostCopyRequestTestMultipleRequests : public LayerTreeHostCopyRequestTest { @@ -136,27 +160,6 @@ void AfterTest() override { EXPECT_EQ(4u, callbacks_.size()); } - std::unique_ptr<viz::OutputSurface> CreateDisplayOutputSurfaceOnThread( - scoped_refptr<viz::ContextProvider> compositor_context_provider) - override { - if (!use_gl_renderer_) { - return viz::FakeOutputSurface::CreateSoftware( - std::make_unique<viz::SoftwareOutputDevice>()); - } - - scoped_refptr<viz::TestContextProvider> display_context_provider = - viz::TestContextProvider::Create(); - viz::TestContextSupport* context_support = - display_context_provider->support(); - context_support->set_out_of_order_callbacks(out_of_order_callbacks_); - display_context_provider->BindToCurrentThread(); - - return viz::FakeOutputSurface::Create3d( - std::move(display_context_provider)); - } - - bool use_gl_renderer_; - bool out_of_order_callbacks_ = false; std::map<size_t, gfx::Size> callbacks_; FakeContentLayerClient client_; scoped_refptr<FakePictureLayer> root; @@ -164,72 +167,48 @@ scoped_refptr<FakePictureLayer> grand_child; }; -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - GLRenderer_RunSingleThread) { - use_gl_renderer_ = true; - RunTest(CompositorMode::SINGLE_THREADED); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestMultipleRequests, + CombineWithCompositorModes({TEST_GL, TEST_SKIA, + TEST_SOFTWARE})); + +TEST_P(LayerTreeHostCopyRequestTestMultipleRequests, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); } -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - GLRenderer_RunMultiThread) { - use_gl_renderer_ = true; - RunTest(CompositorMode::THREADED); -} +// These tests run with |out_of_order_callbacks_| set on the TestContextSupport, +// which causes callbacks for sync queries to be sent in reverse order. +class LayerTreeHostCopyRequestTestMultipleRequestsOutOfOrder + : public LayerTreeHostCopyRequestTestMultipleRequests { + std::unique_ptr<viz::SkiaOutputSurface> + CreateDisplaySkiaOutputSurfaceOnThread() override { + auto skia_output_surface = viz::FakeSkiaOutputSurface::Create3d(); + skia_output_surface->SetOutOfOrderCallbacks(true); + return skia_output_surface; + } -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - GLRenderer_RunSingleThread_OutOfOrderCallbacks) { - use_gl_renderer_ = true; - out_of_order_callbacks_ = true; - RunTest(CompositorMode::SINGLE_THREADED); -} + std::unique_ptr<viz::OutputSurface> CreateDisplayOutputSurfaceOnThread( + scoped_refptr<viz::ContextProvider> compositor_context_provider) + override { + // Since this test does not override CreateLayerTreeFrameSink, the + // |compositor_context_provider| will be a viz::TestContextProvider. + auto* context_support = static_cast<viz::TestContextSupport*>( + compositor_context_provider->ContextSupport()); + context_support->set_out_of_order_callbacks(true); -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - GLRenderer_RunMultiThread_OutOfOrderCallbacks) { - use_gl_renderer_ = true; - out_of_order_callbacks_ = true; - RunTest(CompositorMode::THREADED); -} + return viz::FakeOutputSurface::Create3d( + std::move(compositor_context_provider)); + } +}; -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SkiaRenderer_RunSingleThread) { - use_gl_renderer_ = true; - use_skia_renderer_ = true; - RunTest(CompositorMode::SINGLE_THREADED); -} +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestMultipleRequestsOutOfOrder, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SkiaRenderer_RunMultiThread) { - use_gl_renderer_ = true; - use_skia_renderer_ = true; - RunTest(CompositorMode::THREADED); -} - -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SkiaRenderer_RunSingleThread_OutOfOrderCallbacks) { - use_gl_renderer_ = true; - use_skia_renderer_ = true; - out_of_order_callbacks_ = true; - RunTest(CompositorMode::SINGLE_THREADED); -} - -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SkiaRenderer_RunMultiThread_OutOfOrderCallbacks) { - use_gl_renderer_ = true; - use_skia_renderer_ = true; - out_of_order_callbacks_ = true; - RunTest(CompositorMode::THREADED); -} - -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SoftwareRenderer_RunSingleThread) { - use_gl_renderer_ = false; - RunTest(CompositorMode::SINGLE_THREADED); -} - -TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, - SoftwareRenderer_RunMultiThread) { - use_gl_renderer_ = false; - RunTest(CompositorMode::THREADED); +TEST_P(LayerTreeHostCopyRequestTestMultipleRequestsOutOfOrder, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); } // TODO(crbug.com/564832): Remove this test when the workaround it tests is no @@ -285,7 +264,14 @@ scoped_refptr<FakePictureLayer> layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestCompletionCausesCommit); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestCompletionCausesCommit, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestCompletionCausesCommit, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestLayerDestroyed : public LayerTreeHostCopyRequestTest { @@ -383,7 +369,14 @@ scoped_refptr<FakePictureLayer> impl_destroyed_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestLayerDestroyed); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestLayerDestroyed, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestLayerDestroyed, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestInHiddenSubtree : public LayerTreeHostCopyRequestTest { @@ -483,7 +476,14 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestInHiddenSubtree); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestInHiddenSubtree, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestInHiddenSubtree, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest : public LayerTreeHostCopyRequestTest { @@ -596,8 +596,15 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F( - LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest); +INSTANTIATE_TEST_SUITE_P( + , + LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestClippedOut : public LayerTreeHostCopyRequestTest { @@ -647,7 +654,14 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestClippedOut); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestClippedOut, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestClippedOut, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestScaledLayer : public LayerTreeHostCopyRequestTest { @@ -705,7 +719,14 @@ scoped_refptr<FakePictureLayer> child_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestScaledLayer); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestScaledLayer, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestScaledLayer, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostTestAsyncTwoReadbacksWithoutDraw : public LayerTreeHostCopyRequestTest { @@ -791,7 +812,14 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestAsyncTwoReadbacksWithoutDraw); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostTestAsyncTwoReadbacksWithoutDraw, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostTestAsyncTwoReadbacksWithoutDraw, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestDeleteSharedImage : public LayerTreeHostCopyRequestTest { @@ -799,9 +827,12 @@ std::unique_ptr<viz::OutputSurface> CreateDisplayOutputSurfaceOnThread( scoped_refptr<viz::ContextProvider> compositor_context_provider) override { - display_context_provider_ = viz::TestContextProvider::Create(); - display_context_provider_->BindToCurrentThread(); - return viz::FakeOutputSurface::Create3d(display_context_provider_); + // Since this test does not override CreateLayerTreeFrameSink, the + // |compositor_context_provider| will be a viz::TestContextProvider. + display_context_provider_ = static_cast<viz::TestContextProvider*>( + compositor_context_provider.get()); + return viz::FakeOutputSurface::Create3d( + std::move(compositor_context_provider)); } void SetupTree() override { @@ -918,7 +949,15 @@ std::unique_ptr<viz::CopyOutputResult> result_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestDeleteSharedImage); +// TODO(crbug.com/948128): Enable this test for SkiaRenderer. +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestDeleteSharedImage, + CombineWithCompositorModes({TEST_GL})); + +TEST_P(LayerTreeHostCopyRequestTestDeleteSharedImage, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestCountSharedImages : public LayerTreeHostCopyRequestTest { @@ -1042,7 +1081,15 @@ std::unique_ptr<viz::SingleReleaseCallback> release_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestCreatesSharedImage); +// TODO(crbug.com/948128): Enable this test for SkiaRenderer. +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestCreatesSharedImage, + CombineWithCompositorModes({TEST_GL})); + +TEST_P(LayerTreeHostCopyRequestTestCreatesSharedImage, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestDestroyBeforeCopy : public LayerTreeHostCopyRequestTest { @@ -1123,7 +1170,14 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestDestroyBeforeCopy); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestDestroyBeforeCopy, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestDestroyBeforeCopy, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestShutdownBeforeCopy : public LayerTreeHostCopyRequestTest { @@ -1198,7 +1252,14 @@ scoped_refptr<FakePictureLayer> copy_layer_; }; -SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestShutdownBeforeCopy); +INSTANTIATE_TEST_SUITE_P(, + LayerTreeHostCopyRequestTestShutdownBeforeCopy, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestShutdownBeforeCopy, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} class LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest : public LayerTreeHostCopyRequestTest { @@ -1324,8 +1385,15 @@ bool draw_happened_; }; -SINGLE_AND_MULTI_THREAD_TEST_F( - LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest); +INSTANTIATE_TEST_SUITE_P( + , + LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest, + CombineWithCompositorModes({TEST_GL, TEST_SKIA})); + +TEST_P(LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest, Test) { + InitializeFromTestType(); + RunTest(compositor_mode()); +} } // namespace } // namespace cc
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index 5c1ff7a..bf3a03b 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -1646,6 +1646,7 @@ if (!is_android) { public_deps += [ "//chrome/browser/resources:component_extension_resources", + "//chrome/browser/resources:downloads_resources", "//chrome/browser/resources:local_ntp_resources", "//chrome/browser/resources:settings_resources", ] @@ -1776,7 +1777,7 @@ java_cpp_enum("credit_card_javagen") { sources = [ - "../components/autofill/core/browser/credit_card.h", + "../components/autofill/core/browser/data_model/credit_card.h", ] }
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni index 8bcc72b..81b9fb4 100644 --- a/chrome/android/chrome_junit_test_java_sources.gni +++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -143,6 +143,7 @@ "junit/src/org/chromium/chrome/browser/omnibox/geo/PlatformNetworksManagerTest.java", "junit/src/org/chromium/chrome/browser/omnibox/geo/VisibleNetworksTest.java", "junit/src/org/chromium/chrome/browser/omnibox/geo/VisibleNetworksTrackerTest.java", + "junit/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionTest.java", "junit/src/org/chromium/chrome/browser/page_info/PermissionParamsListBuilderUnitTest.java", "junit/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottleTest.java", "junit/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizationsUnitTest.java", @@ -167,6 +168,7 @@ "junit/src/org/chromium/chrome/browser/snackbar/SnackbarCollectionUnitTest.java", "junit/src/org/chromium/chrome/browser/suggestions/SuggestionsImageFetcherTest.java", "junit/src/org/chromium/chrome/browser/suggestions/TileGroupUnitTest.java", + "junit/src/org/chromium/chrome/browser/suggestions/TileGroupUnitTest.java", "junit/src/org/chromium/chrome/browser/survey/ChromeSurveyControllerTest.java", "junit/src/org/chromium/chrome/browser/tab/TabAttributesTest.java", "junit/src/org/chromium/chrome/browser/tabmodel/TabPersistentStoreUnitTest.java",
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoader.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoader.java index f7668894..583159f 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoader.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedImageLoader.java
@@ -143,9 +143,13 @@ private @DrawableRes int lookupDrawableIdentifier(String resourceName) { switch (resourceName) { case BundledAssets.OFFLINE_INDICATOR_BADGE: - return R.drawable.offline_pin_round; + return R.drawable.ic_offline_pin_24dp_on_light_bg; + case BundledAssets.OFFLINE_INDICATOR_BADGE_DARK_BG: + return R.drawable.ic_offline_pin_24dp_on_dark_bg; case BundledAssets.VIDEO_INDICATOR_BADGE: - return R.drawable.ic_play_circle_filled_grey; + return R.drawable.ic_play_circle_filled_24dp_on_light_bg; + case BundledAssets.VIDEO_INDICATOR_BADGE_DARK_BG: + return R.drawable.ic_play_circle_filled_24dp_on_dark_bg; } return 0;
diff --git a/chrome/android/java/res/drawable-hdpi/offline_pin_round.png b/chrome/android/java/res/drawable-hdpi/offline_pin_round.png deleted file mode 100644 index 61cab7c..0000000 --- a/chrome/android/java/res/drawable-hdpi/offline_pin_round.png +++ /dev/null Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/offline_pin_round.png b/chrome/android/java/res/drawable-mdpi/offline_pin_round.png deleted file mode 100644 index 6c4bd2b5..0000000 --- a/chrome/android/java/res/drawable-mdpi/offline_pin_round.png +++ /dev/null Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/offline_pin_round.png b/chrome/android/java/res/drawable-xhdpi/offline_pin_round.png deleted file mode 100644 index 2067c3e..0000000 --- a/chrome/android/java/res/drawable-xhdpi/offline_pin_round.png +++ /dev/null Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/offline_pin_round.png b/chrome/android/java/res/drawable-xxhdpi/offline_pin_round.png deleted file mode 100644 index a52e1bc..0000000 --- a/chrome/android/java/res/drawable-xxhdpi/offline_pin_round.png +++ /dev/null Binary files differ
diff --git a/chrome/android/java/res/drawable-xxxhdpi/offline_pin_round.png b/chrome/android/java/res/drawable-xxxhdpi/offline_pin_round.png deleted file mode 100644 index 3e1cdc4..0000000 --- a/chrome/android/java/res/drawable-xxxhdpi/offline_pin_round.png +++ /dev/null Binary files differ
diff --git a/chrome/android/java/res/drawable/data_reduction_big.xml b/chrome/android/java/res/drawable/data_reduction_big.xml index 2c5b4ed..4c12faf 100644 --- a/chrome/android/java/res/drawable/data_reduction_big.xml +++ b/chrome/android/java/res/drawable/data_reduction_big.xml
@@ -13,13 +13,13 @@ <path android:pathData="M31.7987,13.7962C32.597,15.3095 33.1187,17.0012 33.2803,18.8095C33.9387,26.1295 28.5137,32.6245 21.192,33.2795C13.872,33.9378 7.3787,28.5128 6.722,21.1912C6.0637,13.8712 11.4887,7.3762 18.8103,6.7212C21.547,6.4745 24.167,7.0812 26.412,8.3162L29.1687,6.0978C26.1303,4.0895 22.4203,3.0495 18.5103,3.4012C9.3487,4.2228 2.5787,12.3262 3.4003,21.4895C4.2237,30.6528 12.327,37.4228 21.4903,36.6012C30.6537,35.7778 37.4237,27.6745 36.6003,18.5112C36.3303,15.4945 35.2587,12.7445 33.6303,10.4312L31.7987,13.7962Z" android:strokeWidth="1" - android:fillColor="@color/light_icon_color" + android:fillColor="@color/default_icon_color_secondary" android:fillType="evenOdd" android:strokeColor="#00000000"/> <path android:pathData="M17.6515,22.3508C18.2765,22.9775 19.1248,23.3292 20.0098,23.3275C20.8948,23.3275 21.7432,22.9758 22.3682,22.3492L31.7982,8.1975L17.6515,17.6342C17.0248,18.2608 16.6732,19.1092 16.6732,19.9925C16.6732,20.8775 17.0265,21.7258 17.6515,22.3508" android:strokeWidth="1" - android:fillColor="@color/light_icon_color" + android:fillColor="@color/default_icon_color_secondary" android:fillType="evenOdd" android:strokeColor="#00000000"/> </vector>
diff --git a/chrome/android/java/res/drawable/ic_offline_pin_24dp.xml b/chrome/android/java/res/drawable/ic_offline_pin_24dp.xml new file mode 100644 index 0000000..1a830666 --- /dev/null +++ b/chrome/android/java/res/drawable/ic_offline_pin_24dp.xml
@@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2019 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:targetApi="21" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group> + <clip-path android:pathData="M0,0h24v24H0V0z M 0,0"/> + <path + android:pathData="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10,-4.5 10,-10S17.5 2 12 2zm5 16H7v-2h10v2zm-6.7,-4L7 10.7l1.4,-1.4 1.9 1.9 5.3,-5.3L17 7.3 10.3 14z" + android:fillColor="@color/default_icon_color_secondary"/> + </group> +</vector>
diff --git a/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_dark_bg.xml b/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_dark_bg.xml new file mode 100644 index 0000000..2337734a --- /dev/null +++ b/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_dark_bg.xml
@@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2019 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:targetApi="21" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group> + <clip-path android:pathData="M0,0h24v24H0V0z M 0,0"/> + <path + android:pathData="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10,-4.5 10,-10S17.5 2 12 2zm5 16H7v-2h10v2zm-6.7,-4L7 10.7l1.4,-1.4 1.9 1.9 5.3,-5.3L17 7.3 10.3 14z" + android:fillColor="@color/default_icon_color_secondary_light"/> + </group> +</vector>
diff --git a/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_light_bg.xml b/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_light_bg.xml new file mode 100644 index 0000000..f388441 --- /dev/null +++ b/chrome/android/java/res/drawable/ic_offline_pin_24dp_on_light_bg.xml
@@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright 2019 The Chromium Authors. All rights reserved. + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. --> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + tools:targetApi="21" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <group> + <clip-path android:pathData="M0,0h24v24H0V0z M 0,0"/> + <path + android:pathData="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10 10,-4.5 10,-10S17.5 2 12 2zm5 16H7v-2h10v2zm-6.7,-4L7 10.7l1.4,-1.4 1.9 1.9 5.3,-5.3L17 7.3 10.3 14z" + android:fillColor="@color/default_icon_color_secondary_dark"/> + </group> +</vector>
diff --git a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp.xml similarity index 92% rename from chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml rename to chrome/android/java/res/drawable/ic_play_circle_filled_24dp.xml index 9fd9ced..c8c7846 100644 --- a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml +++ b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp.xml
@@ -16,7 +16,7 @@ android:fillColor="@android:color/transparent" android:pathData="M 6,6 H 18 V 18 H 6 z" /> <path - android:fillColor="#757575" + android:fillColor="@color/default_icon_color_secondary" android:pathData="M 12,2 C 6.475,2 2,6.475 2,12 2,17.525 6.475,22 12,22 17.525,22 22,17.525 22,12 22,6.475 17.525,2 12,2 z M 9.9999998,16.5 v -9 L 16,12 9.9999998,16.5 z" /> </vector>
diff --git a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_dark_bg.xml similarity index 92% copy from chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml copy to chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_dark_bg.xml index 9fd9ced..aebbf6e 100644 --- a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml +++ b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_dark_bg.xml
@@ -16,7 +16,7 @@ android:fillColor="@android:color/transparent" android:pathData="M 6,6 H 18 V 18 H 6 z" /> <path - android:fillColor="#757575" + android:fillColor="@color/default_icon_color_secondary_light" android:pathData="M 12,2 C 6.475,2 2,6.475 2,12 2,17.525 6.475,22 12,22 17.525,22 22,17.525 22,12 22,6.475 17.525,2 12,2 z M 9.9999998,16.5 v -9 L 16,12 9.9999998,16.5 z" /> </vector>
diff --git a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_light_bg.xml similarity index 92% copy from chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml copy to chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_light_bg.xml index 9fd9ced..03fff3c5 100644 --- a/chrome/android/java/res/drawable/ic_play_circle_filled_grey.xml +++ b/chrome/android/java/res/drawable/ic_play_circle_filled_24dp_on_light_bg.xml
@@ -16,7 +16,7 @@ android:fillColor="@android:color/transparent" android:pathData="M 6,6 H 18 V 18 H 6 z" /> <path - android:fillColor="#757575" + android:fillColor="@color/default_icon_color_secondary_dark" android:pathData="M 12,2 C 6.475,2 2,6.475 2,12 2,17.525 6.475,22 12,22 17.525,22 22,17.525 22,12 22,6.475 17.525,2 12,2 z M 9.9999998,16.5 v -9 L 16,12 9.9999998,16.5 z" /> </vector>
diff --git a/chrome/android/java/res/layout/content_suggestions_card_modern_reversed.xml b/chrome/android/java/res/layout/content_suggestions_card_modern_reversed.xml index 095b5b1..aa4963de 100644 --- a/chrome/android/java/res/layout/content_suggestions_card_modern_reversed.xml +++ b/chrome/android/java/res/layout/content_suggestions_card_modern_reversed.xml
@@ -83,9 +83,9 @@ android:layout_width="@dimen/snippets_offline_icon_size" android:layout_height="@dimen/snippets_offline_icon_size" android:layout_marginStart="6dp" - android:src="@drawable/offline_pin_round" android:contentDescription="@string/accessibility_ntp_offline_badge" android:visibility="gone" + app:srcCompat="@drawable/ic_offline_pin_24dp" tools:tint="@color/default_icon_color" /> <ImageView @@ -95,8 +95,8 @@ android:layout_marginStart="6dp" android:contentDescription="@string/accessibility_suggestion_with_video_badge" android:visibility="gone" - app:srcCompat="@drawable/ic_play_circle_filled_grey" - tools:src="@drawable/ic_play_circle_filled_grey" /> + app:srcCompat="@drawable/ic_play_circle_filled_24dp" + tools:src="@drawable/ic_play_circle_filled_24dp" /> </LinearLayout> </LinearLayout>
diff --git a/chrome/android/java/res/layout/edit_url_suggestion_layout.xml b/chrome/android/java/res/layout/edit_url_suggestion_layout.xml index 2a16a58..bb5ea00 100644 --- a/chrome/android/java/res/layout/edit_url_suggestion_layout.xml +++ b/chrome/android/java/res/layout/edit_url_suggestion_layout.xml
@@ -22,18 +22,16 @@ android:layout_marginEnd="@dimen/omnibox_suggestion_refine_view_modern_end_padding"> <org.chromium.ui.widget.ChromeImageButton - android:id="@+id/url_copy_icon" - style="@style/OmniboxSuggestionIconButton" - app:srcCompat="@drawable/ic_content_copy_black" - android:contentDescription="@string/copy_link" - android:visibility="gone" /> - - <org.chromium.ui.widget.ChromeImageButton android:id="@+id/url_share_icon" style="@style/OmniboxSuggestionIconButton" app:srcCompat="@drawable/ic_share_white_24dp" - android:contentDescription="@string/menu_share_page" - android:visibility="gone" /> + android:contentDescription="@string/menu_share_page" /> + + <org.chromium.ui.widget.ChromeImageButton + android:id="@+id/url_copy_icon" + style="@style/OmniboxSuggestionIconButton" + app:srcCompat="@drawable/ic_content_copy_black" + android:contentDescription="@string/copy_link" /> <org.chromium.ui.widget.ChromeImageButton android:id="@+id/url_edit_icon"
diff --git a/chrome/android/java/res/layout/history_item_view.xml b/chrome/android/java/res/layout/history_item_view.xml index 6a7fe21d..0a28ae86 100644 --- a/chrome/android/java/res/layout/history_item_view.xml +++ b/chrome/android/java/res/layout/history_item_view.xml
@@ -20,7 +20,7 @@ style="@style/ListItemEndIconSmall" android:contentDescription="@string/remove" android:src="@drawable/btn_delete_24dp" - app:tint="@color/light_icon_color" /> + app:tint="@color/default_icon_color_secondary" /> </LinearLayout> </org.chromium.chrome.browser.history.HistoryItemView> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/selectable_list_layout.xml b/chrome/android/java/res/layout/selectable_list_layout.xml index c9307ff8..50b62c9 100644 --- a/chrome/android/java/res/layout/selectable_list_layout.xml +++ b/chrome/android/java/res/layout/selectable_list_layout.xml
@@ -47,7 +47,7 @@ android:drawablePadding="3dp" android:visibility="gone" android:textAppearance="@style/TextAppearance.BlackDisabledText1" - app:chromeDrawableTint="@color/light_icon_color"/> + app:chromeDrawableTint="@color/default_icon_color_secondary"/> </FrameLayout> <org.chromium.chrome.browser.widget.LoadingView
diff --git a/chrome/android/java/res_download/layout/download_manager_prefetch_item.xml b/chrome/android/java/res_download/layout/download_manager_prefetch_item.xml index ffcfc7c..102c447 100644 --- a/chrome/android/java/res_download/layout/download_manager_prefetch_item.xml +++ b/chrome/android/java/res_download/layout/download_manager_prefetch_item.xml
@@ -92,8 +92,8 @@ android:layout_width="12dp" android:layout_height="12dp" android:layout_marginStart="4dp" - android:src="@drawable/offline_pin_round" android:scaleType="centerInside" + app:srcCompat="@drawable/ic_offline_pin_24dp" android:tint="@color/default_icon_color" app:layout_column="2" app:layout_row="2"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java index 7f5cfd5..9e4420c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
@@ -378,23 +378,40 @@ } /** - * @param activity An activity for access to different features. + * Use {@link #attachTouchlessMenuCoordinator(ChromeActivity, TouchlessUiController)} instead. */ + @Deprecated public void attachTouchlessMenuCoordinator(ChromeActivity activity) {} /** * @param activity An activity for access to different features. - * @return A new {@link TouchlessUiController} instance. + * @param uiController A TouchlessUiController to use. */ + public void attachTouchlessMenuCoordinator( + ChromeActivity activity, TouchlessUiController uiController) { + attachTouchlessMenuCoordinator(activity); + } + + /** + * Deprecated, use {@link #createTouchlessUiController(Activity)}. + */ + @Deprecated public TouchlessUiController createTouchlessUiController(ChromeActivity activity) { return null; } /** - * Get the UI controller from the activity if it exists. - * @param activity The activity to get the UI controller from. - * @return The UI controller or null. + * @param activity An activity for access to different features. + * @return A new {@link TouchlessUiController} instance. */ + public TouchlessUiController createTouchlessUiController(Activity activity) { + return createTouchlessUiController((ChromeActivity) activity); + } + + /** + * Use {@link #attachTouchlessMenuCoordinator(ChromeActivity, TouchlessUiController)}. + */ + @Deprecated public TouchlessUiController getTouchlessUiControllerForActivity(ChromeActivity activity) { return null; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java index 1d6a50f..a2644262 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -2564,6 +2564,8 @@ * @return Whether this Activity supports the App Menu. */ public boolean supportsAppMenu() { + if (FeatureUtilities.isNoTouchModeEnabled()) return false; + // Derived classes that disable the toolbar should also have the Menu disabled without // having to explicitly disable the Menu as well. return getToolbarLayoutId() != NO_TOOLBAR_LAYOUT;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java index ef5bf55..f25947d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java
@@ -103,7 +103,7 @@ int closeButtonColor = useIncognitoColors ? Color.WHITE - : ApiCompatibilityUtils.getColor(res, R.color.light_icon_color); + : ApiCompatibilityUtils.getColor(res, R.color.default_icon_color_secondary); float closeButtonSizePx = res.getDimensionPixelSize(R.dimen.tab_switcher_close_button_size);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java index c7a7626a..f282aacd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
@@ -14,6 +14,7 @@ import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.view.ViewCompat; +import android.support.v7.content.res.AppCompatResources; import android.util.AttributeSet; import android.view.View; import android.view.ViewStub; @@ -24,7 +25,7 @@ import org.chromium.base.ApiCompatibilityUtils; import org.chromium.chrome.R; import org.chromium.chrome.browser.util.AccessibilityUtil; -import org.chromium.chrome.browser.widget.TintedDrawable; +import org.chromium.ui.UiUtils; /** * StatusView is a location bar's view displaying status (icons and/or text). @@ -71,10 +72,9 @@ boolean wantIconHidden = false; if (mIconRes != 0 && mIconTintRes != 0) { - targetIcon = - TintedDrawable.constructTintedDrawable(getContext(), mIconRes, mIconTintRes); + targetIcon = UiUtils.getTintedDrawable(getContext(), mIconRes, mIconTintRes); } else if (mIconRes != 0) { - targetIcon = ApiCompatibilityUtils.getDrawable(getContext().getResources(), mIconRes); + targetIcon = AppCompatResources.getDrawable(getContext(), mIconRes); } else { // Do not specify any icon here and do not replace existing icon, either. // TransitionDrawable uses different timing mechanism than Animations, and that may,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java index e4c7571..ca272a60 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor.java
@@ -16,7 +16,6 @@ import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; -import org.chromium.chrome.browser.ChromeFeatureList; import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType; import org.chromium.chrome.browser.omnibox.UrlBar; import org.chromium.chrome.browser.omnibox.UrlBar.OmniboxAction; @@ -83,15 +82,6 @@ private static final CachedMetrics.ActionEvent ACTION_EDIT_URL_SUGGESTION_SHARE = new CachedMetrics.ActionEvent("Omnibox.EditUrlSuggestion.Share"); - /** The name of the parameter for getting the experiment variation. */ - private static final String FIELD_TRIAL_PARAM_NAME = "variation"; - - /** The name of the experiment variation that shows the copy icon. */ - private static final String COPY_ICON_VARIATION_NAME = "copy_icon"; - - /** The name of the experiment variation that shows both the copy and share icon. */ - private static final String COPY_SHARE_ICON_VARIATION_NAME = "copy_share_icon"; - /** The delegate for accessing the location bar for observation and modification. */ private final LocationBarDelegate mLocationBarDelegate; @@ -193,19 +183,6 @@ @Override public void populateModel(OmniboxSuggestion suggestion, PropertyModel model, int position) { model.set(EditUrlSuggestionProperties.TEXT_CLICK_LISTENER, this); - - // Check which variation of the experiment is being run. - String variation = getSearchReadyOmniboxVariation(); - if (TextUtils.equals(COPY_ICON_VARIATION_NAME, variation)) { - model.set(EditUrlSuggestionProperties.COPY_ICON_VISIBLE, true); - model.set(EditUrlSuggestionProperties.SHARE_ICON_VISIBLE, false); - } else if (TextUtils.equals(COPY_SHARE_ICON_VARIATION_NAME, variation)) { - model.set(EditUrlSuggestionProperties.COPY_ICON_VISIBLE, true); - model.set(EditUrlSuggestionProperties.SHARE_ICON_VISIBLE, true); - } else { - model.set(EditUrlSuggestionProperties.COPY_ICON_VISIBLE, false); - model.set(EditUrlSuggestionProperties.SHARE_ICON_VISIBLE, true); - } model.set(EditUrlSuggestionProperties.BUTTON_CLICK_LISTENER, this); if (mOriginalTitle == null) mOriginalTitle = mTabProvider.get().getTitle(); @@ -231,14 +208,6 @@ mSelectionHandler = null; } - /** - * @return The experiment variation for the Search Ready Omnibox. - */ - private static String getSearchReadyOmniboxVariation() { - return ChromeFeatureList.getFieldTrialParamByFeature( - ChromeFeatureList.SEARCH_READY_OMNIBOX, FIELD_TRIAL_PARAM_NAME); - } - @Override public void onUrlFocusChange(boolean hasFocus) { if (hasFocus) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProperties.java index 337d3952..b4cfc6b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProperties.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProperties.java
@@ -9,19 +9,10 @@ import org.chromium.chrome.browser.omnibox.suggestions.SuggestionCommonProperties; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; -import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey; import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; /** The properties for the "edit URL" suggestion in the omnibox suggestions. */ class EditUrlSuggestionProperties { - /** A key determining the visibility of the copy icon in the suggestion view. */ - public static final WritableBooleanPropertyKey COPY_ICON_VISIBLE = - new WritableBooleanPropertyKey(); - - /** A key determining the visibility of the share icon in the suggestion view. */ - public static final WritableBooleanPropertyKey SHARE_ICON_VISIBLE = - new WritableBooleanPropertyKey(); - /** The key for the title displayed by the suggestion item. */ public static final WritableObjectPropertyKey<String> TITLE_TEXT = new WritableObjectPropertyKey<>(); @@ -38,8 +29,8 @@ public static final WritableObjectPropertyKey<View.OnClickListener> TEXT_CLICK_LISTENER = new WritableObjectPropertyKey<>(); - private static final PropertyKey[] ALL_UNIQUE_KEYS = new PropertyKey[] {COPY_ICON_VISIBLE, - SHARE_ICON_VISIBLE, TITLE_TEXT, URL_TEXT, BUTTON_CLICK_LISTENER, TEXT_CLICK_LISTENER}; + private static final PropertyKey[] ALL_UNIQUE_KEYS = + new PropertyKey[] {TITLE_TEXT, URL_TEXT, BUTTON_CLICK_LISTENER, TEXT_CLICK_LISTENER}; public static final PropertyKey[] ALL_KEYS = PropertyModel.concatKeys(ALL_UNIQUE_KEYS, SuggestionCommonProperties.ALL_KEYS);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionViewBinder.java index 08c56df5..04faee3 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionViewBinder.java
@@ -4,7 +4,6 @@ package org.chromium.chrome.browser.omnibox.suggestions.editurl; -import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -15,17 +14,7 @@ /** A mechanism for binding the {@link EditUrlSuggestionProperties} to its view. */ public class EditUrlSuggestionViewBinder { public static void bind(PropertyModel model, ViewGroup view, PropertyKey propertyKey) { - if (EditUrlSuggestionProperties.COPY_ICON_VISIBLE == propertyKey) { - view.findViewById(R.id.url_copy_icon) - .setVisibility(model.get(EditUrlSuggestionProperties.COPY_ICON_VISIBLE) - ? View.VISIBLE - : View.GONE); - } else if (EditUrlSuggestionProperties.SHARE_ICON_VISIBLE == propertyKey) { - view.findViewById(R.id.url_share_icon) - .setVisibility(model.get(EditUrlSuggestionProperties.SHARE_ICON_VISIBLE) - ? View.VISIBLE - : View.GONE); - } else if (EditUrlSuggestionProperties.TITLE_TEXT == propertyKey) { + if (EditUrlSuggestionProperties.TITLE_TEXT == propertyKey) { TextView titleView = view.findViewById(R.id.title_text_view); titleView.setText(model.get(EditUrlSuggestionProperties.TITLE_TEXT)); } else if (EditUrlSuggestionProperties.URL_TEXT == propertyKey) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java index 7d7d526..a135630 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
@@ -352,7 +352,7 @@ if (isPreview) { return R.drawable.preview_pin_round; } else if (isOfflinePage) { - return R.drawable.offline_pin_round; + return R.drawable.ic_offline_pin_24dp; } switch (securityLevel) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java index 21eff773..5392a8d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
@@ -116,6 +116,12 @@ callback.call(fingerprintManager != null && fingerprintManager.hasEnrolledFingerprints()); } + @Override + public void cancel() { + onError(AuthenticatorStatus.NOT_IMPLEMENTED); + return; + } + /** * Callbacks for receiving responses from the internal handlers. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/accessibility/AccessibilityTabModelListItem.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/accessibility/AccessibilityTabModelListItem.java index 2210fdc..9139e1f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/accessibility/AccessibilityTabModelListItem.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/accessibility/AccessibilityTabModelListItem.java
@@ -218,7 +218,7 @@ context.getResources().getDimensionPixelOffset(R.dimen.accessibility_tab_height); mDarkIconColor = ColorUtils.getIconTint(context, false); mDefaultCloseIconColor = - AppCompatResources.getColorStateList(context, R.color.light_icon_color); + AppCompatResources.getColorStateList(context, R.color.default_icon_color_secondary); mIncognitoCloseIconColor = AppCompatResources.getColorStateList(context, R.color.white_alpha_70); mDefaultLevel = getResources().getInteger(R.integer.list_item_level_default);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java index cd81e11..3b1f9ab 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextmenu/ContextMenuTest.java
@@ -116,6 +116,7 @@ @MediumTest @Feature({"Browser"}) @RetryOnFailure + @DisabledTest(message = "https://crbug.com/959265") public void testCopyImageLinkCopiesLinkURL() throws Throwable { Tab tab = mDownloadTestRule.getActivity().getActivityTab(); ContextMenuUtils.selectContextMenuItem(InstrumentationRegistry.getInstrumentation(), @@ -403,6 +404,7 @@ @SmallTest @Feature({"Browser", "ContextMenu"}) @RetryOnFailure + @DisabledTest(message = "https://crbug.com/959265") public void testContextMenuRetrievesImageLinkOptions() throws TimeoutException, InterruptedException { Tab tab = mDownloadTestRule.getActivity().getActivityTab();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java index 1cd1b9e..0bcae52 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/TrustedCdnPublisherUrlTest.java
@@ -370,7 +370,7 @@ String testUrl = mWebServer.getResponseUrl("/test.html"); mCustomTabActivityTestRule.loadUrl(testUrl); verifyUrl(UrlFormatter.formatUrlForSecurityDisplayOmitScheme(testUrl)); - verifySecurityIcon(R.drawable.offline_pin_round); + verifySecurityIcon(R.drawable.ic_offline_pin_24dp); } private void runTrustedCdnPublisherUrlTest(@Nullable String publisherUrl, String clientPackage,
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java index 3ac3d49..be25a13 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/LocationBarLayoutTest.java
@@ -25,7 +25,6 @@ import org.chromium.chrome.browser.toolbar.LocationBarModel; import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; -import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.content_public.browser.test.util.TestThreadUtils; @@ -207,7 +206,6 @@ @Test @SmallTest - @DisableFeatures(ChromeFeatureList.SEARCH_READY_OMNIBOX) public void testEditingTextShownOnFocus() { final UrlBar urlBar = getUrlBar(); final LocationBarLayout locationBar = getLocationBar();
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionTest.java new file mode 100644 index 0000000..92e14b0 --- /dev/null +++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionTest.java
@@ -0,0 +1,146 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.omnibox.suggestions.editurl; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.support.test.filters.SmallTest; +import android.view.View; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.ActivityTabProvider; +import org.chromium.chrome.browser.omnibox.OmniboxSuggestionType; +import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestion; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.ui.modelutil.PropertyModel; + +/** + * Unit tests for the "edit url" omnibox suggestion. + */ +@RunWith(BaseRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public final class EditUrlSuggestionTest { + private static final String TEST_URL = "http://www.example.com"; + private static final String TEST_TITLE = "Test Page"; + + private EditUrlSuggestionProcessor mProcessor; + private PropertyModel mModel; + + @Mock + private ActivityTabProvider mTabProvider; + + @Mock + private Tab mTab; + + @Mock + private OmniboxSuggestion mWhatYouTypedSuggestion; + + @Mock + private OmniboxSuggestion mOtherSuggestion; + + @Mock + private EditUrlSuggestionProcessor.LocationBarDelegate mLocationBarDelegate; + + @Mock + private EditUrlSuggestionProcessor.SuggestionSelectionHandler mSelectionHandler; + + @Mock + private View mEditButton; + + @Mock + private View mSuggestionView; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + when(mTab.getUrl()).thenReturn(TEST_URL); + when(mTab.getTitle()).thenReturn(TEST_TITLE); + when(mTab.isNativePage()).thenReturn(false); + when(mTab.isIncognito()).thenReturn(false); + + when(mTabProvider.get()).thenReturn(mTab); + + when(mWhatYouTypedSuggestion.getType()) + .thenReturn(OmniboxSuggestionType.URL_WHAT_YOU_TYPED); + when(mWhatYouTypedSuggestion.getUrl()).thenReturn(TEST_URL); + + when(mOtherSuggestion.getType()).thenReturn(OmniboxSuggestionType.SEARCH_HISTORY); + + mModel = new PropertyModel.Builder(EditUrlSuggestionProperties.ALL_KEYS).build(); + + mProcessor = new EditUrlSuggestionProcessor(mLocationBarDelegate, mSelectionHandler); + mProcessor.setActivityTabProvider(mTabProvider); + + when(mEditButton.getId()).thenReturn(R.id.url_edit_icon); + } + + /** Test that the suggestion is triggered. */ + @Test + @SmallTest + public void testSuggestionTriggered() throws Exception { + mProcessor.onUrlFocusChange(true); + + Assert.assertTrue("The processor should handle the \"what you typed\" suggestion.", + mProcessor.doesProcessSuggestion(mWhatYouTypedSuggestion)); + + mProcessor.populateModel(mWhatYouTypedSuggestion, mModel, 0); + + Assert.assertEquals("The model should have the title set.", TEST_TITLE, + mModel.get(EditUrlSuggestionProperties.TITLE_TEXT)); + + Assert.assertEquals("The model should have the URL set to the tab's URL", TEST_URL, + mModel.get(EditUrlSuggestionProperties.URL_TEXT)); + } + + /** Test that the suggestion is not triggered if it is not the first suggestion. */ + @Test + @SmallTest + public void testWhatYouTypedSecondSuggestion() throws Exception { + mProcessor.onUrlFocusChange(true); + + Assert.assertFalse("The processor should not handle the suggestion.", + mProcessor.doesProcessSuggestion(mOtherSuggestion)); + + Assert.assertFalse("The processor should not handle the \"what you typed\" suggestion.", + mProcessor.doesProcessSuggestion(mWhatYouTypedSuggestion)); + } + + /** Test the edit button is pressed, the correct method in the URL bar delegate is triggered. */ + @Test + @SmallTest + public void testEditButtonPress() throws Exception { + mProcessor.onUrlFocusChange(true); + mProcessor.doesProcessSuggestion(mWhatYouTypedSuggestion); + mProcessor.populateModel(mWhatYouTypedSuggestion, mModel, 0); + + mModel.get(EditUrlSuggestionProperties.BUTTON_CLICK_LISTENER).onClick(mEditButton); + + verify(mLocationBarDelegate).setOmniboxEditingText(TEST_URL); + } + + /** Test that when suggestion is tapped, it still navigates to the correct location. */ + @Test + @SmallTest + public void testPressSuggestion() throws Exception { + mProcessor.onUrlFocusChange(true); + mProcessor.doesProcessSuggestion(mWhatYouTypedSuggestion); + mProcessor.populateModel(mWhatYouTypedSuggestion, mModel, 0); + + mModel.get(EditUrlSuggestionProperties.BUTTON_CLICK_LISTENER).onClick(mSuggestionView); + + verify(mSelectionHandler).onEditUrlSuggestionSelected(mWhatYouTypedSuggestion); + } +}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java index d51da68b..bf4be1a 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java
@@ -73,11 +73,11 @@ public void testGetSecurityIconResource() { for (int securityLevel : SECURITY_LEVELS) { assertEquals("Wrong phone resource for security level " + securityLevel, - R.drawable.offline_pin_round, + R.drawable.ic_offline_pin_24dp, LocationBarModel.getSecurityIconResource( securityLevel, IS_SMALL_DEVICE, IS_OFFLINE_PAGE, !IS_PREVIEW)); assertEquals("Wrong tablet resource for security level " + securityLevel, - R.drawable.offline_pin_round, + R.drawable.ic_offline_pin_24dp, LocationBarModel.getSecurityIconResource( securityLevel, !IS_SMALL_DEVICE, IS_OFFLINE_PAGE, !IS_PREVIEW)); assertEquals("Wrong phone resource for security level " + securityLevel,
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/NoTouchActivity.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/NoTouchActivity.java index f86efdf6..5c7f367 100644 --- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/NoTouchActivity.java +++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/NoTouchActivity.java
@@ -146,7 +146,7 @@ getFullscreenManager().setTab(getActivityTab()); mUiController = AppHooks.get().createTouchlessUiController(this); - AppHooks.get().attachTouchlessMenuCoordinator(this); + AppHooks.get().attachTouchlessMenuCoordinator(this, mUiController); super.finishNativeInitialization(); } @@ -239,7 +239,8 @@ @Override public ModalDialogManager createModalDialogManager() { - return new ModalDialogManager(new TouchlessDialogPresenter(this), ModalDialogType.APP); + return new ModalDialogManager( + new TouchlessDialogPresenter(this, mUiController), ModalDialogType.APP); } @Override
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/TouchlessExploreSitesCategoryCardView.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/TouchlessExploreSitesCategoryCardView.java index a07af8ee..6d982fb 100644 --- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/TouchlessExploreSitesCategoryCardView.java +++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/TouchlessExploreSitesCategoryCardView.java
@@ -60,6 +60,11 @@ } @Override + public String getContextMenuTitle() { + return mModel.get(ExploreSitesSite.TITLE_KEY); + } + + @Override public Bitmap getIconBitmap() { return mModel.get(ExploreSitesSite.ICON_KEY); }
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/dialog/TouchlessDialogPresenter.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/dialog/TouchlessDialogPresenter.java index cb518a3c..cd4bb077 100644 --- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/dialog/TouchlessDialogPresenter.java +++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/dialog/TouchlessDialogPresenter.java
@@ -19,8 +19,8 @@ import android.widget.TextView; import org.chromium.base.ApiCompatibilityUtils; -import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.chrome.browser.touchless.TouchlessUiController; import org.chromium.chrome.browser.touchless.dialog.TouchlessDialogProperties.DialogListItemProperties; import org.chromium.chrome.browser.touchless.dialog.TouchlessDialogProperties.ListItemType; import org.chromium.chrome.touchless.R; @@ -39,6 +39,7 @@ public class TouchlessDialogPresenter extends Presenter { /** An activity to attach dialogs to. */ private final ChromeActivity mActivity; + private final TouchlessUiController mUiController; /** The dialog this class abstracts. */ private Dialog mDialog; @@ -47,8 +48,9 @@ private PropertyModelChangeProcessor<PropertyModel, Pair<ViewGroup, ModelListAdapter>, PropertyKey> mModelChangeProcessor; - public TouchlessDialogPresenter(ChromeActivity activity) { + public TouchlessDialogPresenter(ChromeActivity activity, TouchlessUiController uiController) { mActivity = activity; + mUiController = uiController; } @Override @@ -74,20 +76,12 @@ mDialog.setOnCancelListener(dialogInterface -> dismissCurrentDialog(DialogDismissalCause.NAVIGATE_BACK_OR_TOUCH_OUTSIDE)); - mDialog.setOnShowListener(dialog - -> AppHooks.get().getTouchlessUiControllerForActivity(mActivity).addModelToQueue( - model)); - mDialog.setOnDismissListener(dialog - -> AppHooks.get() - .getTouchlessUiControllerForActivity(mActivity) - .removeModelFromQueue(model)); + mDialog.setOnShowListener(dialog -> mUiController.addModelToQueue(model)); + mDialog.setOnDismissListener(dialog -> mUiController.removeModelFromQueue(model)); // Cancel on touch outside should be disabled by default. The ModelChangeProcessor wouldn't // notify change if the property is not set during initialization. mDialog.setCanceledOnTouchOutside(false); - mDialog.setOnKeyListener( - (dialog, keyCode, event) - -> AppHooks.get().getTouchlessUiControllerForActivity(mActivity).onKeyEvent( - event)); + mDialog.setOnKeyListener((dialog, keyCode, event) -> mUiController.onKeyEvent(event)); ViewGroup dialogView = (ViewGroup) LayoutInflater.from(mDialog.getContext()) .inflate(R.layout.touchless_dialog_view, null); ModelListAdapter adapter = new ModelListAdapter(mActivity);
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 7ceb00e..f24fdfa7 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -1105,9 +1105,12 @@ <message name="IDS_HELP_MENU" desc="The text label of the Help sub-menu item in the wrench menu"> H&elp </message> - <message name="IDS_MANAGED_BY_ORG" desc="The text label of the 'Managed by' UI in the app menu, for enterprise users"> + <message name="IDS_MANAGED" desc="The text label of the 'Managed by' UI in the app menu, for enterprise users"> Managed by your organization </message> + <message name="IDS_MANAGED_BY" desc="The text label of the 'Managed by' UI in the app menu, for enterprise users"> + Managed by <ph name="ENROLLMENT_DOMAIN">$1<ex>example.com</ex></ph> + </message> <if expr="not use_titlecase"> <message name="IDS_IMPORT_SETTINGS_MENU_LABEL" desc="In sentence case: The app menu label to import bookmarks and settings."> Import bookmarks and settings... @@ -6483,13 +6486,19 @@ <!-- Managed UI on pages like chrome://settings and chrome://downloads --> <if expr="not is_android"> <if expr="chromeos"> - <message name="IDS_MANAGED_BY_ORG_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (ChromeOS)"> - Your <ph name="BEGIN_LINK"><a target="_blank" href="$1"></ph><ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph> is managed<ph name="END_LINK"></a></ph> by your organization + <message name="IDS_MANAGED_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (ChromeOS)"> + Your <ph name="BEGIN_LINK"><a href="$1"></ph><ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph> is managed<ph name="END_LINK"></a></ph> by your organization + </message> + <message name="IDS_MANAGED_BY_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (ChromeOS)"> + Your <ph name="BEGIN_LINK"><a href="$1"></ph><ph name="DEVICE_TYPE">$2<ex>Chromebook</ex></ph> is managed<ph name="END_LINK"></a></ph> by <ph name="ENROLLMENT_DOMAIN">$3<ex>example.com</ex></ph> </message> </if> <if expr="not chromeos"> - <message name="IDS_MANAGED_BY_ORG_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (non-ChromeOS)"> - Your <ph name="BEGIN_LINK"><a target="_blank" href="$1"></ph>browser is managed<ph name="END_LINK"></a></ph> by your organization + <message name="IDS_MANAGED_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (non-ChromeOS)"> + Your <ph name="BEGIN_LINK"><a href="$1"></ph>browser is managed<ph name="END_LINK"></a></ph> by your organization + </message> + <message name="IDS_MANAGED_BY_WITH_HYPERLINK" desc="Message to end users in Enterprise/EDU, with a link for more info (non-ChromeOS)"> + Your <ph name="BEGIN_LINK"><a href="$1"></ph>browser is managed<ph name="END_LINK"></a></ph> by <ph name="ENROLLMENT_DOMAIN">$2<ex>example.com</ex></ph> </message> </if> </if>
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED.png.sha1 new file mode 100644 index 0000000..3974ee4 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_MANAGED.png.sha1
@@ -0,0 +1 @@ +69fdbc92e66a3becccf33994067a19683ed7f4ae \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED_BY.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED_BY.png.sha1 new file mode 100644 index 0000000..c543d46 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_MANAGED_BY.png.sha1
@@ -0,0 +1 @@ +545d8addbeeded80704be87fc15868b2c931a426 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG.png.sha1 deleted file mode 100644 index 52336ea..0000000 --- a/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -5da71cdadaae89ea1d464fff75b65a60e3040b74 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG_WITH_HYPERLINK.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG_WITH_HYPERLINK.png.sha1 deleted file mode 100644 index 8ec22ab..0000000 --- a/chrome/app/generated_resources_grd/IDS_MANAGED_BY_ORG_WITH_HYPERLINK.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -e833678c2cc9804565724acfd9b6f78e0d211314 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED_BY_WITH_HYPERLINK.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED_BY_WITH_HYPERLINK.png.sha1 new file mode 100644 index 0000000..c9340e1 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_MANAGED_BY_WITH_HYPERLINK.png.sha1
@@ -0,0 +1 @@ +6682f67cb8c503a710e365382735c7780d6903d4 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_MANAGED_WITH_HYPERLINK.png.sha1 b/chrome/app/generated_resources_grd/IDS_MANAGED_WITH_HYPERLINK.png.sha1 new file mode 100644 index 0000000..bba4dd72 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_MANAGED_WITH_HYPERLINK.png.sha1
@@ -0,0 +1 @@ +df6d8102570ab1e7f579ccfa2f0fc600ce696333 \ No newline at end of file
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index a03ff66a..4dca627 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -2557,6 +2557,9 @@ Uses the same spell checker that’s used in Google search. Text you type in the browser is sent to Google. </message> <if expr="not is_macosx"> + <message name="IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON" desc="Text that indicates to the user that spell check options are disabled because none of the languages they have added have spell check support."> + Spell check isn’t supported for the languages you selected + </message> <message name="IDS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE" desc="Title for the list of languages that support spell check, from which users can enable or disable spell check for."> Use spell check for </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index f847e2c..14b0dfe2 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1825,6 +1825,7 @@ ":resource_prefetch_predictor_proto", "//base:i18n", "//base/allocator:buildflags", + "//base/util/values:values_util", "//cc", "//chrome:extra_resources", "//chrome:resources", @@ -5075,7 +5076,6 @@ "//chrome/browser/performance_manager:mojo_bindings_js", "//chrome/browser/resources/ssl/ssl_error_assistant:make_ssl_error_assistant_protobuf", "//chrome/browser/ui/webui/bluetooth_internals:mojo_bindings_js", - "//chrome/browser/ui/webui/downloads:mojo_bindings_js", "//chrome/browser/ui/webui/interventions_internals:mojo_bindings_js", "//chrome/browser/ui/webui/omnibox:mojo_bindings_js", "//chrome/browser/ui/webui/usb_internals:mojo_bindings_js", @@ -5141,7 +5141,6 @@ if (!is_android && optimize_webui) { deps += [ "//chrome/browser/resources/bookmarks:build", - "//chrome/browser/resources/downloads:build", "//chrome/browser/resources/history:build", ] if (is_chromeos) {
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 475b8f9..7bb69df 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -1429,15 +1429,6 @@ ENABLE_DISABLE_VALUE_TYPE( autofill::switches::kEnableOfferStoreUnmaskedWalletCards, autofill::switches::kDisableOfferStoreUnmaskedWalletCards)}, - {"enable-offline-auto-reload", flag_descriptions::kOfflineAutoReloadName, - flag_descriptions::kOfflineAutoReloadDescription, kOsAll, - ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReload, - switches::kDisableOfflineAutoReload)}, - {"enable-offline-auto-reload-visible-only", - flag_descriptions::kOfflineAutoReloadVisibleOnlyName, - flag_descriptions::kOfflineAutoReloadVisibleOnlyDescription, kOsAll, - ENABLE_DISABLE_VALUE_TYPE(switches::kEnableOfflineAutoReloadVisibleOnly, - switches::kDisableOfflineAutoReloadVisibleOnly)}, #if defined(OS_CHROMEOS) {"enable-virtual-keyboard", flag_descriptions::kVirtualKeyboardName, flag_descriptions::kVirtualKeyboardDescription, kOsCrOS, @@ -2703,6 +2694,10 @@ #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) #if !defined(OS_ANDROID) + {"chrome-colors", flag_descriptions::kChromeColorsName, + flag_descriptions::kChromeColorsDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kChromeColors)}, + {"remove-ntp-fakebox", flag_descriptions::kRemoveNtpFakeboxName, flag_descriptions::kRemoveNtpFakeboxDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kRemoveNtpFakebox)}, @@ -2740,13 +2735,6 @@ #endif // defined(OS_ANDROID) #if defined(OS_ANDROID) - {"enable-downloads-location-change", - flag_descriptions::kDownloadsLocationChangeName, - flag_descriptions::kDownloadsLocationChangeDescription, kOsAndroid, - FEATURE_VALUE_TYPE(features::kDownloadsLocationChange)}, -#endif // defined(OS_ANDROID) - -#if defined(OS_ANDROID) {"download-progress-infobar", flag_descriptions::kDownloadProgressInfoBarName, flag_descriptions::kDownloadProgressInfoBarDescription, kOsAndroid, @@ -2801,13 +2789,6 @@ flag_descriptions::kTabHoverCardImagesDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kTabHoverCardImages)}, -#if defined(OS_POSIX) - {"enable-ntlm-v2", flag_descriptions::kNtlmV2EnabledName, - flag_descriptions::kNtlmV2EnabledDescription, - kOsMac | kOsLinux | kOsCrOS | kOsAndroid, - FEATURE_VALUE_TYPE(features::kNtlmV2Enabled)}, -#endif // defined(OS_POSIX) - {"stop-non-timers-in-background", flag_descriptions::kStopNonTimersInBackgroundName, flag_descriptions::kStopNonTimersInBackgroundDescription, kOsAll,
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc index c1dedfef..11218770 100644 --- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc +++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -23,8 +23,8 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/signin/identity_manager_factory.h" #include "chrome/common/channel_info.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill_assistant/browser/controller.h" #include "components/autofill_assistant/browser/features.h" #include "components/autofill_assistant/browser/metrics.h"
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc index 47aa4b3..5214e41f 100644 --- a/chrome/browser/android/chrome_feature_list.cc +++ b/chrome/browser/android/chrome_feature_list.cc
@@ -475,7 +475,7 @@ base::FEATURE_DISABLED_BY_DEFAULT}; const base::Feature kSearchReadyOmniboxFeature{ - "SearchReadyOmnibox", base::FEATURE_DISABLED_BY_DEFAULT}; + "SearchReadyOmnibox", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kServiceManagerForBackgroundPrefetch{ "ServiceManagerForBackgroundPrefetch", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/apps/app_service/app_icon_factory.cc b/chrome/browser/apps/app_service/app_icon_factory.cc index 031d84cb8..5cda01f 100644 --- a/chrome/browser/apps/app_service/app_icon_factory.cc +++ b/chrome/browser/apps/app_service/app_icon_factory.cc
@@ -266,16 +266,16 @@ // caller has asked for compressed icons (i.e. PNG-formatted data), not // uncompressed (i.e. a gfx::ImageSkia). if (extension->location() == extensions::Manifest::COMPONENT) { - extensions::ComponentExtensionResourceInfo resource_info; + int resource_id = 0; const extensions::ComponentExtensionResourceManager* manager = extensions::ExtensionsBrowserClient::Get() ->GetComponentExtensionResourceManager(); if (manager && manager->IsComponentExtensionResource( extension->path(), ext_resource.relative_path(), - &resource_info)) { + &resource_id)) { base::StringPiece data = ui::ResourceBundle::GetSharedInstance().GetRawDataResource( - resource_info.resource_id); + resource_id); RunCallbackWithCompressedData( size_hint_in_dip, default_icon_resource, is_placeholder_icon, icon_effects, std::move(callback),
diff --git a/chrome/browser/apps/platform_apps/app_browsertest_util.cc b/chrome/browser/apps/platform_apps/app_browsertest_util.cc index 0e863ce..4403bdc 100644 --- a/chrome/browser/apps/platform_apps/app_browsertest_util.cc +++ b/chrome/browser/apps/platform_apps/app_browsertest_util.cc
@@ -29,7 +29,7 @@ #if defined(OS_CHROMEOS) #include "chrome/browser/media/router/media_routes_observer.h" -#include "chrome/browser/ui/ash/cast_config_client_media_router.h" +#include "chrome/browser/ui/ash/cast_config_controller_media_router.h" #include "testing/gmock/include/gmock/gmock.h" #endif @@ -71,13 +71,13 @@ ON_CALL(*media_router_, RegisterMediaSinksObserver(testing::_)) .WillByDefault(testing::Return(true)); - CastConfigClientMediaRouter::SetMediaRouterForTest(media_router_.get()); + CastConfigControllerMediaRouter::SetMediaRouterForTest(media_router_.get()); #endif } void PlatformAppBrowserTest::TearDownOnMainThread() { #if defined(OS_CHROMEOS) - CastConfigClientMediaRouter::SetMediaRouterForTest(nullptr); + CastConfigControllerMediaRouter::SetMediaRouterForTest(nullptr); #endif ExtensionApiTest::TearDownOnMainThread(); }
diff --git a/chrome/browser/autofill/autofill_browsertest.cc b/chrome/browser/autofill/autofill_browsertest.cc index d44d09e..7ddfb38 100644 --- a/chrome/browser/autofill/autofill_browsertest.cc +++ b/chrome/browser/autofill/autofill_browsertest.cc
@@ -32,9 +32,9 @@ #include "chrome/test/base/ui_test_utils.h" #include "components/autofill/content/browser/content_autofill_driver.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager_observer.h" #include "components/autofill/core/browser/validation.h"
diff --git a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc index 13ed5e9..90a53173 100644 --- a/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc +++ b/chrome/browser/autofill/autofill_captured_sites_interactive_uitest.cc
@@ -37,9 +37,9 @@ #include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/browser/autofill_manager_test_delegate.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/proto/server.pb.h" #include "components/autofill/core/browser/state_names.h"
diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc index dea1a92c1..260faf9 100644 --- a/chrome/browser/autofill/autofill_interactive_uitest.cc +++ b/chrome/browser/autofill/autofill_interactive_uitest.cc
@@ -49,8 +49,8 @@ #include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/browser/autofill_manager_test_delegate.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_util.h"
diff --git a/chrome/browser/autofill/autofill_server_browsertest.cc b/chrome/browser/autofill/autofill_server_browsertest.cc index ba99bd5..3e5c5be 100644 --- a/chrome/browser/autofill/autofill_server_browsertest.cc +++ b/chrome/browser/autofill/autofill_server_browsertest.cc
@@ -16,8 +16,8 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager_observer.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/chrome/browser/autofill/autofill_uitest_util.cc b/chrome/browser/autofill/autofill_uitest_util.cc index 34b2b66..5bee77a2 100644 --- a/chrome/browser/autofill/autofill_uitest_util.cc +++ b/chrome/browser/autofill/autofill_uitest_util.cc
@@ -8,8 +8,8 @@ #include "chrome/browser/autofill/personal_data_manager_factory.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager_observer.h" #include "content/public/test/test_utils.h"
diff --git a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc index 50c8fe16..28edcc1a 100644 --- a/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc +++ b/chrome/browser/autofill/manual_filling_controller_impl_unittest.cc
@@ -36,8 +36,8 @@ void(const std::map<base::string16, const autofill::PasswordForm*>&, const url::Origin&)); MOCK_METHOD1(OnFilledIntoFocusedField, void(autofill::FillingStatus)); - MOCK_METHOD3(RefreshSuggestionsForField, - void(const url::Origin&, bool, bool)); + MOCK_METHOD4(RefreshSuggestionsForField, + void(const url::Origin&, bool, bool, bool)); MOCK_METHOD0(DidNavigateMainFrame, void()); MOCK_METHOD2(GetFavicon, void(int, base::OnceCallback<void(const gfx::Image&)>));
diff --git a/chrome/browser/autofill/manual_filling_utils.cc b/chrome/browser/autofill/manual_filling_utils.cc index 28eaa679..d0588f77 100644 --- a/chrome/browser/autofill/manual_filling_utils.cc +++ b/chrome/browser/autofill/manual_filling_utils.cc
@@ -6,13 +6,12 @@ #include <utility> -#include "chrome/grit/generated_resources.h" -#include "ui/base/l10n/l10n_util.h" - namespace autofill { -AccessorySheetData CreateAccessorySheetData(base::string16 title, - std::vector<UserInfo> user_info) { +AccessorySheetData CreateAccessorySheetData( + base::string16 title, + std::vector<UserInfo> user_info, + std::vector<FooterCommand> footer_commands) { // TODO(crbug.com/902425): Remove hard-coded enum value AccessorySheetData data(FallbackSheetType::PASSWORD, std::move(title)); for (auto& i : user_info) { @@ -21,9 +20,9 @@ // TODO(crbug.com/902425): Generalize options (both adding to footer, and // handling selection). - base::string16 manage_passwords_title = l10n_util::GetStringUTF16( - IDS_PASSWORD_MANAGER_ACCESSORY_ALL_PASSWORDS_LINK); - data.add_footer_command(FooterCommand(manage_passwords_title)); + for (auto& footer_command : footer_commands) { + data.add_footer_command(std::move(footer_command)); + } return data; }
diff --git a/chrome/browser/autofill/manual_filling_utils.h b/chrome/browser/autofill/manual_filling_utils.h index 1dbcf3d..f931874 100644 --- a/chrome/browser/autofill/manual_filling_utils.h +++ b/chrome/browser/autofill/manual_filling_utils.h
@@ -11,8 +11,10 @@ // Creates an AccessorySheetData defining the data to be shown in the filling // UI. -AccessorySheetData CreateAccessorySheetData(base::string16 title, - std::vector<UserInfo> user_info); +AccessorySheetData CreateAccessorySheetData( + base::string16 title, + std::vector<UserInfo> user_info, + std::vector<FooterCommand> footer_commands); } // namespace autofill
diff --git a/chrome/browser/badging/badge_service_impl.cc b/chrome/browser/badging/badge_service_impl.cc index 9cd2571..77118ea4 100644 --- a/chrome/browser/badging/badge_service_impl.cc +++ b/chrome/browser/badging/badge_service_impl.cc
@@ -80,7 +80,7 @@ } bool BadgeServiceImpl::IsInApp() { - WebAppBrowserController* web_app_controller = + web_app::AppBrowserController* web_app_controller = chrome::FindBrowserWithWebContents(web_contents_)->web_app_controller(); return web_app_controller && extensions::IsSameScope(web_app_controller->GetAppLaunchURL(),
diff --git a/chrome/browser/banners/app_banner_settings_helper.cc b/chrome/browser/banners/app_banner_settings_helper.cc index 4c0ccbe9..3ae7a9f 100644 --- a/chrome/browser/banners/app_banner_settings_helper.cc +++ b/chrome/browser/banners/app_banner_settings_helper.cc
@@ -14,6 +14,7 @@ #include "base/command_line.h" #include "base/optional.h" #include "base/strings/string_number_conversions.h" +#include "base/util/values/values_util.h" #include "chrome/browser/banners/app_banner_manager.h" #include "chrome/browser/banners/app_banner_metrics.h" #include "chrome/browser/browser_process.h" @@ -182,21 +183,6 @@ return (now - event_time < period); } -base::Optional<base::TimeDelta> ParseTimeDelta(const base::Value* value) { - std::string delta_string; - if (!value || !value->GetAsString(&delta_string)) - return base::nullopt; - - int64_t delta_int64; - if (!base::StringToInt64(delta_string, &delta_int64)) - return base::nullopt; - return base::TimeDelta::FromMicroseconds(delta_int64); -} - -base::Value SerializeTimeDelta(const base::TimeDelta& delta) { - return base::Value(base::NumberToString(delta.InMicroseconds())); -} - // Dictionary of time information for how long to wait before showing the // "Install" text slide animation again. // Data format: {"last_shown": timestamp, "delay": duration} @@ -230,18 +216,17 @@ if (!next_dict || !next_dict->is_dict()) return base::nullopt; - base::Optional<base::TimeDelta> last_shown_since_epoch = - ParseTimeDelta(next_dict->FindKey(kLastShownKey)); - if (!last_shown_since_epoch) + base::Optional<base::Time> last_shown = + util::ValueToTime(next_dict->FindKey(kLastShownKey)); + if (!last_shown) return base::nullopt; base::Optional<base::TimeDelta> delay = - ParseTimeDelta(next_dict->FindKey(kDelayKey)); + util::ValueToTimeDelta(next_dict->FindKey(kDelayKey)); if (!delay) return base::nullopt; - return NextInstallTextAnimation{ - base::Time::FromDeltaSinceWindowsEpoch(*last_shown_since_epoch), *delay}; + return NextInstallTextAnimation{*last_shown, *delay}; } void NextInstallTextAnimation::RecordToPrefs(content::WebContents* web_contents, @@ -251,9 +236,8 @@ return; base::Value next_dict(base::Value::Type::DICTIONARY); - next_dict.SetKey(kLastShownKey, - SerializeTimeDelta(last_shown.ToDeltaSinceWindowsEpoch())); - next_dict.SetKey(kDelayKey, SerializeTimeDelta(delay)); + next_dict.SetKey(kLastShownKey, util::TimeToValue(last_shown)); + next_dict.SetKey(kDelayKey, util::TimeDeltaToValue(delay)); app_prefs.dict()->SetKey(kNextInstallTextAnimation, std::move(next_dict)); app_prefs.Save(); }
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd index 91e567f..48ec1c49 100644 --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd
@@ -158,37 +158,6 @@ <include name="IDR_UKM_INTERNALS_CSS" file="../../components/ukm/debug/ukm_internals.css" flattenhtml="true" compress="gzip" type="BINDATA" /> <include name="IDR_TRANSLATE_INTERNALS_HTML" file="../../components/translate/translate_internals/translate_internals.html" flattenhtml="true" allowexternalscript="true" compress="gzip" type="BINDATA" /> <include name="IDR_TRANSLATE_INTERNALS_JS" file="../../components/translate/translate_internals/translate_internals.js" flattenhtml="true" compress="gzip" type="BINDATA" /> - <if expr="not is_android"> - <include name="IDR_DOWNLOADS_IMAGES_INCOGNITO_MARKER_SVG" file="resources\downloads\images\incognito_marker.svg" type="BINDATA" /> - <include name="IDR_DOWNLOADS_IMAGES_NO_DOWNLOADS_SVG" file="resources\downloads\images\no_downloads.svg" type="BINDATA" /> - <include name="IDR_DOWNLOADS_MOJO_LITE_JS" file="${root_gen_dir}\chrome\browser\ui\webui\downloads\downloads.mojom-lite.js" use_base_dir="false" type="BINDATA" /> - <if expr="optimize_webui"> - <then> - <include name="IDR_DOWNLOADS_VULCANIZED_HTML" file="${root_gen_dir}\chrome\browser\resources\downloads\vulcanized.html" use_base_dir="false" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" /> - <include name="IDR_DOWNLOADS_CRISPER_JS" file="${root_gen_dir}\chrome\browser\resources\downloads\crisper.js" use_base_dir="false" flattenhtml="true" type="BINDATA" compress="gzip" /> - </then> - <else> - <include name="IDR_DOWNLOADS_DOWNLOADS_HTML" file="resources\downloads\downloads.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> - <include name="IDR_DOWNLOADS_BROWSER_PROXY_HTML" file="resources\downloads\browser_proxy.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_BROWSER_PROXY_JS" file="resources\downloads\browser_proxy.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_CONSTANTS_HTML" file="resources\downloads\constants.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_CONSTANTS_JS" file="resources\downloads\constants.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_DOWNLOADS_JS" file="resources\downloads\downloads.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_I18N_SETUP_HTML" file="resources\downloads\i18n_setup.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_ICON_LOADER_HTML" file="resources\downloads\icon_loader.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_ICON_LOADER_JS" file="resources\downloads\icon_loader.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_ICONS_HTML" file="resources\downloads\icons.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_ITEM_HTML" file="resources\downloads\item.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_ITEM_JS" file="resources\downloads\item.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_MANAGER_HTML" file="resources\downloads\manager.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_MANAGER_JS" file="resources\downloads\manager.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_SEARCH_SERVICE_HTML" file="resources\downloads\search_service.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_SEARCH_SERVICE_JS" file="resources\downloads\search_service.js" type="BINDATA" /> - <include name="IDR_DOWNLOADS_TOOLBAR_HTML" file="resources\downloads\toolbar.html" type="BINDATA" /> - <include name="IDR_DOWNLOADS_TOOLBAR_JS" file="resources\downloads\toolbar.js" type="BINDATA" /> - </else> - </if> - </if> <include name="IDR_FEEDBACK_MANIFEST" file="resources\feedback\manifest.json" type="BINDATA" /> <if expr="is_android"> <include name="IDR_EXPLORE_SITES_INTERNALS_HTML" file="resources\explore_sites_internals\explore_sites_internals.html" allowexternalscript="true" compress="gzip" type="BINDATA" />
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc index 23e9af6..96fd7902b 100644 --- a/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc +++ b/chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_unittest.cc
@@ -55,9 +55,9 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/legacy_strike_database.h" #include "components/autofill/core/browser/payments/strike_database.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/chrome/browser/browsing_data/counters/autofill_counter_browsertest.cc b/chrome/browser/browsing_data/counters/autofill_counter_browsertest.cc index 325e1b7..e4a955e 100644 --- a/chrome/browser/browsing_data/counters/autofill_counter_browsertest.cc +++ b/chrome/browser/browsing_data/counters/autofill_counter_browsertest.cc
@@ -15,10 +15,10 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/web_data_service_factory.h" #include "chrome/test/base/in_process_browser_test.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/browsing_data/core/browsing_data_utils.h"
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index c507af9..9f0839be 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1973,27 +1973,13 @@ bool IsAutoReloadEnabled() { const base::CommandLine& browser_command_line = *base::CommandLine::ForCurrentProcess(); - if (browser_command_line.HasSwitch(switches::kEnableOfflineAutoReload)) + if (browser_command_line.HasSwitch(switches::kEnableAutoReload)) return true; - if (browser_command_line.HasSwitch(switches::kDisableOfflineAutoReload)) + if (browser_command_line.HasSwitch(switches::kDisableAutoReload)) return false; return true; } -bool IsAutoReloadVisibleOnlyEnabled() { - const base::CommandLine& browser_command_line = - *base::CommandLine::ForCurrentProcess(); - if (browser_command_line.HasSwitch( - switches::kEnableOfflineAutoReloadVisibleOnly)) { - return true; - } - if (browser_command_line.HasSwitch( - switches::kDisableOfflineAutoReloadVisibleOnly)) { - return false; - } - return true; -} - void MaybeAppendBlinkSettingsSwitchForFieldTrial( const base::CommandLine& browser_command_line, base::CommandLine* command_line) { @@ -2204,11 +2190,7 @@ } if (IsAutoReloadEnabled()) - command_line->AppendSwitch(switches::kEnableOfflineAutoReload); - if (IsAutoReloadVisibleOnlyEnabled()) { - command_line->AppendSwitch( - switches::kEnableOfflineAutoReloadVisibleOnly); - } + command_line->AppendSwitch(switches::kEnableAutoReload); MaybeAppendBlinkSettingsSwitchForFieldTrial( browser_command_line, command_line);
diff --git a/chrome/browser/chromeos/extensions/external_cache_impl.cc b/chrome/browser/chromeos/extensions/external_cache_impl.cc index 654f65bb..a383bea0 100644 --- a/chrome/browser/chromeos/extensions/external_cache_impl.cc +++ b/chrome/browser/chromeos/extensions/external_cache_impl.cc
@@ -282,21 +282,25 @@ continue; } + base::FilePath file_path; + std::string version; + std::string hash; + bool is_cached = + local_cache_.GetExtension(entry.first, hash, &file_path, &version); + if (!is_cached) + version = "0.0.0.0"; if (downloader_) { GURL update_url = GetExtensionUpdateUrl(entry.second, always_check_updates_); if (update_url.is_valid()) { - downloader_->AddPendingExtension( + downloader_->AddPendingExtensionWithVersion( entry.first, update_url, extensions::Manifest::EXTERNAL_POLICY, - false, 0, extensions::ManifestFetchData::FetchPriority::BACKGROUND); + false, 0, extensions::ManifestFetchData::FetchPriority::BACKGROUND, + base::Version(version)); } } - - base::FilePath file_path; - std::string version; - std::string hash; - if (local_cache_.GetExtension(entry.first, hash, &file_path, &version)) { + if (is_cached) { cached_extensions_->SetKey( entry.first, GetExtensionValueToCache(entry.second, file_path.value(), version));
diff --git a/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc b/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc index a5e06ce..6d305d4 100644 --- a/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc +++ b/chrome/browser/chromeos/file_manager/external_filesystem_apitest.cc
@@ -21,7 +21,7 @@ #include "chrome/browser/media/router/test/mock_media_router.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/ui/ash/cast_config_client_media_router.h" +#include "chrome/browser/ui/ash/cast_config_controller_media_router.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" @@ -359,13 +359,13 @@ media_router_ = std::make_unique<media_router::MockMediaRouter>(); ON_CALL(*media_router_, RegisterMediaSinksObserver(testing::_)) .WillByDefault(testing::Return(true)); - CastConfigClientMediaRouter::SetMediaRouterForTest(media_router_.get()); + CastConfigControllerMediaRouter::SetMediaRouterForTest(media_router_.get()); extensions::ExtensionApiTest::SetUpOnMainThread(); } void TearDownOnMainThread() override { - CastConfigClientMediaRouter::SetMediaRouterForTest(nullptr); + CastConfigControllerMediaRouter::SetMediaRouterForTest(nullptr); extensions::ExtensionApiTest::TearDownOnMainThread(); }
diff --git a/chrome/browser/complex_tasks/task_tab_helper.cc b/chrome/browser/complex_tasks/task_tab_helper.cc index 159b02b..b2ceaf3 100644 --- a/chrome/browser/complex_tasks/task_tab_helper.cc +++ b/chrome/browser/complex_tasks/task_tab_helper.cc
@@ -133,6 +133,16 @@ context_record_task_id->set_root_task_id( prev_context_record_task_id->root_task_id()); } +#if defined(OS_ANDROID) + else { + // Cross-tab navigation - only supported in Android. In this case + // the parent and parent root Task IDs are passed from the Java layer + if (this->GetParentTaskId() != -1) { + context_record_task_id->set_parent_task_id(this->GetParentTaskId()); + context_record_task_id->set_root_task_id(this->GetParentRootTaskId()); + } + } +#endif // defined(OS_ANDROID) } } else { context_record_task_id->set_root_task_id(context_record_task_id->task_id());
diff --git a/chrome/browser/complex_tasks/task_tab_helper_unittest.cc b/chrome/browser/complex_tasks/task_tab_helper_unittest.cc index c8ffc0bf..d99e5089 100644 --- a/chrome/browser/complex_tasks/task_tab_helper_unittest.cc +++ b/chrome/browser/complex_tasks/task_tab_helper_unittest.cc
@@ -65,9 +65,11 @@ .WillByDefault(testing::Return(DEFAULT_SEARCH_ENGINE_HUB_TYPE)); } + void GoBack() { content::NavigationSimulator::GoBack(web_contents()); } + void GoBackNTimes(int times) { while (times--) { - content::NavigationSimulator::GoBack(web_contents()); + GoBack(); } } @@ -232,3 +234,36 @@ EXPECT_NE(a_context_record_task_id.root_task_id(), b_context_record_task_id.root_task_id()); } + +TEST_F(TaskTabHelperUnitTest, TestTaskIdBackButton) { + NavigateAndCommit(GURL("http://a.com"), ui::PAGE_TRANSITION_TYPED); + NavigateAndCommit(GURL("http://b.com")); + sessions::ContextRecordTaskId b_context_record_task_id = + *sessions::ContextRecordTaskId::Get(GetLastCommittedEntry()); + GoBack(); + sessions::ContextRecordTaskId a_context_record_task_id = + *sessions::ContextRecordTaskId::Get(GetLastCommittedEntry()); + + // A should still have no parent after a back navigation and + // shouldn't link to B (like it would if we navigated a.com -> b.com -> a.com + // via clicking links) + EXPECT_EQ(a_context_record_task_id.parent_task_id(), -1); + EXPECT_NE(a_context_record_task_id.parent_task_id(), + b_context_record_task_id.task_id()); +} + +TEST_F(TaskTabHelperUnitTest, TestTaskIdBackViaLink) { + NavigateAndCommit(GURL("http://a.com"), ui::PAGE_TRANSITION_TYPED); + NavigateAndCommit(GURL("http://b.com")); + sessions::ContextRecordTaskId b_context_record_task_id = + *sessions::ContextRecordTaskId::Get(GetLastCommittedEntry()); + NavigateAndCommit(GURL("http://a.com")); + sessions::ContextRecordTaskId a_context_record_task_id = + *sessions::ContextRecordTaskId::Get(GetLastCommittedEntry()); + + // We got back to a.com via a link (not back button) so it should now point to + // B. + EXPECT_NE(a_context_record_task_id.parent_task_id(), -1); + EXPECT_EQ(a_context_record_task_id.parent_task_id(), + b_context_record_task_id.task_id()); +}
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc index ec3a4fbb..b9c4b02 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
@@ -18,7 +18,7 @@ #include "components/autofill/content/browser/content_autofill_driver.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/form_data_importer.h" #include "components/autofill/core/browser/payments/local_card_migration_manager.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.cc b/chrome/browser/extensions/api/autofill_private/autofill_util.cc index 157f6c0..0f3bb0a 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_util.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_util.cc
@@ -17,10 +17,10 @@ #include "chrome/common/extensions/api/autofill_private.h" #include "chrome/common/pref_names.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_combobox_model.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/prefs/pref_service.h" #include "components/strings/grit/components_strings.h"
diff --git a/chrome/browser/extensions/bookmark_app_helper.cc b/chrome/browser/extensions/bookmark_app_helper.cc index b1e9c931..fcb56b0 100644 --- a/chrome/browser/extensions/bookmark_app_helper.cc +++ b/chrome/browser/extensions/bookmark_app_helper.cc
@@ -367,14 +367,16 @@ if (!contents_) { // The web contents can be null in tests. - OnBubbleCompleted(true, web_app_info_); + OnBubbleCompleted(true, + std::make_unique<WebApplicationInfo>(web_app_info_)); return; } Browser* browser = chrome::FindBrowserWithWebContents(contents_); if (!browser) { // The browser can be null in tests. - OnBubbleCompleted(true, web_app_info_); + OnBubbleCompleted(true, + std::make_unique<WebApplicationInfo>(web_app_info_)); return; } @@ -404,9 +406,10 @@ void BookmarkAppHelper::OnBubbleCompleted( bool user_accepted, - const WebApplicationInfo& web_app_info) { + std::unique_ptr<WebApplicationInfo> web_app_info) { if (user_accepted) { - web_app_info_ = web_app_info; + DCHECK(web_app_info); + web_app_info_ = *web_app_info; if (is_policy_installed_app_) crx_installer_->set_install_source(Manifest::EXTERNAL_POLICY_DOWNLOAD);
diff --git a/chrome/browser/extensions/bookmark_app_helper.h b/chrome/browser/extensions/bookmark_app_helper.h index 21db2f0..05edccd4 100644 --- a/chrome/browser/extensions/bookmark_app_helper.h +++ b/chrome/browser/extensions/bookmark_app_helper.h
@@ -164,7 +164,7 @@ // Called after the bubble has been shown, and the user has either accepted or // the dialog was dismissed. void OnBubbleCompleted(bool user_accepted, - const WebApplicationInfo& web_app_info); + std::unique_ptr<WebApplicationInfo> web_app_info); // Called when the installation of the app is complete to perform the final // installation steps.
diff --git a/chrome/browser/extensions/bookmark_app_helper_browsertest.cc b/chrome/browser/extensions/bookmark_app_helper_browsertest.cc index dfa01cb..260e63e 100644 --- a/chrome/browser/extensions/bookmark_app_helper_browsertest.cc +++ b/chrome/browser/extensions/bookmark_app_helper_browsertest.cc
@@ -182,8 +182,9 @@ ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> observer(this); observer.Add(ExtensionRegistry::Get(browser()->profile())); - bookmark_app_helper_->OnBubbleCompleted(true, - bookmark_app_helper_->web_app_info_); + bookmark_app_helper_->OnBubbleCompleted( + true, std::make_unique<WebApplicationInfo>( + bookmark_app_helper_->web_app_info_)); Wait(); // Quits when the extension install completes. Browser* app_browser = chrome::FindBrowserWithWebContents(web_contents());
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager.cc b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc index cbfa7b3..c5278b6 100644 --- a/chrome/browser/extensions/chrome_component_extension_resource_manager.cc +++ b/chrome/browser/extensions/chrome_component_extension_resource_manager.cc
@@ -34,7 +34,7 @@ ChromeComponentExtensionResourceManager:: ChromeComponentExtensionResourceManager() { - static const GzippedGritResourceMap kExtraComponentExtensionResources[] = { + static const GritResourceMap kExtraComponentExtensionResources[] = { #if defined(OS_CHROMEOS) {"web_store/webstore_icon_128.png", IDR_WEBSTORE_APP_ICON_128}, {"web_store/webstore_icon_16.png", IDR_WEBSTORE_APP_ICON_16}, @@ -53,8 +53,8 @@ {"chrome_app/chrome_app_icon_192.png", IDR_CHROME_APP_ICON_192}, {"pdf/ink/ink_lib_binary.js", IDR_INK_LIB_BINARY_JS}, {"pdf/ink/pthread-main.js", IDR_INK_PTHREAD_MAIN_JS}, - {"pdf/ink/glcore_base.js.mem", IDR_INK_GLCORE_BASE_JS_MEM, true}, - {"pdf/ink/glcore_base.wasm", IDR_INK_GLCORE_BASE_WASM, true}, + {"pdf/ink/glcore_base.js.mem", IDR_INK_GLCORE_BASE_JS_MEM}, + {"pdf/ink/glcore_base.wasm", IDR_INK_GLCORE_BASE_WASM}, {"pdf/ink/glcore_wasm_bootstrap_compiled.js", IDR_INK_GLCORE_WASM_BOOTSTRAP_COMPILED_JS}, #endif @@ -67,7 +67,7 @@ base::size(kExtraComponentExtensionResources)); #if defined(OS_CHROMEOS) size_t file_manager_resource_size; - const GzippedGritResourceMap* file_manager_resources = + const GritResourceMap* file_manager_resources = file_manager::GetFileManagerResources(&file_manager_resource_size); AddComponentResourceEntries( file_manager_resources, @@ -84,7 +84,7 @@ } size_t keyboard_resource_size; - const GzippedGritResourceMap* keyboard_resources = + const GritResourceMap* keyboard_resources = keyboard::GetKeyboardExtensionResources(&keyboard_resource_size); AddComponentResourceEntries( keyboard_resources, @@ -103,7 +103,7 @@ bool ChromeComponentExtensionResourceManager::IsComponentExtensionResource( const base::FilePath& extension_path, const base::FilePath& resource_path, - ComponentExtensionResourceInfo* resource_info) const { + int* resource_id) const { base::FilePath directory_path = extension_path; base::FilePath resources_dir; base::FilePath relative_path; @@ -114,9 +114,9 @@ relative_path = relative_path.Append(resource_path); relative_path = relative_path.NormalizePathSeparators(); - auto entry = path_to_resource_info_.find(relative_path); - if (entry != path_to_resource_info_.end()) { - *resource_info = entry->second; + auto entry = path_to_resource_id_.find(relative_path); + if (entry != path_to_resource_id_.end()) { + *resource_id = entry->second; return true; } @@ -134,16 +134,15 @@ } void ChromeComponentExtensionResourceManager::AddComponentResourceEntries( - const GzippedGritResourceMap* entries, + const GritResourceMap* entries, size_t size) { for (size_t i = 0; i < size; ++i) { base::FilePath resource_path = base::FilePath().AppendASCII( entries[i].name); resource_path = resource_path.NormalizePathSeparators(); - DCHECK(!base::ContainsKey(path_to_resource_info_, resource_path)); - path_to_resource_info_[resource_path] = {entries[i].value, - entries[i].gzipped}; + DCHECK(!base::ContainsKey(path_to_resource_id_, resource_path)); + path_to_resource_id_[resource_path] = entries[i].value; } }
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager.h b/chrome/browser/extensions/chrome_component_extension_resource_manager.h index 4c92fe7..010e5d4 100644 --- a/chrome/browser/extensions/chrome_component_extension_resource_manager.h +++ b/chrome/browser/extensions/chrome_component_extension_resource_manager.h
@@ -13,7 +13,7 @@ #include "base/macros.h" #include "extensions/browser/component_extension_resource_manager.h" -struct GzippedGritResourceMap; +struct GritResourceMap; namespace extensions { @@ -24,21 +24,18 @@ ~ChromeComponentExtensionResourceManager() override; // Overridden from ComponentExtensionResourceManager: - bool IsComponentExtensionResource( - const base::FilePath& extension_path, - const base::FilePath& resource_path, - ComponentExtensionResourceInfo* resource_info) const override; + bool IsComponentExtensionResource(const base::FilePath& extension_path, + const base::FilePath& resource_path, + int* resource_id) const override; const ui::TemplateReplacements* GetTemplateReplacementsForExtension( const std::string& extension_id) const override; private: - void AddComponentResourceEntries(const GzippedGritResourceMap* entries, - size_t size); + void AddComponentResourceEntries(const GritResourceMap* entries, size_t size); // A map from a resource path to the resource ID. Used by // IsComponentExtensionResource. - std::map<base::FilePath, ComponentExtensionResourceInfo> - path_to_resource_info_; + std::map<base::FilePath, int> path_to_resource_id_; // A map from an extension ID to its i18n template replacements. std::map<std::string, ui::TemplateReplacements>
diff --git a/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc b/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc index 7ef5bec..8364e164 100644 --- a/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc +++ b/chrome/browser/extensions/chrome_component_extension_resource_manager_unittest.cc
@@ -65,11 +65,10 @@ #if defined(OS_CHROMEOS) // The resource is a component resource. - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; ASSERT_TRUE(resource_manager->IsComponentExtensionResource( - extension->path(), resource.relative_path(), &resource_info)); - ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_info.resource_id); - EXPECT_FALSE(resource_info.gzipped); + extension->path(), resource.relative_path(), &resource_id)); + ASSERT_EQ(IDR_FILE_MANAGER_ICON_16, resource_id); #endif }
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc index d717bc7..a483305 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_client.cc +++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc
@@ -201,21 +201,21 @@ base::FilePath ChromeExtensionsBrowserClient::GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const { + int* resource_id) const { return chrome_url_request_util::GetBundleResourcePath( - request, extension_resources_path, resource_info); + request, extension_resources_path, resource_id); } void ChromeExtensionsBrowserClient::LoadResourceFromResourceBundle( const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) { chrome_url_request_util::LoadResourceFromResourceBundle( - request, std::move(loader), resource_relative_path, resource_info, + request, std::move(loader), resource_relative_path, resource_id, content_security_policy, std::move(client), send_cors_header); }
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.h b/chrome/browser/extensions/chrome_extensions_browser_client.h index 795b8b4..fd7e844 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_client.h +++ b/chrome/browser/extensions/chrome_extensions_browser_client.h
@@ -74,12 +74,12 @@ base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const override; + int* resource_id) const override; void LoadResourceFromResourceBundle( const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) override;
diff --git a/chrome/browser/extensions/chrome_url_request_util.cc b/chrome/browser/extensions/chrome_url_request_util.cc index 7e6616ea..c071a32 100644 --- a/chrome/browser/extensions/chrome_url_request_util.cc +++ b/chrome/browser/extensions/chrome_url_request_util.cc
@@ -55,11 +55,11 @@ } scoped_refptr<base::RefCountedMemory> GetResource( - const extensions::ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& extension_id) { const ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); scoped_refptr<base::RefCountedMemory> bytes = - rb.LoadDataResourceBytes(resource_info.resource_id); + rb.LoadDataResourceBytes(resource_id); auto* replacements = ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager() ? ExtensionsBrowserClient::Get() @@ -67,7 +67,8 @@ ->GetTemplateReplacementsForExtension(extension_id) : nullptr; - if (!bytes->size() || (!replacements && !resource_info.gzipped)) { + bool is_gzipped = rb.IsGzipped(resource_id); + if (!bytes->size() || (!replacements && !is_gzipped)) { return bytes; } @@ -77,7 +78,7 @@ std::string temp_str; base::StringPiece source = input; - if (resource_info.gzipped) { + if (is_gzipped) { temp_str.resize(compression::GetUncompressedSize(input)); source = temp_str; CHECK(compression::GzipUncompress(input, source)); @@ -96,16 +97,15 @@ // by component extensions. class URLRequestResourceBundleJob : public net::URLRequestSimpleJob { public: - URLRequestResourceBundleJob( - net::URLRequest* request, - net::NetworkDelegate* network_delegate, - const base::FilePath& filename, - const extensions::ComponentExtensionResourceInfo& resource_info, - const std::string& content_security_policy, - bool send_cors_header) + URLRequestResourceBundleJob(net::URLRequest* request, + net::NetworkDelegate* network_delegate, + const base::FilePath& filename, + int resource_id, + const std::string& content_security_policy, + bool send_cors_header) : net::URLRequestSimpleJob(request, network_delegate), filename_(filename), - resource_info_(resource_info), + resource_id_(resource_id), weak_factory_(this) { // Leave cache headers out of resource bundle requests. response_info_.headers = extensions::BuildHttpHeaders( @@ -117,7 +117,7 @@ std::string* charset, scoped_refptr<base::RefCountedMemory>* data, net::CompletionOnceCallback callback) const override { - *data = GetResource(resource_info_, request()->url().host()); + *data = GetResource(resource_id_, request()->url().host()); // Add the Content-Length header now that we know the resource length. response_info_.headers->AddHeader( @@ -162,8 +162,8 @@ // We need the filename of the resource to determine the mime type. base::FilePath filename_; - // The resource to load. - const extensions::ComponentExtensionResourceInfo resource_info_; + // The resource bundle id to load. + int resource_id_; net::HttpResponseInfo response_info_; @@ -174,21 +174,20 @@ // component extensions. class ResourceBundleFileLoader : public network::mojom::URLLoader { public: - static void CreateAndStart( - const network::ResourceRequest& request, - network::mojom::URLLoaderRequest loader, - network::mojom::URLLoaderClientPtrInfo client_info, - const base::FilePath& filename, - const extensions::ComponentExtensionResourceInfo& resource_info, - const std::string& content_security_policy, - bool send_cors_header) { + static void CreateAndStart(const network::ResourceRequest& request, + network::mojom::URLLoaderRequest loader, + network::mojom::URLLoaderClientPtrInfo client_info, + const base::FilePath& filename, + int resource_id, + const std::string& content_security_policy, + bool send_cors_header) { // Owns itself. Will live as long as its URLLoader and URLLoaderClientPtr // bindings are alive - essentially until either the client gives up or all // file data has been sent to it. auto* bundle_loader = new ResourceBundleFileLoader(content_security_policy, send_cors_header); bundle_loader->Start(request, std::move(loader), std::move(client_info), - filename, resource_info); + filename, resource_id); } // mojom::URLLoader implementation: @@ -218,14 +217,14 @@ network::mojom::URLLoaderRequest loader, network::mojom::URLLoaderClientPtrInfo client_info, const base::FilePath& filename, - const extensions::ComponentExtensionResourceInfo& resource_info) { + int resource_id) { client_.Bind(std::move(client_info)); binding_.Bind(std::move(loader)); binding_.set_connection_error_handler(base::BindOnce( &ResourceBundleFileLoader::OnBindingError, base::Unretained(this))); client_.set_connection_error_handler(base::BindOnce( &ResourceBundleFileLoader::OnConnectionError, base::Unretained(this))); - auto data = GetResource(resource_info, request.url.host()); + auto data = GetResource(resource_id, request.url.host()); std::string* read_mime_type = new std::string; base::PostTaskWithTraitsAndReplyWithResult( @@ -356,15 +355,15 @@ resources_path.AppendRelativePath(directory_path, &relative_path)) { base::FilePath request_path = extensions::file_util::ExtensionURLToRelativeFilePath(request->url()); - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; if (ExtensionsBrowserClient::Get() ->GetComponentExtensionResourceManager() ->IsComponentExtensionResource(directory_path, request_path, - &resource_info)) { + &resource_id)) { relative_path = relative_path.Append(request_path); relative_path = relative_path.NormalizePathSeparators(); return new URLRequestResourceBundleJob( - request, network_delegate, relative_path, resource_info, + request, network_delegate, relative_path, resource_id, content_security_policy, send_cors_header); } } @@ -374,8 +373,8 @@ base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) { - *resource_info = {}; + int* resource_id) { + *resource_id = 0; // |chrome_resources_path| corresponds to src/chrome/browser/resources in // source tree. base::FilePath chrome_resources_path; @@ -394,11 +393,10 @@ if (!ExtensionsBrowserClient::Get() ->GetComponentExtensionResourceManager() ->IsComponentExtensionResource(extension_resources_path, - request_relative_path, - resource_info)) { + request_relative_path, resource_id)) { return base::FilePath(); } - DCHECK_NE(0, resource_info->resource_id); + DCHECK_NE(0, *resource_id); return request_relative_path; } @@ -407,14 +405,14 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) { DCHECK(!resource_relative_path.empty()); ResourceBundleFileLoader::CreateAndStart( request, std::move(loader), client.PassInterface(), - resource_relative_path, resource_info, content_security_policy, + resource_relative_path, resource_id, content_security_policy, send_cors_header); }
diff --git a/chrome/browser/extensions/chrome_url_request_util.h b/chrome/browser/extensions/chrome_url_request_util.h index 76ee93f..a61b87b 100644 --- a/chrome/browser/extensions/chrome_url_request_util.h +++ b/chrome/browser/extensions/chrome_url_request_util.h
@@ -24,7 +24,6 @@ } namespace extensions { -struct ComponentExtensionResourceInfo; class Extension; class ExtensionSet; class ProcessMap; @@ -59,10 +58,13 @@ // Return the |request|'s resource path relative to the Chromium resources path // (chrome::DIR_RESOURCES) *if* the request refers to a resource within the // Chrome resource bundle. If not then the returned file path will be empty. +// |resource_id| is used to check whether the requested resource is registered +// as a component extensions resource, via +// ChromeComponentExtensionResourceManager::IsComponentExtensionResource() base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info); + int* resource_id); // Creates and starts a URLLoader for loading component extension resources out // of a Chrome resource bundle. This should only be called if @@ -71,7 +73,7 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header);
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index b0dbcc08..8c42325 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -371,6 +371,11 @@ "expiry_milestone": 76 }, { + "name": "chrome-colors", + "owners": ["gayane"], + "expiry_milestone": 78 + }, + { "name": "clear-old-browsing-data", "owners": [ "dullweber" ], "expiry_milestone": 78 @@ -1000,11 +1005,6 @@ "expiry_milestone": 80 }, { - "name": "enable-downloads-location-change", - // "owners": [ "your-team" ], - "expiry_milestone": 76 - }, - { "name": "enable-drive-fs", "owners": [ "sammc", "dats" ], "expiry_milestone": 76 @@ -1361,11 +1361,6 @@ "expiry_milestone": 78 }, { - "name": "enable-ntlm-v2", - // "owners": [ "your-team" ], - "expiry_milestone": 76 - }, - { "name": "enable-ntp-button", "owners": [ "twellington" ], "expiry_milestone": 78 @@ -1381,16 +1376,6 @@ "expiry_milestone": 76 }, { - "name": "enable-offline-auto-reload", - // "owners": [ "your-team" ], - "expiry_milestone": 76 - }, - { - "name": "enable-offline-auto-reload-visible-only", - // "owners": [ "your-team" ], - "expiry_milestone": 76 - }, - { "name": "enable-offline-previews", "owners": [ "//components/data_reduction_proxy/OWNERS" ], // This flag is used for frequent manual testing and should not be removed.
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 5b6c4fa..05d598f 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1233,29 +1233,12 @@ const char kUseMultiloginEndpointDescription[] = "Use Gaia OAuth multilogin for identity consistency."; -#if defined(OS_POSIX) -const char kNtlmV2EnabledName[] = "Enable NTLMv2 Authentication"; -const char kNtlmV2EnabledDescription[] = - "Enable NTLMv2 HTTP Authentication. This disables NTLMv1 support."; -#endif - const char kOfferStoreUnmaskedWalletCardsName[] = "Google Payments card saving checkbox"; const char kOfferStoreUnmaskedWalletCardsDescription[] = "Show the checkbox to offer local saving of a credit card downloaded from " "the server."; -const char kOfflineAutoReloadName[] = "Offline Auto-Reload Mode"; -const char kOfflineAutoReloadDescription[] = - "Pages that fail to load while the browser is offline will be " - "auto-reloaded when the browser is online again."; - -const char kOfflineAutoReloadVisibleOnlyName[] = - "Only Auto-Reload Visible Tabs"; -const char kOfflineAutoReloadVisibleOnlyDescription[] = - "Pages that fail to load while the browser is offline will only be " - "auto-reloaded if their tab is visible."; - const char kOmniboxAlternateMatchDescriptionSeparatorName[] = "Omnibox Alternate Match Description Separator"; const char kOmniboxAlternateMatchDescriptionSeparatorDescription[] = @@ -2215,10 +2198,6 @@ const char kContextualSearchUnityIntegrationDescription[] = "Enables integration of Tap to Search with Unified Consent."; -const char kDownloadsLocationChangeName[] = "Enable downloads location change"; -const char kDownloadsLocationChangeDescription[] = - "Enable changing default downloads storage location on Android."; - const char kDownloadProgressInfoBarName[] = "Enable download progress infobar"; const char kDownloadProgressInfoBarDescription[] = "Enables an infobar notifying users about status of current downloads."; @@ -2597,6 +2576,10 @@ const char kAppManagementDescription[] = "Shows the new app management page at chrome://apps."; +const char kChromeColorsName[] = "Chrome Colors menu"; +const char kChromeColorsDescription[] = + "Show Chrome Colors menu in the NTP customization menu."; + const char kRemoveNtpFakeboxName[] = "Remove fakebox from the NTP"; const char kRemoveNtpFakeboxDescription[] = "Do not show the fakebox on the New Tab page.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index afd97365..f26f6374 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -763,20 +763,9 @@ extern const char kUseMultiloginEndpointName[]; extern const char kUseMultiloginEndpointDescription[]; -#if defined(OS_POSIX) -extern const char kNtlmV2EnabledName[]; -extern const char kNtlmV2EnabledDescription[]; -#endif - extern const char kOfferStoreUnmaskedWalletCardsName[]; extern const char kOfferStoreUnmaskedWalletCardsDescription[]; -extern const char kOfflineAutoReloadName[]; -extern const char kOfflineAutoReloadDescription[]; - -extern const char kOfflineAutoReloadVisibleOnlyName[]; -extern const char kOfflineAutoReloadVisibleOnlyDescription[]; - extern const char kOmniboxAlternateMatchDescriptionSeparatorName[]; extern const char kOmniboxAlternateMatchDescriptionSeparatorDescription[]; @@ -1327,9 +1316,6 @@ extern const char kDontPrefetchLibrariesName[]; extern const char kDontPrefetchLibrariesDescription[]; -extern const char kDownloadsLocationChangeName[]; -extern const char kDownloadsLocationChangeDescription[]; - extern const char kDownloadProgressInfoBarName[]; extern const char kDownloadProgressInfoBarDescription[]; @@ -1551,6 +1537,9 @@ extern const char kAutofillDropdownLayoutName[]; extern const char kAutofillDropdownLayoutDescription[]; +extern const char kChromeColorsName[]; +extern const char kChromeColorsDescription[]; + extern const char kRemoveNtpFakeboxName[]; extern const char kRemoveNtpFakeboxDescription[];
diff --git a/chrome/browser/net/errorpage_browsertest.cc b/chrome/browser/net/errorpage_browsertest.cc index c0a6e0c..4977414 100644 --- a/chrome/browser/net/errorpage_browsertest.cc +++ b/chrome/browser/net/errorpage_browsertest.cc
@@ -39,7 +39,6 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/error_page/common/error_page_switches.h" #include "components/google/core/common/google_util.h" #include "components/language/core/browser/pref_names.h" #include "components/policy/core/browser/browser_policy_connector.h" @@ -936,7 +935,7 @@ class ErrorPageAutoReloadTest : public InProcessBrowserTest { public: void SetUpCommandLine(base::CommandLine* command_line) override { - command_line->AppendSwitch(switches::kEnableOfflineAutoReload); + command_line->AppendSwitch(switches::kEnableAutoReload); } void TearDownOnMainThread() override { url_loader_interceptor_.reset(); }
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc index a343d611..4b9099a4 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer.cc
@@ -570,29 +570,40 @@ FrameData::InteractiveStatus::kPreInteractive); base::TimeDelta task_duration_post = ad_frame_data.GetInteractiveCpuUsage( FrameData::InteractiveStatus::kPostInteractive); + base::TimeDelta task_duration_total = + task_duration_pre + task_duration_post; if (total_duration.InMilliseconds() > 0) { ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated", UMA_HISTOGRAM_PERCENTAGE, visibility, - GetCpuPercentage(task_duration_pre + task_duration_post, - total_duration)); + GetCpuPercentage(task_duration_total, total_duration)); + ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.TotalUsage.Unactivated", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_total); } if (pre_interactive_duration_.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_pre, pre_interactive_duration_)); + ADS_HISTOGRAM( + "Cpu.AdFrames.PerFrame.TotalUsage.Unactivated.PreInteractive", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_pre); } if (post_interactive_duration.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_post, post_interactive_duration)); + ADS_HISTOGRAM( + "Cpu.AdFrames.PerFrame.TotalUsage.Unactivated.PostInteractive", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_post); } } else { base::TimeDelta task_duration_pre = ad_frame_data.GetActivationCpuUsage( FrameData::UserActivationStatus::kNoActivation); base::TimeDelta task_duration_post = ad_frame_data.GetActivationCpuUsage( FrameData::UserActivationStatus::kReceivedActivation); + base::TimeDelta task_duration_total = + task_duration_pre + task_duration_post; base::TimeDelta pre_activation_duration = ad_frame_data.pre_activation_foreground_duration(); base::TimeDelta post_activation_duration = @@ -600,20 +611,27 @@ if (total_duration.InMilliseconds() > 0) { ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.PercentUsage.Activated", UMA_HISTOGRAM_PERCENTAGE, visibility, - GetCpuPercentage(task_duration_pre + task_duration_post, - total_duration)); + GetCpuPercentage(task_duration_total, total_duration)); + ADS_HISTOGRAM("Cpu.AdFrames.PerFrame.TotalUsage.Activated", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_total); } if (pre_activation_duration.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PreActivation", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_pre, pre_activation_duration)); + ADS_HISTOGRAM( + "Cpu.AdFrames.PerFrame.TotalUsage.Activated.PreActivation", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_pre); } if (post_activation_duration.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PostActivation", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_post, post_activation_duration)); + ADS_HISTOGRAM( + "Cpu.AdFrames.PerFrame.TotalUsage.Activated.PostActivation", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_post); } } } @@ -634,23 +652,29 @@ base::TimeDelta task_duration_post = aggregate_frame_data_->GetInteractiveCpuUsage( FrameData::InteractiveStatus::kPostInteractive); + base::TimeDelta task_duration_total = task_duration_pre + task_duration_post; if (total_duration.InMilliseconds() > 0) { ADS_HISTOGRAM("Cpu.FullPage.PercentUsage", UMA_HISTOGRAM_PERCENTAGE, visibility, - GetCpuPercentage(task_duration_pre + task_duration_post, - total_duration)); + GetCpuPercentage(task_duration_total, total_duration)); + ADS_HISTOGRAM("Cpu.FullPage.TotalUsage", PAGE_LOAD_HISTOGRAM, visibility, + task_duration_total); } if (pre_interactive_duration_.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.FullPage.PercentUsage.PreInteractive", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_pre, pre_interactive_duration_)); + ADS_HISTOGRAM("Cpu.FullPage.TotalUsage.PreInteractive", PAGE_LOAD_HISTOGRAM, + visibility, task_duration_pre); } if (post_interactive_duration.InMilliseconds() > 0) { ADS_HISTOGRAM( "Cpu.FullPage.PercentUsage.PostInteractive", UMA_HISTOGRAM_PERCENTAGE, visibility, GetCpuPercentage(task_duration_post, post_interactive_duration)); + ADS_HISTOGRAM("Cpu.FullPage.TotalUsage.PostInteractive", + PAGE_LOAD_HISTOGRAM, visibility, task_duration_post); } }
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc index 614616ca..be7f104 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_unittest.cc
@@ -328,7 +328,51 @@ clock_ = std::make_unique<base::SimpleTestTickClock>(); } + // Given the prefix of the CPU histogram to check, either "Cpu.FullPage" or + // "Cpu.AdFrames.PerFrame", as well as the type, one of "" (for "FullPage"), + // "Activated", or "Unactivated", along with the total pre and post cpu time + // and total time, check all the relevant cpu histograms. + void CheckCpuHistograms(const std::string& prefix, + std::string type, + int pre_task_time, + int pre_time, + int post_task_time, + int post_time) { + int total_task_time = pre_task_time + post_task_time; + int total_time = pre_time + post_time; + std::string suffix = type == "Activated" ? "Activation" : "Interactive"; + type = type.empty() ? "" : "." + type; + + CheckSpecificCpuHistogram( + SuffixedHistogram(prefix + ".PercentUsage" + type), + SuffixedHistogram(prefix + ".TotalUsage" + type), total_task_time, + total_time); + CheckSpecificCpuHistogram( + SuffixedHistogram(prefix + ".PercentUsage" + type + ".Pre" + suffix), + SuffixedHistogram(prefix + ".TotalUsage" + type + ".Pre" + suffix), + pre_task_time, pre_time); + CheckSpecificCpuHistogram( + SuffixedHistogram(prefix + ".PercentUsage" + type + ".Post" + suffix), + SuffixedHistogram(prefix + ".TotalUsage" + type + ".Post" + suffix), + post_task_time, post_time); + } + private: + void CheckSpecificCpuHistogram(std::string percent_histogram, + std::string total_histogram, + int total_task_time, + int total_time) { + if (total_time) { + histogram_tester().ExpectUniqueSample( + percent_histogram, 100 * total_task_time / total_time, 1); + histogram_tester().ExpectUniqueSample(total_histogram, total_task_time, + 1); + } else { + histogram_tester().ExpectTotalCount(percent_histogram, 0); + histogram_tester().ExpectTotalCount(total_histogram, 0); + } + } + void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) { auto observer = std::make_unique<AdsPageLoadMetricsObserver>(); ads_observer_ = observer.get(); @@ -833,33 +877,14 @@ AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000)); NavigateFrame(kNonAdUrl, main_frame); - // Overall usage on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), - 100 * (500 + 500 + 1000 + 500) / 4000 /*=62%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), - 100 * (500 + 500) / 2000 /*=50%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), - 100 * (1000 + 500) / 2000 /*=75%*/, 1); - - // Make sure there are no activated numbers reported. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); - - // Usage for ad frame on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), - 100 * (500 + 1000) / 4000 /*=37%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"), - 100 * (500) / 2000 /*=25%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"), - 100 * (1000) / 2000 /*=50%*/, 1); + // Check the cpu histograms. + CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500, + /*pre_time=*/2000, /*post_tasks=*/1000 + 500, + /*post_time=*/2000); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500, + /*pre_time=*/2000, /*post_tasks=*/1000, + /*post_time=*/2000); } TEST_F(AdsPageLoadMetricsObserverTest, @@ -895,33 +920,14 @@ AdvancePageDuration(base::TimeDelta::FromMilliseconds(500)); NavigateFrame(kNonAdUrl, main_frame); - // Overall usage on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), - 100 * (500 + 500 + 1000) / 3500 /*=57%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), - 100 * (500 + 500) / 2000 /*=50%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), - 100 * (1000) / 1500 /*=66%*/, 1); - - // Make sure there are no activated numbers reported. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); - - // Usage for ad frame on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), - 100 * (500 + 1000) / 3500 /*=42%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"), - 100 * (500) / 2000 /*=25%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"), - 100 * (1000) / 1500 /*=66%*/, 1); + // Check the cpu histograms. + CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500, + /*pre_time=*/2000, /*post_tasks=*/1000, + /*post_time=*/1500); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500, + /*pre_time=*/2000, /*post_tasks=*/1000, + /*post_time=*/1500); } TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsOnActivation) { @@ -959,33 +965,15 @@ AdvancePageDuration(base::TimeDelta::FromMilliseconds(1500)); NavigateFrame(kNonAdUrl, main_frame); - // Overall usage on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), - 100 * (500 + 500 + 1000 + 500) / 4000 /*=62%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), - 100 * (500 + 500) / 2000 /*=50%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), - 100 * (1000 + 500) / 2000 /*=75%*/, 1); - - // Make sure there are no unactivated numbers reported. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), 0); - - // Usage for ad frame on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), - 100 * (500 + 500 + 500) / 4000 /*=37%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PreActivation"), - 100 * (500 + 500) / 2500 /*=40%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Activated.PostActivation"), - 100 * (500) / 1500 /*=33%*/, 1); + // Check the cpu histograms. + CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500, + /*pre_time=*/2000, /*post_tasks=*/1000 + 500, + /*post_time=*/2000); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", + /*pre_tasks=*/500 + 500, /*pre_time=*/2500, + /*post_tasks=*/500, + /*post_time=*/1500); } TEST_F(AdsPageLoadMetricsObserverTest, TestNoReportingWhenAlwaysBackgrounded) { @@ -1020,12 +1008,9 @@ NavigateFrame(kNonAdUrl, main_frame); // Ensure that all metrics are zero. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), 0); - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), 0); - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); + CheckCpuHistograms("Cpu.FullPage", "", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0); } TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsNoInteractive) { @@ -1046,31 +1031,12 @@ AdvancePageDuration(base::TimeDelta::FromMilliseconds(2000)); NavigateFrame(kNonAdUrl, main_frame); - // Overall usage on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), - 100 * (500 + 500) / 2000 /*=50%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PreInteractive"), - 100 * (500 + 500) / 2000 /*=50%*/, 1); - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.FullPage.PercentUsage.PostInteractive"), 0); - - // Make sure there are no activated numbers reported. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); - - // Usage for ad frame on page for 3 categories: - histogram_tester().ExpectUniqueSample( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"), - 100 * (500) / 2000 /*=25%*/, 1); - histogram_tester().ExpectUniqueSample( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PreInteractive"), - 100 * (500) / 2000 /*=25%*/, 1); - histogram_tester().ExpectTotalCount( - SuffixedHistogram( - "Cpu.AdFrames.PerFrame.PercentUsage.Unactivated.PostInteractive"), 0); + // Check the cpu histograms. + CheckCpuHistograms("Cpu.FullPage", "", /*pre_tasks=*/500 + 500, + /*pre_time=*/2000, /*post_tasks=*/0, /*post_time=*/0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", /*pre_tasks=*/500, + /*pre_time=*/2000, /*post_tasks=*/0, /*post_time=*/0); } TEST_F(AdsPageLoadMetricsObserverTest, TestCpuTimingMetricsShortTimeframes) { @@ -1101,10 +1067,7 @@ NavigateFrame(kNonAdUrl, main_frame); // Make sure there are no numbers reported, as the timeframes are too short. - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Activated"), 0); - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.AdFrames.PerFrame.PercentUsage.Unctivated"), 0); - histogram_tester().ExpectTotalCount( - SuffixedHistogram("Cpu.FullPage.PercentUsage"), 0); + CheckCpuHistograms("Cpu.FullPage", "", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Activated", 0, 0, 0, 0); + CheckCpuHistograms("Cpu.AdFrames.PerFrame", "Unactivated", 0, 0, 0, 0); }
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc index b3755a3..5f2b182 100644 --- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
@@ -9,6 +9,7 @@ #include <memory> #include <utility> +#include "base/feature_list.h" #include "base/metrics/histogram_macros.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/page_load_metrics/observers/largest_contentful_paint_handler.h" @@ -16,6 +17,7 @@ #include "content/public/common/process_type.h" #include "net/http/http_response_headers.h" #include "ui/base/page_transition_types.h" +#include "ui/events/blink/blink_features.h" namespace { // TODO(bmcquade): If other observers want to log histograms based on load type, @@ -107,6 +109,14 @@ "PageLoad.InteractiveTiming.FirstInputDelay3"; const char kHistogramFirstInputTimestamp[] = "PageLoad.InteractiveTiming.FirstInputTimestamp3"; +const char kHistogramFirstInputDelay4[] = + "PageLoad.InteractiveTiming.FirstInputDelay4"; +const char kHistogramFirstInputTimestamp4[] = + "PageLoad.InteractiveTiming.FirstInputTimestamp4"; +const char kHistogramFirstInputDelaySkipFilteringComparison[] = + "PageLoad.InteractiveTiming.FirstInputDelay.SkipFilteringComparison"; +const char kHistogramFirstInputTimestampSkipFilteringComparison[] = + "PageLoad.InteractiveTiming.FirstInputTimestamp.SkipFilteringComparison"; const char kHistogramLongestInputDelay[] = "PageLoad.InteractiveTiming.LongestInputDelay3"; const char kHistogramLongestInputTimestamp[] = @@ -566,13 +576,42 @@ // Input delay will often be ~0, and will only be > 10 seconds very // rarely. Capture the range from 1ms to 60s. + // While the SkipTouchEventFilter experiment is running, always record + // first input metrics with the name "SkipFilteringComparison" so that + // we can compare with it on/off. UMA_HISTOGRAM_CUSTOM_TIMES( - internal::kHistogramFirstInputDelay, + internal::kHistogramFirstInputDelaySkipFilteringComparison, timing.interactive_timing->first_input_delay.value(), base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(60), 50); - PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstInputTimestamp, - timing.interactive_timing->first_input_timestamp.value()); + PAGE_LOAD_HISTOGRAM( + internal::kHistogramFirstInputTimestampSkipFilteringComparison, + timing.interactive_timing->first_input_timestamp.value()); + if (base::FeatureList::IsEnabled(features::kSkipTouchEventFilter)) { + // This experiment will change the FID and first input metric by + // changing the timestamp on pointerdown events on mobile pages with no + // pointer event handlers. If it is ramped up to 100% to launch, we need + // to update the metric name (v3->v4). + UMA_HISTOGRAM_CUSTOM_TIMES( + internal::kHistogramFirstInputDelay4, + timing.interactive_timing->first_input_delay.value(), + base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(60), + 50); + PAGE_LOAD_HISTOGRAM( + internal::kHistogramFirstInputTimestamp4, + timing.interactive_timing->first_input_timestamp.value()); + } else { + // If the SkipTouchEventFilter experiment does not launch, we want to + // continue reporting first input events under the current name. + UMA_HISTOGRAM_CUSTOM_TIMES( + internal::kHistogramFirstInputDelay, + timing.interactive_timing->first_input_delay.value(), + base::TimeDelta::FromMilliseconds(1), base::TimeDelta::FromSeconds(60), + 50); + PAGE_LOAD_HISTOGRAM( + internal::kHistogramFirstInputTimestamp, + timing.interactive_timing->first_input_timestamp.value()); + } } void CorePageLoadMetricsObserver::OnParseStart(
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h index 9e77820..3973a52 100644 --- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
@@ -18,6 +18,10 @@ extern const char kHistogramFirstLayout[]; extern const char kHistogramFirstInputDelay[]; extern const char kHistogramFirstInputTimestamp[]; +extern const char kHistogramFirstInputDelaySkipFilteringComparison[]; +extern const char kHistogramFirstInputTimestampSkipFilteringComparison[]; +extern const char kHistogramFirstInputDelay4[]; +extern const char kHistogramFirstInputTimestamp4[]; extern const char kHistogramLongestInputDelay[]; extern const char kHistogramLongestInputTimestamp[]; extern const char kHistogramFirstPaint[];
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc index 3c013a4f..0ab8c00 100644 --- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc
@@ -8,6 +8,7 @@ #include <memory> #include <vector> +#include "base/feature_list.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/engagement/site_engagement_service.h" #include "chrome/browser/page_load_metrics/observers/largest_contentful_paint_handler.h" @@ -28,6 +29,7 @@ #include "services/metrics/public/cpp/ukm_recorder.h" #include "services/network/public/cpp/network_quality_tracker.h" #include "third_party/metrics_proto/system_profile.pb.h" +#include "ui/events/blink/blink_features.h" #if BUILDFLAG(ENABLE_OFFLINE_PAGES) #include "chrome/browser/offline_pages/offline_page_tab_helper.h" @@ -350,14 +352,40 @@ if (timing.interactive_timing->first_input_delay) { base::TimeDelta first_input_delay = timing.interactive_timing->first_input_delay.value(); - builder.SetInteractiveTiming_FirstInputDelay3( + builder.SetInteractiveTiming_FirstInputDelay_SkipFilteringComparison( first_input_delay.InMilliseconds()); + if (base::FeatureList::IsEnabled(features::kSkipTouchEventFilter)) { + // This experiment will change the FID and first input metric by + // changing the timestamp on pointerdown events on mobile pages with no + // pointer event handlers. If it is ramped up to 100% to launch, we need + // to update the metric name (v3->v4). + builder.SetInteractiveTiming_FirstInputDelay4( + first_input_delay.InMilliseconds()); + } else { + // If the SkipTouchEventFilter experiment does not launch, we want to + // continue reporting first input events under the current name. + builder.SetInteractiveTiming_FirstInputDelay3( + first_input_delay.InMilliseconds()); + } } if (timing.interactive_timing->first_input_timestamp) { base::TimeDelta first_input_timestamp = timing.interactive_timing->first_input_timestamp.value(); - builder.SetInteractiveTiming_FirstInputTimestamp3( + builder.SetInteractiveTiming_FirstInputTimestamp_SkipFilteringComparison( first_input_timestamp.InMilliseconds()); + if (base::FeatureList::IsEnabled(features::kSkipTouchEventFilter)) { + // This experiment will change the FID and first input metric by + // changing the timestamp on pointerdown events on mobile pages with no + // pointer event handlers. If it is ramped up to 100% to launch, we need + // to update the metric name (v3->v4). + builder.SetInteractiveTiming_FirstInputTimestamp4( + first_input_timestamp.InMilliseconds()); + } else { + // If the SkipTouchEventFilter experiment does not launch, we want to + // continue reporting first input events under the current name. + builder.SetInteractiveTiming_FirstInputTimestamp3( + first_input_timestamp.InMilliseconds()); + } } if (timing.interactive_timing->longest_input_delay) {
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc index 469ceb9ec..9f1622e2 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc
@@ -1020,14 +1020,23 @@ } void ChromePasswordManagerClient::FocusedInputChanged( - const url::Origin& last_committed_origin, + password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) { #if defined(OS_ANDROID) if (PasswordAccessoryController::AllowedForWebContents(web_contents())) { + bool is_manual_generation_available = + password_manager_util::ManualPasswordGenerationEnabled(driver); + + password_manager::ContentPasswordManagerDriver* content_driver = + static_cast<password_manager::ContentPasswordManagerDriver*>(driver); + url::Origin last_committed_origin = + content_driver->render_frame_host()->GetLastCommittedOrigin(); + PasswordAccessoryController::GetOrCreate(web_contents()) ->RefreshSuggestionsForField(last_committed_origin, is_fillable, - is_password_field); + is_password_field, + is_manual_generation_available); } #endif // defined(OS_ANDROID) }
diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/chrome/browser/password_manager/chrome_password_manager_client.h index 8e459461..9839a03 100644 --- a/chrome/browser/password_manager/chrome_password_manager_client.h +++ b/chrome/browser/password_manager/chrome_password_manager_client.h
@@ -72,7 +72,7 @@ bool has_generated_password, bool is_update) override; void HideManualFallbackForSaving() override; - void FocusedInputChanged(const url::Origin& last_committed_origin, + void FocusedInputChanged(password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) override; bool PromptUserToChooseCredentials(
diff --git a/chrome/browser/password_manager/native_backend_kwallet_x.cc b/chrome/browser/password_manager/native_backend_kwallet_x.cc index 712c06c..ec4ade5 100644 --- a/chrome/browser/password_manager/native_backend_kwallet_x.cc +++ b/chrome/browser/password_manager/native_backend_kwallet_x.cc
@@ -413,7 +413,7 @@ auto it = std::partition( forms.begin(), forms.end(), [&form](const std::unique_ptr<PasswordForm>& current_form) { - return !ArePasswordFormUniqueKeyEqual(form, *current_form); + return !ArePasswordFormUniqueKeysEqual(form, *current_form); }); password_manager::PasswordStoreChangeList changes; if (it != forms.end()) { @@ -449,7 +449,7 @@ auto it = std::partition( forms.begin(), forms.end(), [&form](const std::unique_ptr<PasswordForm>& current_form) { - return !ArePasswordFormUniqueKeyEqual(form, *current_form); + return !ArePasswordFormUniqueKeysEqual(form, *current_form); }); if (it == forms.end()) @@ -481,7 +481,7 @@ std::vector<std::unique_ptr<PasswordForm>> kept_forms; kept_forms.reserve(all_forms.size()); for (std::unique_ptr<PasswordForm>& saved_form : all_forms) { - if (!ArePasswordFormUniqueKeyEqual(form, *saved_form)) { + if (!ArePasswordFormUniqueKeysEqual(form, *saved_form)) { kept_forms.push_back(std::move(saved_form)); } }
diff --git a/chrome/browser/password_manager/password_accessory_controller.h b/chrome/browser/password_manager/password_accessory_controller.h index 29792ff..d063671e 100644 --- a/chrome/browser/password_manager/password_accessory_controller.h +++ b/chrome/browser/password_manager/password_accessory_controller.h
@@ -72,9 +72,11 @@ // Makes sure, that all shown suggestions are appropriate for the currently // focused field and for fields that lost the focus. If a field lost focus, // |is_fillable| will be false. - virtual void RefreshSuggestionsForField(const url::Origin& origin, - bool is_fillable, - bool is_password_field) = 0; + virtual void RefreshSuggestionsForField( + const url::Origin& origin, + bool is_fillable, + bool is_password_field, + bool is_manual_generation_available) = 0; // Reacts to a navigation on the main frame, e.g. by clearing caches. virtual void DidNavigateMainFrame() = 0;
diff --git a/chrome/browser/password_manager/password_accessory_controller_impl.cc b/chrome/browser/password_manager/password_accessory_controller_impl.cc index d312374c..679ce63 100644 --- a/chrome/browser/password_manager/password_accessory_controller_impl.cc +++ b/chrome/browser/password_manager/password_accessory_controller_impl.cc
@@ -26,6 +26,7 @@ #include "components/password_manager/content/browser/content_password_manager_driver.h" #include "components/password_manager/content/browser/content_password_manager_driver_factory.h" #include "components/password_manager/core/browser/password_manager_driver.h" +#include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/common/password_manager_features.h" #include "components/url_formatter/elide_url.h" #include "content/public/browser/web_contents.h" @@ -181,8 +182,10 @@ void PasswordAccessoryControllerImpl::RefreshSuggestionsForField( const url::Origin& origin, bool is_fillable, - bool is_password_field) { + bool is_password_field, + bool is_manual_generation_available) { std::vector<UserInfo> info_to_add; + std::vector<FooterCommand> footer_commands_to_add; if (is_fillable) { const std::vector<PasswordAccessorySuggestion> suggestions = @@ -192,16 +195,27 @@ [is_password_field](const auto& x) { return Translate(is_password_field, x); }); + + if (is_password_field && is_manual_generation_available) { + base::string16 generate_password_title = l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_ACCESSORY_GENERATE_PASSWORD_BUTTON_TITLE); + footer_commands_to_add.push_back(FooterCommand(generate_password_title)); + } } + base::string16 manage_passwords_title = l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_ACCESSORY_ALL_PASSWORDS_LINK); + footer_commands_to_add.push_back(FooterCommand(manage_passwords_title)); + bool has_suggestions = !info_to_add.empty(); GetManualFillingController()->RefreshSuggestionsForField( - is_fillable, autofill::CreateAccessorySheetData( - GetTitle(has_suggestions, GetFocusedFrameOrigin()), - std::move(info_to_add))); + is_fillable, + autofill::CreateAccessorySheetData( + GetTitle(has_suggestions, GetFocusedFrameOrigin()), + std::move(info_to_add), std::move(footer_commands_to_add))); - if (is_password_field) { + if (is_password_field && is_fillable) { GetManualFillingController()->ShowWhenKeyboardIsVisible( FillingSource::PASSWORD_FALLBACKS); } else {
diff --git a/chrome/browser/password_manager/password_accessory_controller_impl.h b/chrome/browser/password_manager/password_accessory_controller_impl.h index 0db305a..a9e989f 100644 --- a/chrome/browser/password_manager/password_accessory_controller_impl.h +++ b/chrome/browser/password_manager/password_accessory_controller_impl.h
@@ -69,7 +69,8 @@ void OnFilledIntoFocusedField(autofill::FillingStatus status) override; void RefreshSuggestionsForField(const url::Origin& origin, bool is_fillable, - bool is_password_field) override; + bool is_password_field, + bool is_manual_generation_available) override; void DidNavigateMainFrame() override; void GetFavicon( int desired_size_in_pixel,
diff --git a/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc b/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc index c4c212a..d69782f 100644 --- a/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc +++ b/chrome/browser/password_manager/password_accessory_controller_impl_unittest.cc
@@ -143,6 +143,11 @@ IDS_PASSWORD_MANAGER_ACCESSORY_ALL_PASSWORDS_LINK); } +base::string16 generate_password_str() { + return l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_ACCESSORY_GENERATE_PASSWORD_BUTTON_TITLE); +} + // Creates a AccessorySheetDataBuilder object with a "Manage passwords..." // footer. AccessorySheetDataBuilder PasswordAccessorySheetDataBuilder( @@ -262,7 +267,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, HintsToEmptyUserNames) { @@ -284,7 +290,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, SortsAlphabeticalDuringTransform) { @@ -324,7 +331,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, RepeatsSuggestionsForSameFrame) { @@ -348,7 +356,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, ProvidesEmptySuggestionsMessage) { @@ -365,7 +374,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, OnFilledIntoFocusedField) { @@ -403,7 +413,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); // Pretend that we focus a password field now: By triggering a refresh with // |is_password_field| set to true, all suggestions should become interactive. @@ -423,7 +434,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/true); + /*is_password_field=*/true, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, CachesIsReplacedByNewPasswords) { @@ -445,7 +457,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); controller()->SavePasswordsForOrigin({CreateEntry("Alf", "M3lm4k").first}, url::Origin::Create(GURL(kExampleSite))); @@ -465,7 +478,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, UnfillableFieldClearsSuggestions) { @@ -489,7 +503,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); // Pretend that the focus was lost or moved to an unfillable field. Now, only // the empty state message should be sent. @@ -504,7 +519,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/false, - /*is_password_field=*/false); // Unused. + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, NavigatingMainFrameClearsSuggestions) { @@ -528,7 +544,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); // Pretend that the focus was lost or moved to an unfillable field. NavigateAndCommit(GURL("https://random.other-site.org/")); @@ -546,7 +563,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL("https://random.other-site.org/")), /*is_fillable=*/true, - /*is_password_field=*/false); // Unused. + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); } TEST_F(PasswordAccessoryControllerTest, FetchFaviconForCurrentUrl) { @@ -559,7 +577,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); EXPECT_CALL(*favicon_service(), GetRawFaviconForPageURL(GURL(kExampleSite), _, kIconSize, _, _, _)) @@ -579,7 +598,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); EXPECT_CALL(*favicon_service(), GetRawFaviconForPageURL(GURL(kExampleSite), _, kIconSize, _, _, _)) @@ -619,7 +639,8 @@ controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); EXPECT_CALL(*favicon_service(), GetRawFaviconForPageURL(GURL(kExampleSite), _, kIconSize, _, _, _)) @@ -647,7 +668,8 @@ Hide(FillingSource::PASSWORD_FALLBACKS)); controller()->RefreshSuggestionsForField( url::Origin::Create(GURL(kExampleSite)), /*is_fillable=*/true, - /*is_password_field=*/false); + /*is_password_field=*/false, + /*is_manual_generation_available=*/false); // The cache was cleared, so now the service has to be queried again. EXPECT_CALL(*favicon_service(), GetRawFaviconForPageURL(GURL(kExampleSite), _, @@ -667,7 +689,7 @@ EXPECT_CALL(mock_manual_filling_controller_, Hide(FillingSource::PASSWORD_FALLBACKS)); controller()->RefreshSuggestionsForField( - url::Origin::Create(GURL(kExampleSite)), true, false); + url::Origin::Create(GURL(kExampleSite)), true, false, false); // Right after starting the favicon request for example.com, a navigation // changes the URL of the focused frame. Even if the request is completed, @@ -689,7 +711,43 @@ EXPECT_CALL(mock_manual_filling_controller_, Hide(FillingSource::PASSWORD_FALLBACKS)); controller()->RefreshSuggestionsForField( - url::Origin::Create(GURL("https://other.frame.com/")), true, false); + url::Origin::Create(GURL("https://other.frame.com/")), true, false, + false); base::RunLoop().RunUntilIdle(); } + +TEST_F(PasswordAccessoryControllerTest, AddsGenerationCommandWhenAvailable) { + controller()->SavePasswordsForOrigin({}, + url::Origin::Create(GURL(kExampleSite))); + AccessorySheetDataBuilder data_builder(passwords_empty_str(kExampleDomain)); + data_builder.AppendFooterCommand(generate_password_str()) + .AppendFooterCommand(manage_passwords_str()); + EXPECT_CALL(mock_manual_filling_controller_, + RefreshSuggestionsForField( + /*is_fillable=*/true, data_builder.Build())); + EXPECT_CALL(mock_manual_filling_controller_, + ShowWhenKeyboardIsVisible(FillingSource::PASSWORD_FALLBACKS)); + controller()->RefreshSuggestionsForField( + url::Origin::Create(GURL(kExampleSite)), + /*is_fillable=*/true, + /*is_password_field=*/true, + /*is_manual_generation_available=*/true); +} + +TEST_F(PasswordAccessoryControllerTest, NoGenerationCommandIfNotPasswordField) { + controller()->SavePasswordsForOrigin({}, + url::Origin::Create(GURL(kExampleSite))); + EXPECT_CALL(mock_manual_filling_controller_, + RefreshSuggestionsForField( + /*is_fillable=*/true, PasswordAccessorySheetDataBuilder( + passwords_empty_str(kExampleDomain)) + .Build())); + EXPECT_CALL(mock_manual_filling_controller_, + Hide(FillingSource::PASSWORD_FALLBACKS)); + controller()->RefreshSuggestionsForField( + url::Origin::Create(GURL(kExampleSite)), + /*is_fillable=*/true, + /*is_password_field=*/false, + /*is_manual_generation_available=*/true); +}
diff --git a/chrome/browser/password_manager/password_store_x_unittest.cc b/chrome/browser/password_manager/password_store_x_unittest.cc index 945d39e..246bd5a 100644 --- a/chrome/browser/password_manager/password_store_x_unittest.cc +++ b/chrome/browser/password_manager/password_store_x_unittest.cc
@@ -161,7 +161,7 @@ bool UpdateLogin(const PasswordForm& form, PasswordStoreChangeList* changes) override { for (size_t i = 0; i < all_forms_.size(); ++i) { - if (ArePasswordFormUniqueKeyEqual(all_forms_[i], form)) { + if (ArePasswordFormUniqueKeysEqual(all_forms_[i], form)) { all_forms_[i] = form; changes->push_back( PasswordStoreChange(PasswordStoreChange::UPDATE, form)); @@ -173,7 +173,7 @@ bool RemoveLogin(const PasswordForm& form, PasswordStoreChangeList* changes) override { for (size_t i = 0; i < all_forms_.size(); ++i) { - if (ArePasswordFormUniqueKeyEqual(all_forms_[i], form)) { + if (ArePasswordFormUniqueKeysEqual(all_forms_[i], form)) { changes->push_back( PasswordStoreChange(PasswordStoreChange::REMOVE, form)); erase(i--);
diff --git a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc index 0c8ffc7..7f6bdf3 100644 --- a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc +++ b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc
@@ -84,7 +84,7 @@ // Mark the page as idling. It should transition from kLoading directly // to kLoadedAndIdling after this. - frame_node->SetNetworkAlmostIdle(true); + frame_node->SetNetworkAlmostIdle(); proc_node->SetMainThreadTaskLoadIsLow(true); page_node->SetIsLoading(false); EXPECT_EQ(LIS::kLoadedAndIdling, page_data->load_idle_state_); @@ -100,7 +100,7 @@ // Go back to not idling. We should transition back to kLoadedNotIdling, and // a timer should still be running. - frame_node->SetNetworkAlmostIdle(false); + frame_node->OnNavigationCommitted(GURL(), false); EXPECT_EQ(LIS::kLoadedNotIdling, page_data->load_idle_state_); EXPECT_TRUE(page_data->idling_timer_.IsRunning()); @@ -115,7 +115,7 @@ EXPECT_FALSE(Data::GetForTesting(page_node)); } else { // Go back to idling. - frame_node->SetNetworkAlmostIdle(true); + frame_node->SetNetworkAlmostIdle(); EXPECT_EQ(LIS::kLoadedAndIdling, page_data->load_idle_state_); EXPECT_TRUE(page_data->idling_timer_.IsRunning()); @@ -131,7 +131,7 @@ // Firing other signals should not change the state at all. proc_node->SetMainThreadTaskLoadIsLow(false); EXPECT_FALSE(Data::GetForTesting(page_node)); - frame_node->SetNetworkAlmostIdle(false); + frame_node->OnNavigationCommitted(GURL(), false); EXPECT_FALSE(Data::GetForTesting(page_node)); // Post a navigation. The state should reset. @@ -181,7 +181,7 @@ EXPECT_FALSE(IsIdling(page_node)); // Should return true when network is idle. - frame_node->SetNetworkAlmostIdle(true); + frame_node->SetNetworkAlmostIdle(); EXPECT_TRUE(IsIdling(page_node)); // Should toggle with main thread task low. @@ -191,7 +191,7 @@ EXPECT_TRUE(IsIdling(page_node)); // Should return false when network is no longer idle. - frame_node->SetNetworkAlmostIdle(false); + frame_node->OnNavigationCommitted(GURL(), false); EXPECT_FALSE(IsIdling(page_node)); // And should stay false if main thread task also goes low again.
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.cc b/chrome/browser/performance_manager/graph/frame_node_impl.cc index b785bb8..ccb24a3 100644 --- a/chrome/browser/performance_manager/graph/frame_node_impl.cc +++ b/chrome/browser/performance_manager/graph/frame_node_impl.cc
@@ -48,8 +48,8 @@ binding_.Bind(std::move(request)); } -void FrameNodeImpl::SetNetworkAlmostIdle(bool network_almost_idle) { - network_almost_idle_.SetAndMaybeNotify(this, network_almost_idle); +void FrameNodeImpl::SetNetworkAlmostIdle() { + document_.network_almost_idle.SetAndMaybeNotify(this, true); } void FrameNodeImpl::SetLifecycleState( @@ -60,7 +60,7 @@ void FrameNodeImpl::SetHasNonEmptyBeforeUnload(bool has_nonempty_beforeunload) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - has_nonempty_beforeunload_ = has_nonempty_beforeunload; + document_.has_nonempty_beforeunload = has_nonempty_beforeunload; } void FrameNodeImpl::SetInterventionPolicy( @@ -133,12 +133,12 @@ bool FrameNodeImpl::has_nonempty_beforeunload() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return has_nonempty_beforeunload_; + return document_.has_nonempty_beforeunload; } const GURL& FrameNodeImpl::url() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return url_; + return document_.url; } bool FrameNodeImpl::is_current() const { @@ -148,7 +148,7 @@ bool FrameNodeImpl::network_almost_idle() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return network_almost_idle_.value(); + return document_.network_almost_idle.value(); } bool FrameNodeImpl::is_ad_frame() const { @@ -189,10 +189,10 @@ void FrameNodeImpl::OnNavigationCommitted(const GURL& url, bool same_document) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - url_ = url; - - if (same_document) + if (same_document) { + document_.url = url; return; + } // Close |binding_| to ensure that messages queued by the previous document // before the navigation commit are dropped. @@ -216,6 +216,9 @@ // before the interface provider is bound. A posts B to PM sequence and // C posts D to PM sequence, therefore B happens before D. binding_.Close(); + + // Reset properties. + document_.Reset(this, url); } bool FrameNodeImpl::AreAllInterventionPoliciesSet() const { @@ -335,4 +338,15 @@ return false; } +FrameNodeImpl::DocumentProperties::DocumentProperties() = default; +FrameNodeImpl::DocumentProperties::~DocumentProperties() = default; + +void FrameNodeImpl::DocumentProperties::Reset(FrameNodeImpl* frame_node, + const GURL& url_in) { + url = url_in; + has_nonempty_beforeunload = false; + // Network is busy on navigation. + network_almost_idle.SetAndMaybeNotify(frame_node, false); +} + } // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.h b/chrome/browser/performance_manager/graph/frame_node_impl.h index 67222ce..88dc109a 100644 --- a/chrome/browser/performance_manager/graph/frame_node_impl.h +++ b/chrome/browser/performance_manager/graph/frame_node_impl.h
@@ -64,7 +64,7 @@ resource_coordinator::mojom::DocumentCoordinationUnitRequest request); // resource_coordinator::mojom::DocumentCoordinationUnit implementation. - void SetNetworkAlmostIdle(bool idle) override; + void SetNetworkAlmostIdle() override; void SetLifecycleState( resource_coordinator::mojom::LifecycleState state) override; void SetHasNonEmptyBeforeUnload(bool has_nonempty_beforeunload) override; @@ -112,6 +112,24 @@ friend class PageNodeImpl; friend class ProcessNodeImpl; + // Properties associated with a Document, which are reset when a + // different-document navigation is committed in the frame. + struct DocumentProperties { + DocumentProperties(); + ~DocumentProperties(); + + void Reset(FrameNodeImpl* frame_node, const GURL& url_in); + + GURL url; + bool has_nonempty_beforeunload = false; + + // Network is considered almost idle when there are no more than 2 network + // connections. + ObservedProperty:: + NotifiesOnlyOnChanges<bool, &GraphObserver::OnNetworkAlmostIdleChanged> + network_almost_idle{false}; + }; + // Invoked by subframes on joining/leaving the graph. void AddChildFrame(FrameNodeImpl* frame_node); void RemoveChildFrame(FrameNodeImpl* frame_node); @@ -137,13 +155,13 @@ const base::UnguessableToken dev_tools_token_; base::flat_set<FrameNodeImpl*> child_frame_nodes_; + + // Does *not* change when a navigation is committed. ObservedProperty::NotifiesOnlyOnChanges< resource_coordinator::mojom::LifecycleState, &GraphObserver::OnLifecycleStateChanged> lifecycle_state_{resource_coordinator::mojom::LifecycleState::kRunning}; - bool has_nonempty_beforeunload_ = false; - GURL url_; // This is a one way switch. Once marked an ad-frame, always an ad-frame. bool is_ad_frame_ = false; @@ -151,20 +169,24 @@ &GraphObserver::OnIsCurrentChanged> is_current_{false}; - // Network is considered almost idle when there are no more than 2 network - // connections. - ObservedProperty:: - NotifiesOnlyOnChanges<bool, &GraphObserver::OnNetworkAlmostIdleChanged> - network_almost_idle_{false}; - // Intervention policy for this frame. These are communicated from the // renderer process and are controlled by origin trials. + // + // TODO(fdoray): Adapt aggregation logic in PageNodeImpl to allow moving this + // to DocumentProperties. resource_coordinator::mojom::InterventionPolicy intervention_policy_[static_cast<size_t>( resource_coordinator::mojom:: PolicyControlledIntervention::kMaxValue) + 1]; + // Properties associated with a Document, which are reset when a + // different-document navigation is committed in the frame. + // + // TODO(fdoray): Cleanup this once there is a 1:1 mapping between + // RenderFrameHost and Document https://crbug.com/936696. + DocumentProperties document_; + DISALLOW_COPY_AND_ASSIGN(FrameNodeImpl); };
diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.cc b/chrome/browser/push_messaging/push_messaging_service_impl.cc index 33ce6a8e..7e5c7d4 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.cc +++ b/chrome/browser/push_messaging/push_messaging_service_impl.cc
@@ -4,6 +4,8 @@ #include "chrome/browser/push_messaging/push_messaging_service_impl.h" +#include <map> +#include <sstream> #include <vector> #include "base/barrier_closure.h" @@ -46,6 +48,7 @@ #include "components/rappor/public/rappor_utils.h" #include "components/rappor/rappor_service_impl.h" #include "content/public/browser/browser_context.h" +#include "content/public/browser/devtools_background_services_context.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/service_worker_context.h" @@ -128,6 +131,29 @@ std::move(closure).Run(); } +void LogMessageReceivedEventToDevTools( + content::DevToolsBackgroundServicesContext* devtools_context, + const PushMessagingAppIdentifier& app_identifier, + const std::string& message_id, + bool was_encrypted, + const std::string& error_message) { + if (!devtools_context) + return; + + std::map<std::string, std::string> event_metadata = { + {"Success", error_message.empty() ? "Yes" : "No"}, + {"Was Encrypted", was_encrypted ? "Yes" : "No"}}; + + if (!error_message.empty()) + event_metadata["Error Reason"] = error_message; + + devtools_context->LogBackgroundServiceEvent( + app_identifier.service_worker_registration_id(), + url::Origin::Create(app_identifier.origin()), + content::DevToolsBackgroundService::kPushMessaging, + "Push message received" /* event_name */, message_id, event_metadata); +} + } // namespace // static @@ -252,6 +278,12 @@ blink::mojom::PushDeliveryStatus::UNKNOWN_APP_ID); return; } + + LogMessageReceivedEventToDevTools(GetDevToolsContext(app_identifier.origin()), + app_identifier, message.message_id, + /* was_encrypted= */ message.decrypted, + std::string() /* error_message */); + // Drop message and unregister if |origin| has lost push permission. if (!IsPermissionSet(app_identifier.origin())) { DeliverMessageCallback(app_id, app_identifier.origin(), @@ -274,7 +306,8 @@ // Dispatch the message to the appropriate Service Worker. content::BrowserContext::DeliverPushMessage( profile_, app_identifier.origin(), - app_identifier.service_worker_registration_id(), payload, + app_identifier.service_worker_registration_id(), message.message_id, + payload, base::Bind(&PushMessagingServiceImpl::DeliverMessageCallback, weak_factory_.GetWeakPtr(), app_identifier.app_id(), app_identifier.origin(), @@ -302,7 +335,7 @@ base::RepeatingClosure completion_closure = base::BindRepeating( &PushMessagingServiceImpl::DidHandleMessage, weak_factory_.GetWeakPtr(), - app_id, message_handled_closure, + app_id, message.message_id, message_handled_closure, false /* did_show_generic_notification */); // The |completion_closure| should run by default at the end of this function, // unless it is explicitly passed to another function or disabled. @@ -333,7 +366,7 @@ requesting_origin, service_worker_registration_id, base::BindOnce(&PushMessagingServiceImpl::DidHandleMessage, weak_factory_.GetWeakPtr(), app_id, - message_handled_closure)); + message.message_id, message_handled_closure)); // Disable the default completion closure. completion_closure_runner.ReplaceClosure(base::DoNothing()); } @@ -367,11 +400,26 @@ app_id, message.sender_id, base::BindOnce(&UnregisterCallbackToClosure, completion_closure_runner.Release())); + + if (app_identifier.is_null()) + return; + + if (auto* devtools_context = GetDevToolsContext(app_identifier.origin())) { + std::stringstream ss; + ss << unsubscribe_reason; + devtools_context->LogBackgroundServiceEvent( + app_identifier.service_worker_registration_id(), + url::Origin::Create(app_identifier.origin()), + content::DevToolsBackgroundService::kPushMessaging, + "Unsubscribed due to error" /* event_name */, message.message_id, + {{"Reason", ss.str()}}); + } } } void PushMessagingServiceImpl::DidHandleMessage( const std::string& app_id, + const std::string& push_message_id, const base::RepeatingClosure& message_handled_closure, bool did_show_generic_notification) { auto in_flight_iterator = in_flight_message_deliveries_.find(app_id); @@ -393,6 +441,21 @@ chrome::android::Java_PushMessagingServiceObserver_onMessageHandled( base::android::AttachCurrentThread()); #endif + + PushMessagingAppIdentifier app_identifier = + PushMessagingAppIdentifier::FindByAppId(profile_, app_id); + + if (app_identifier.is_null() || !did_show_generic_notification) + return; + + if (auto* devtools_context = GetDevToolsContext(app_identifier.origin())) { + devtools_context->LogBackgroundServiceEvent( + app_identifier.service_worker_registration_id(), + url::Origin::Create(app_identifier.origin()), + content::DevToolsBackgroundService::kPushMessaging, + "Generic notification shown" /* event_name */, push_message_id, + {} /* event_metadata */); + } } void PushMessagingServiceImpl::SetMessageCallbackForTesting( @@ -422,7 +485,17 @@ void PushMessagingServiceImpl::OnMessageDecryptionFailed( const std::string& app_id, const std::string& message_id, - const std::string& error_message) {} + const std::string& error_message) { + PushMessagingAppIdentifier app_identifier = + PushMessagingAppIdentifier::FindByAppId(profile_, app_id); + + if (app_identifier.is_null()) + return; + + LogMessageReceivedEventToDevTools(GetDevToolsContext(app_identifier.origin()), + app_identifier, message_id, + /* was_encrypted= */ true, error_message); +} // GetEndpoint method ---------------------------------------------------------- @@ -1072,3 +1145,21 @@ CHECK(instance_id_profile_service->driver()); return instance_id_profile_service->driver(); } + +content::DevToolsBackgroundServicesContext* +PushMessagingServiceImpl::GetDevToolsContext(const GURL& origin) const { + auto* storage_partition = + content::BrowserContext::GetStoragePartitionForSite(profile_, origin); + if (!storage_partition) + return nullptr; + + auto* devtools_context = + storage_partition->GetDevToolsBackgroundServicesContext(); + + if (!devtools_context->IsRecording( + content::DevToolsBackgroundService::kPushMessaging)) { + return nullptr; + } + + return devtools_context; +}
diff --git a/chrome/browser/push_messaging/push_messaging_service_impl.h b/chrome/browser/push_messaging/push_messaging_service_impl.h index 3cbc3947..9e75f64a 100644 --- a/chrome/browser/push_messaging/push_messaging_service_impl.h +++ b/chrome/browser/push_messaging/push_messaging_service_impl.h
@@ -31,6 +31,7 @@ #include "content/public/browser/notification_registrar.h" #include "content/public/browser/push_messaging_service.h" +class GURL; class Profile; class PushMessagingAppIdentifier; class PushMessagingServiceTest; @@ -45,12 +46,17 @@ struct WebPushSubscriptionOptions; } // namespace blink +namespace content { +class DevToolsBackgroundServicesContext; +} // namespace content + namespace gcm { class GCMDriver; -} +} // namespace gcm + namespace instance_id { class InstanceIDDriver; -} +} // namespace instance_id class PushMessagingServiceImpl : public content::PushMessagingService, public gcm::GCMAppHandler, @@ -155,6 +161,7 @@ blink::mojom::PushDeliveryStatus status); void DidHandleMessage(const std::string& app_id, + const std::string& push_message_id, const base::RepeatingClosure& completion_closure, bool did_show_generic_notification); @@ -252,6 +259,9 @@ instance_id::InstanceIDDriver* GetInstanceIDDriver() const; + content::DevToolsBackgroundServicesContext* GetDevToolsContext( + const GURL& origin) const; + // Testing methods ----------------------------------------------------------- // Callback to be invoked when a message has been dispatched. Enables tests to
diff --git a/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm b/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm index d31c14f0..acea663 100644 --- a/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm +++ b/chrome/browser/renderer_host/chrome_render_widget_host_view_mac_history_swiper.mm
@@ -129,7 +129,7 @@ case blink::WebInputEvent::kGestureScrollBegin: if (event.data.scroll_begin.synthetic || event.data.scroll_begin.inertial_phase == - blink::WebGestureEvent::kMomentumPhase) { + blink::WebGestureEvent::InertialPhaseState::kMomentum) { return; } // GestureScrollBegin and GestureScrollEnd events are created to wrap
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index ccfd3ee..9b4adc9 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -175,6 +175,39 @@ ] output_dir = "$root_gen_dir/chrome" } + + grit("downloads_resources") { + if (optimize_webui) { + source = "downloads/downloads_resources_vulcanized.grd" + + deps = [ + "//chrome/browser/resources/downloads:build", + ] + } else { + source = "downloads/downloads_resources.grd" + + deps = [ + "//chrome/browser/ui/webui/downloads:mojo_bindings_js", + ] + } + + # The .grd contains references to generated files. + source_is_generated = true + + grit_flags = [ + "-E", + "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), + ] + + defines = chrome_grit_defines + outputs = [ + "grit/downloads_resources.h", + "grit/downloads_resources_map.cc", + "grit/downloads_resources_map.h", + "downloads_resources.pak", + ] + output_dir = "$root_gen_dir/chrome" + } } if (is_chromeos) {
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs index 952eeb28..eac7922 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
@@ -1242,7 +1242,9 @@ }); }); -TEST_F('ChromeVoxBackgroundTest', 'ListItem', function() { +// Timeout on ChromeOS with LayoutNG & Viz. +// https://crbug.com/959261 +TEST_F('ChromeVoxBackgroundTest', 'DISABLED_ListItem', function() { this.resetContextualOutput(); var mockFeedback = this.createMockFeedback(); this.runWithLoadedTree(function(root) {/*!
diff --git a/chrome/browser/resources/component_extension_resources.grd b/chrome/browser/resources/component_extension_resources.grd index 8106070a..0afd6c47 100644 --- a/chrome/browser/resources/component_extension_resources.grd +++ b/chrome/browser/resources/component_extension_resources.grd
@@ -6,8 +6,8 @@ <output filename="grit/component_extension_resources.h" type="rc_header"> <emit emit_type='prepend'></emit> </output> - <output filename="grit/component_extension_resources_map.cc" type="gzipped_resource_file_map_source" /> - <output filename="grit/component_extension_resources_map.h" type="gzipped_resource_map_header" /> + <output filename="grit/component_extension_resources_map.cc" type="resource_file_map_source" /> + <output filename="grit/component_extension_resources_map.h" type="resource_map_header" /> <output filename="component_extension_resources.pak" type="data_package" /> </outputs> <release seq="1">
diff --git a/chrome/browser/resources/downloads/BUILD.gn b/chrome/browser/resources/downloads/BUILD.gn index bd28ff0..ceb9f736 100644 --- a/chrome/browser/resources/downloads/BUILD.gn +++ b/chrome/browser/resources/downloads/BUILD.gn
@@ -2,21 +2,63 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//chrome/common/features.gni") import("//third_party/closure_compiler/compile_js.gni") +import("//tools/grit/grit_rule.gni") import("../optimize_webui.gni") -optimize_webui("build") { - deps = [] - host = "downloads" - html_in_files = [ "downloads.html" ] - html_out_files = [ "vulcanized.html" ] - input = rebase_path(".", root_build_dir) - insert_in_head = "<base href=chrome://downloads>" - js_out_files = [ "crisper.js" ] - excludes = [ - "chrome://resources/js/mojo_bindings_lite.js", - "chrome://downloads/downloads.mojom-lite.js", - ] +if (optimize_webui) { + downloads_pak_file = "downloads_resources.pak" + unpak_folder = "downloads_resources.unpak" + + optimize_webui("build") { + host = "downloads" + html_in_files = [ "downloads.html" ] + html_out_files = [ "vulcanized.html" ] + insert_in_head = "<base href=chrome://downloads>" + input = rebase_path("$target_gen_dir/$unpak_folder", root_build_dir) + js_out_files = [ "crisper.js" ] + excludes = [ + "chrome://resources/js/mojo_bindings_lite.js", + "chrome://downloads/downloads.mojom-lite.js", + ] + + deps = [ + ":unpak", + ] + } + + unpak("unpak") { + pak_file = downloads_pak_file + out_folder = unpak_folder + + deps = [ + ":flattened_resources", + ] + } + + grit("flattened_resources") { + source = "downloads_resources.grd" + + # The .grd contains references to generated files. + source_is_generated = true + + defines = chrome_grit_defines + outputs = [ + "grit/downloads_resources.h", + "grit/downloads_resources_map.cc", + "grit/downloads_resources_map.h", + downloads_pak_file, + ] + deps = [ + "//chrome/browser/ui/webui/downloads:mojo_bindings_js", + ] + grit_flags = [ + "-E", + "root_gen_dir=" + rebase_path(root_gen_dir, root_build_dir), + ] + output_dir = "$root_gen_dir/chrome/browser/resources/downloads" + } } js_type_check("closure_compile") {
diff --git a/chrome/browser/resources/downloads/downloads_resources.grd b/chrome/browser/resources/downloads/downloads_resources.grd new file mode 100644 index 0000000..ba9c485 --- /dev/null +++ b/chrome/browser/resources/downloads/downloads_resources.grd
@@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> + <outputs> + <output filename="grit/downloads_resources.h" type="rc_header"> + <emit emit_type='prepend'></emit> + </output> + <output filename="grit/downloads_resources_map.cc" + type="resource_file_map_source" /> + <output filename="grit/downloads_resources_map.h" + type="resource_map_header" /> + <output filename="downloads_resources.pak" type="data_package" /> + </outputs> + <release seq="1"> + <includes> + <include name="IDR_DOWNLOADS_IMAGES_INCOGNITO_MARKER_SVG" + file="images\incognito_marker.svg" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_IMAGES_NO_DOWNLOADS_SVG" + file="images\no_downloads.svg" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_MOJO_LITE_JS" + file="${root_gen_dir}\chrome\browser\ui\webui\downloads\downloads.mojom-lite.js" + use_base_dir="false" + type="BINDATA" /> + </includes> + <structures> + <structure name="IDR_DOWNLOADS_DOWNLOADS_HTML" + file="downloads.html" + preprocess="true" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_BROWSER_PROXY_HTML" + file="browser_proxy.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_BROWSER_PROXY_JS" + file="browser_proxy.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_CONSTANTS_HTML" + file="constants.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_CONSTANTS_JS" + file="constants.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_DOWNLOADS_JS" + file="downloads.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_I18N_SETUP_HTML" + file="i18n_setup.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_ICON_LOADER_HTML" + file="icon_loader.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_ICON_LOADER_JS" + file="icon_loader.js" type="chrome_html" /> + <structure name="IDR_DOWNLOADS_ICONS_HTML" + file="icons.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_ITEM_HTML" + file="item.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_ITEM_JS" + file="item.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_MANAGER_HTML" + file="manager.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_MANAGER_JS" + file="manager.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_SEARCH_SERVICE_HTML" + file="search_service.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_SEARCH_SERVICE_JS" + file="search_service.js" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_TOOLBAR_HTML" + file="toolbar.html" + type="chrome_html" /> + <structure name="IDR_DOWNLOADS_TOOLBAR_JS" + file="toolbar.js" + type="chrome_html" /> + </structures> + </release> +</grit>
diff --git a/chrome/browser/resources/downloads/downloads_resources_vulcanized.grd b/chrome/browser/resources/downloads/downloads_resources_vulcanized.grd new file mode 100644 index 0000000..71179dc --- /dev/null +++ b/chrome/browser/resources/downloads/downloads_resources_vulcanized.grd
@@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> + <outputs> + <output filename="grit/downloads_resources.h" type="rc_header"> + <emit emit_type='prepend'></emit> + </output> + <output filename="grit/downloads_resources_map.cc" + type="resource_map_source" /> + <output filename="grit/downloads_resources_map.h" + type="resource_map_header" /> + <output filename="downloads_resources.pak" type="data_package" /> + </outputs> + <release seq="1"> + <includes> + <include name="IDR_DOWNLOADS_IMAGES_INCOGNITO_MARKER_SVG" + file="images\incognito_marker.svg" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_IMAGES_NO_DOWNLOADS_SVG" + file="images\no_downloads.svg" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_MOJO_LITE_JS" + file="${root_gen_dir}\chrome\browser\ui\webui\downloads\downloads.mojom-lite.js" + use_base_dir="false" + compress="gzip" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_VULCANIZED_HTML" + file="${root_gen_dir}\chrome\browser\resources\downloads\vulcanized.html" + use_base_dir="false" + preprocess="true" + compress="gzip" + type="BINDATA" /> + <include name="IDR_DOWNLOADS_CRISPER_JS" + file="${root_gen_dir}\chrome\browser\resources\downloads\crisper.js" + use_base_dir="false" + preprocess="true" + compress="gzip" + type="BINDATA" /> + </includes> + </release> +</grit>
diff --git a/chrome/browser/resources/kiosk_next_internal_resources.grd b/chrome/browser/resources/kiosk_next_internal_resources.grd index f90c89f..6418df00 100644 --- a/chrome/browser/resources/kiosk_next_internal_resources.grd +++ b/chrome/browser/resources/kiosk_next_internal_resources.grd
@@ -4,8 +4,8 @@ <output filename="grit/kiosk_next_internal_resources.h" type="rc_header"> <emit emit_type='prepend'></emit> </output> - <output filename="grit/kiosk_next_internal_resources_map.cc" type="gzipped_resource_file_map_source" /> - <output filename="grit/kiosk_next_internal_resources_map.h" type="gzipped_resource_map_header" /> + <output filename="grit/kiosk_next_internal_resources_map.cc" type="resource_file_map_source" /> + <output filename="grit/kiosk_next_internal_resources_map.h" type="resource_map_header" /> <output filename="kiosk_next_internal_resources.pak" type="data_package" /> </outputs> <release seq="1">
diff --git a/chrome/browser/resources/local_ntp/custom_backgrounds.js b/chrome/browser/resources/local_ntp/custom_backgrounds.js index 196d9a4..4423cf6 100644 --- a/chrome/browser/resources/local_ntp/custom_backgrounds.js +++ b/chrome/browser/resources/local_ntp/custom_backgrounds.js
@@ -94,6 +94,7 @@ EDIT_BG_TEXT: 'edit-bg-text', MENU_BACK: 'menu-back', MENU_CANCEL: 'menu-cancel', + MENU_DONE: 'menu-done', MENU_TITLE: 'menu-title', LINK_ICON: 'link-icon', MENU: 'bg-sel-menu', @@ -129,6 +130,7 @@ OPTION_DISABLED: 'bg-option-disabled', // The menu option is disabled. MENU_SHOWN: 'menu-shown', MOUSE_NAV: 'using-mouse-nav', + SELECTED: 'selected', SELECTED_BORDER: 'selected-border', SELECTED_CHECK: 'selected-check', SELECTED_CIRCLE: 'selected-circle', @@ -217,6 +219,7 @@ $(customBackgrounds.IDS.EDIT_BG_DIVIDER).hidden = false; $(customBackgrounds.IDS.CUSTOM_LINKS_RESTORE_DEFAULT).hidden = configData.hideShortcuts; + $(customBackgrounds.IDS.COLORS_BUTTON).hidden = !configData.chromeColors; }; /** @@ -310,6 +313,11 @@ menu.classList.toggle(customBackgrounds.CLASSES.ON_IMAGE_MENU, false); backgroundMenu.classList.toggle( customBackgrounds.CLASSES.MENU_SHOWN, showMenu); + + // Reset done button state. + $(customBackgrounds.IDS.MENU_DONE).disabled = true; + customBackgrounds.selectedTile = null; + $(customBackgrounds.IDS.MENU_DONE).tabIndex = -1; }; /* Close the collection selection dialog and cleanup the state @@ -536,6 +544,43 @@ }; /** + * Apply styling to a selected tile in the richer picker and enable the done + * button. + * @param {!Element} tile The tile to apply styling to. + */ +customBackgrounds.selectTile = function(tile) { + tile.parentElement.classList.toggle(customBackgrounds.CLASSES.SELECTED, true); + $(customBackgrounds.IDS.MENU_DONE).disabled = false; + customBackgrounds.selectedTile = tile; + $(customBackgrounds.IDS.MENU_DONE).tabIndex = 0; + + // Create and append selected check. + const selectedCircle = document.createElement('div'); + const selectedCheck = document.createElement('div'); + selectedCircle.classList.add(customBackgrounds.CLASSES.SELECTED_CIRCLE); + selectedCheck.classList.add(customBackgrounds.CLASSES.SELECTED_CHECK); + selectedCircle.appendChild(selectedCheck); + tile.appendChild(selectedCircle); +}; + +/** + * Remove styling from a selected tile in the richer picker and disable the + * done button. + * @param {!Element} tile The tile to remove styling from. + */ +customBackgrounds.deselectTile = function(tile) { + tile.parentElement.classList.toggle( + customBackgrounds.CLASSES.SELECTED, false); + $(customBackgrounds.IDS.MENU_DONE).disabled = true; + customBackgrounds.selectedTile = null; + $(customBackgrounds.IDS.MENU_DONE).tabIndex = -1; + + // Remove selected check. + tile.innerHTML = ''; +}; + + +/** * Apply border and checkmark when a tile is selected * @param {!Element} tile The tile to apply styling to. */ @@ -636,15 +681,27 @@ const tileInteraction = function(tile) { if (customBackgrounds.selectedTile) { - customBackgrounds.removeSelectedState(customBackgrounds.selectedTile); - if (customBackgrounds.selectedTile.id === tile.id) { - customBackgrounds.unselectTile(); - return ; + if (configData.richerPicker) { + const id = customBackgrounds.selectedTile.id; + customBackgrounds.deselectTile(customBackgrounds.selectedTile); + if (id === tile.id) { + return; + } + } else { + customBackgrounds.removeSelectedState(customBackgrounds.selectedTile); + if (customBackgrounds.selectedTile.id === tile.id) { + customBackgrounds.unselectTile(); + return; + } } } - customBackgrounds.selectedTile = tile; - customBackgrounds.applySelectedState(tile); + if (configData.richerPicker) { + customBackgrounds.selectTile(tile); + } else { + customBackgrounds.applySelectedState(tile); + customBackgrounds.selectedTile = tile; + } $(customBackgrounds.IDS.DONE).tabIndex = 0; @@ -877,6 +934,7 @@ $(customBackgrounds.IDS.MENU_CANCEL).onclick = function(event) { $(customBackgrounds.IDS.CUSTOMIZATION_MENU).close(); + customBackgrounds.resetImageMenu(false); };
diff --git a/chrome/browser/resources/local_ntp/externs.js b/chrome/browser/resources/local_ntp/externs.js index f5e69bbb..60cd9a2d 100644 --- a/chrome/browser/resources/local_ntp/externs.js +++ b/chrome/browser/resources/local_ntp/externs.js
@@ -33,7 +33,8 @@ * removeFakebox: boolean, * alternateFakebox: boolean, * fakeboxSearchIcon: boolean, - * hideShortcuts: boolean}} + * hideShortcuts: boolean, + * chromeColors: boolean}} */ let configData;
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css index 221d0a9aa..66c1d63 100644 --- a/chrome/browser/resources/local_ntp/local_ntp.css +++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -1008,6 +1008,20 @@ margin-bottom: 8px; } +#backgrounds-image-menu .bg-sel-tile-bg.selected { + background-color: rgba(var(--GB900-rgb), .08); +} + +#backgrounds-image-menu .bg-sel-tile-bg.selected .bg-sel-tile { + height: 144px; + margin: 16px 16px 0 16px; + width: 144px; +} + +#backgrounds-image-menu .bg-sel-tile-bg.selected .bg-sel-tile:focus { + outline: none; +} + #backgrounds-menu .bg-sel-tile, #backgrounds-image-menu .bg-sel-tile { background-position: center; @@ -1025,7 +1039,7 @@ #backgrounds-default.bg-sel-tile-bg { background-color: white; - border: 1px solid black; + border: 1px solid rgb(var(--GG300-rgb)); height: 174px; margin-inline-end: 6px; width: 174px; @@ -1033,7 +1047,7 @@ #backgrounds-upload.bg-sel-tile-bg { background-color: white; - border: 1px solid black; + border: 1px solid rgb(var(--GG300-rgb)); height: 174px; margin-inline-end: 6px; vertical-align: top; @@ -1064,3 +1078,47 @@ margin-inline-start: 212px; visibility: visible; } + +#backgrounds-upload-icon { + -webkit-mask-image: url(icons/upload.svg); + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: 100%; + background: 32px 24px rgb(var(--GG700-rgb)); + height: 32px; + margin-bottom: 8px; + margin-inline-start: 72px; + margin-top: 61px; + width: 32px; +} + +#backgrounds-upload-text { + color: rgb(var(--GG700-rgb)); + text-align: center; + width: 100%; +} + +.bg-sel-tile .selected-circle { + height: 20px; + left: initial; + right: 10px; + top: 10px; + width: 20px; +} + +html[dir=rtl] .bg-sel-tile .selected-circle { + left: 10px; + right: initial; +} + +.bg-sel-tile .selected-check { + height: 24px; + left: initial; + right: 0; + top: 0; + width: 24px; +} + +html[dir=rtl] .bg-sel-tile .selected-check { + left: 0; + right: initial; +}
diff --git a/chrome/browser/resources/local_ntp/local_ntp.html b/chrome/browser/resources/local_ntp/local_ntp.html index 02b33e5..4ee4de4d 100644 --- a/chrome/browser/resources/local_ntp/local_ntp.html +++ b/chrome/browser/resources/local_ntp/local_ntp.html
@@ -200,7 +200,10 @@ </div> <div id="menu-contents"> <div id="backgrounds-menu" class="menu-panel"> - <div id="backgrounds-upload" class="bg-sel-tile-bg">Upload an image</div> + <div id="backgrounds-upload" class="bg-sel-tile-bg"> + <div id="backgrounds-upload-icon"></div> + <div id="backgrounds-upload-text">$i18n{uploadImage}</div> + </div> <div id="backgrounds-default" class="bg-sel-tile-bg"> <div class="bg-sel-tile-title">Default</div> </div>
diff --git a/chrome/browser/resources/omnibox/omnibox_output.js b/chrome/browser/resources/omnibox/omnibox_output.js index 2d8cee79..48c19794 100644 --- a/chrome/browser/resources/omnibox/omnibox_output.js +++ b/chrome/browser/resources/omnibox/omnibox_output.js
@@ -113,6 +113,7 @@ this.$$('#contents').appendChild(resultsGroup); this.updateVisibility_(); + this.updateEliding_(); this.updateFilterHighlights_(); }
diff --git a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html index 395f0453..6277b01 100644 --- a/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html +++ b/chrome/browser/resources/settings/a11y_page/manage_a11y_page.html
@@ -10,7 +10,6 @@ <link rel="import" href="../i18n_setup.html"> <link rel="import" href="../route.html"> <link rel="import" href="../settings_shared_css.html"> -<link rel="import" href="tts_subpage.html"> <dom-module id="settings-manage-a11y-page"> <template>
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 2a1b1036..b6e3dd5 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -64,6 +64,7 @@ deps = [ "os_people_page:closure_compile", "os_privacy_page:closure_compile", + "os_search_page:closure_compile", "os_settings_main:closure_compile", "os_settings_menu:closure_compile", "os_settings_page:closure_compile",
diff --git a/chrome/browser/resources/settings/chromeos/os_search_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_search_page/BUILD.gn new file mode 100644 index 0000000..53fc8b56 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/os_search_page/BUILD.gn
@@ -0,0 +1,22 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//third_party/closure_compiler/compile_js.gni") + +js_type_check("closure_compile") { + deps = [ + ":os_search_page", + ] +} + +js_library("os_search_page") { + deps = [ + "../..:route", + "../../prefs", + "../../search_engines_page:search_engines_browser_proxy", + "../../settings_page:settings_animated_pages", + "//ui/webui/resources/js:cr", + "//ui/webui/resources/js:i18n_behavior", + ] +}
diff --git a/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.html b/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.html new file mode 100644 index 0000000..42c05796 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.html
@@ -0,0 +1,103 @@ +<link rel="import" href="chrome://resources/html/polymer.html"> + +<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html"> +<link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html"> +<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> +<link rel="import" href="chrome://resources/html/assert.html"> +<link rel="import" href="chrome://resources/html/i18n_behavior.html"> +<link rel="import" href="chrome://resources/html/md_select_css.html"> +<link rel="import" href="../../controls/extension_controlled_indicator.html"> +<link rel="import" href="../../google_assistant_page/google_assistant_page.html"> +<link rel="import" href="../../google_assistant_page/google_assistant_browser_proxy.html"> +<link rel="import" href="../../icons.html"> +<link rel="import" href="../../i18n_setup.html"> +<link rel="import" href="../../route.html"> +<link rel="import" href="../../search_engines_page/search_engines_browser_proxy.html"> +<link rel="import" href="../../settings_page/settings_animated_pages.html"> +<link rel="import" href="../../settings_page/settings_subpage.html"> +<link rel="import" href="../../settings_shared_css.html"> +<link rel="import" href="../../settings_vars_css.html"> + +<dom-module id="os-settings-search-page"> + <template> + <style include="settings-shared md-select"> + #search-wrapper { + align-items: center; + display: flex; + min-height: var(--settings-row-min-height); + } + + iron-icon { + padding-inline-end: 16px; + } + </style> + <settings-animated-pages id="pages" section="search" + focus-config="[[focusConfig_]]"> + <div route-path="default"> + <!-- Omnibox and launcher search engine. This shares the same pref with + browser search engine because users probably don't want one engine + in the omnibox and a different one in the launcher. --> + <div class="settings-box first block"> + <div id="search-wrapper"> + <div id="searchExplanation" class="start"> + $i18nRaw{searchExplanation} + </div> + <template is="dom-if" if="[[isDefaultSearchControlledByPolicy_( + prefs.default_search_provider_data.template_url_data)]]"> + <cr-policy-pref-indicator pref="[[ + prefs.default_search_provider_data.template_url_data]]"> + </cr-policy-pref-indicator> + </template> + <select class="md-select" on-change="onChange_" + aria-labelledby="searchExplanation" + disabled$="[[isDefaultSearchEngineEnforced_( + prefs.default_search_provider_data.template_url_data)]]"> + <template is="dom-repeat" items="[[searchEngines_]]"> + <option selected="[[item.default]]">[[item.name]]</option> + </template> + </select> + </div> + <template is="dom-if" + if="[[prefs.default_search_provider_data.template_url_data.extensionId]]"> + <extension-controlled-indicator + extension-id="[[ + prefs.default_search_provider_data.template_url_data.extensionId]]" + extension-name="[[ + prefs.default_search_provider_data.template_url_data.controlledByName]]" + extension-can-be-disabled="[[ + prefs.default_search_provider_data.template_url_data.extensionCanBeDisabled]]" + on-disable-extension="onDisableExtension_"> + </extension-controlled-indicator> + </template> + </div> + + <!-- Google Assistant --> + <template is="dom-if" if="[[isAssistantAllowed_]]"> + <div id="assistant-subpage-trigger" class="settings-box two-line" + on-click="onGoogleAssistantTap_" actionable> + <div class="start"> + $i18n{searchGoogleAssistant} + <div class="secondary"> + [[getAssistantEnabledDisabledLabel_( + prefs.settings.voice_interaction.enabled.value)]] + </div> + </div> + <cr-icon-button class="subpage-arrow" + aria-label="$i18n{searchGoogleAssistant}"></cr-icon-button> + </div> + </template> + </div> + <template is="dom-if" if="[[isAssistantAllowed_]]"> + <template is="dom-if" route-path="/googleAssistant"> + <settings-subpage + associated-control="[[$$('#assistant-subpage-trigger')]]" + page-title="$i18n{googleAssistantPageTitle}"> + <settings-google-assistant-page prefs="{{prefs}}"> + </settings-google-assistant-page> + </settings-subpage> + </template> + </template> + </settings-animated-pages> + </template> + <script src="os_search_page.js"></script> +</dom-module>
diff --git a/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.js b/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.js new file mode 100644 index 0000000..7d5e348 --- /dev/null +++ b/chrome/browser/resources/settings/chromeos/os_search_page/os_search_page.js
@@ -0,0 +1,113 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview + * 'os-settings-search-page' contains search and assistant settings. + */ +Polymer({ + is: 'os-settings-search-page', + + behaviors: [I18nBehavior], + + properties: { + prefs: Object, + + /** + * List of default search engines available. + * @private {!Array<!SearchEngine>} + */ + searchEngines_: { + type: Array, + value: function() { + return []; + } + }, + + /** @private Filter applied to search engines. */ + searchEnginesFilter_: String, + + /** @type {?Map<string, string>} */ + focusConfig_: Object, + + /** @private Can be disallowed due to flag, policy, locale, etc. */ + isAssistantAllowed_: { + type: Boolean, + value: function() { + return loadTimeData.getBoolean('isAssistantAllowed'); + }, + }, + }, + + /** @private {?settings.SearchEnginesBrowserProxy} */ + browserProxy_: null, + + /** @override */ + created: function() { + this.browserProxy_ = settings.SearchEnginesBrowserProxyImpl.getInstance(); + }, + + /** @override */ + ready: function() { + const updateSearchEngines = searchEngines => { + this.set('searchEngines_', searchEngines.defaults); + }; + this.browserProxy_.getSearchEnginesList().then(updateSearchEngines); + cr.addWebUIListener('search-engines-changed', updateSearchEngines); + + this.focusConfig_ = new Map(); + if (settings.routes.GOOGLE_ASSISTANT) { + this.focusConfig_.set( + settings.routes.GOOGLE_ASSISTANT.path, + '#assistant-subpage-trigger .subpage-arrow'); + } + }, + + /** @private */ + onChange_: function() { + const select = /** @type {!HTMLSelectElement} */ (this.$$('select')); + const searchEngine = this.searchEngines_[select.selectedIndex]; + this.browserProxy_.setDefaultSearchEngine(searchEngine.modelIndex); + }, + + /** @private */ + onDisableExtension_: function() { + this.fire('refresh-pref', 'default_search_provider.enabled'); + }, + + /** @private */ + onGoogleAssistantTap_: function() { + assert(this.isAssistantAllowed_); + settings.navigateTo(settings.routes.GOOGLE_ASSISTANT); + }, + + /** + * @param {boolean} toggleValue + * @return {string} + * @private + */ + getAssistantEnabledDisabledLabel_: function(toggleValue) { + return this.i18n( + toggleValue ? 'searchGoogleAssistantEnabled' : + 'searchGoogleAssistantDisabled'); + }, + + /** + * @param {!chrome.settingsPrivate.PrefObject} pref + * @return {boolean} + * @private + */ + isDefaultSearchControlledByPolicy_: function(pref) { + return pref.controlledBy == chrome.settingsPrivate.ControlledBy.USER_POLICY; + }, + + /** + * @param {!chrome.settingsPrivate.PrefObject} pref + * @return {boolean} + * @private + */ + isDefaultSearchEngineEnforced_: function(pref) { + return pref.enforcement == chrome.settingsPrivate.Enforcement.ENFORCED; + }, +});
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html index d3b3607..5854d29 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html +++ b/chrome/browser/resources/settings/chromeos/os_settings_menu/os_settings_menu.html
@@ -115,7 +115,7 @@ </a> <a href="/search"> <iron-icon icon="cr:search"></iron-icon> - $i18n{searchPageTitle} + $i18n{osSearchPageTitle} </a> <a href="/apps" hidden="[[!showApps]]"> <!-- TODO(crbug.com/960631) change icon once created. -->
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html index e91e9079..0405d34 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html +++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
@@ -4,11 +4,11 @@ <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> <link rel="import" href="../os_people_page/os_people_page.html"> +<link rel="import" href="../os_search_page/os_search_page.html"> <link rel="import" href="../personalization_page/personalization_page.html"> <link rel="import" href="../../change_password_page/change_password_page.html"> <link rel="import" href="../../controls/settings_idle_load.html"> <link rel="import" href="../../reset_page/reset_profile_banner.html"> -<link rel="import" href="../../search_page/search_page.html"> <link rel="import" href="../../settings_page/main_page_behavior.html"> <link rel="import" href="../../settings_page/settings_section.html"> <link rel="import" href="../../settings_page_css.html"> @@ -149,9 +149,10 @@ </settings-section> </template> <template is="dom-if" if="[[showPage_(pageVisibility.search)]]" restamp> - <settings-section page-title="$i18n{searchPageTitle}" + <settings-section page-title="$i18n{osSearchPageTitle}" section="search"> - <settings-search-page prefs="{{prefs}}"></settings-search-page> + <os-settings-search-page prefs="{{prefs}}"> + </os-settings-search-page> </settings-section> </template> <template is="dom-if" if="[[showApps]]" restamp>
diff --git a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html index 344d9ab..8f5a39a9 100644 --- a/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html +++ b/chrome/browser/resources/settings/google_assistant_page/google_assistant_page.html
@@ -25,18 +25,8 @@ min-width: 200px; } - /** - * This style is copied from the settings_dropdown_menu. - * We don't use the settings_dropdown_menu for the - * dspHotwordState drop down (see below), because the - * dspHotwordState manages 2 preferences. The - * settings_dropdown_menu is designed to manage only a - * single preference. - */ cr-policy-pref-indicator { - height: 24px; - order: 0; - width: 24px; + margin-inline-end: var(--cr-controlled-by-spacing); } </style> <settings-toggle-button id="google-assistant-enable" @@ -73,13 +63,15 @@ $i18n{googleAssistantEnableHotwordDescription} </div> </div> - <template is="dom-if" - if="[[prefs.settings.voice_interaction.enabled.controllerBy]]" - restamp> - <cr-policy-pref-indicator + <template is="dom-if" if="[[hotwordEnforced_]]" restamp> + <cr-policy-pref-indicator id="hotword-policy-pref-indicator" pref="{{prefs.settings.voice_interaction.hotword.enabled}}"> </cr-policy-pref-indicator> </template> + <!-- We don't use the settings_dropdown_menu for the dspHotwordState + drop down, because the dspHotwordState manages 2 preferences. + The settings_dropdown_menu is designed to manage only a single + preference. --> <select id="dsp-hotword-state" class="md-select" aria-labelledby="googleAssistantEnableHotword" on-change="onDspHotwordStateChange_"
diff --git a/chrome/browser/resources/settings/languages_page/BUILD.gn b/chrome/browser/resources/settings/languages_page/BUILD.gn index c461ede4..4d26b5f 100644 --- a/chrome/browser/resources/settings/languages_page/BUILD.gn +++ b/chrome/browser/resources/settings/languages_page/BUILD.gn
@@ -38,6 +38,7 @@ "../prefs:prefs_types", "//ui/webui/resources/js:assert", "//ui/webui/resources/js:cr", + "//ui/webui/resources/js:i18n_behavior", "//ui/webui/resources/js:promise_resolver", ] externs_list = [
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.html b/chrome/browser/resources/settings/languages_page/languages_page.html index 9a4b8dc..911bd906 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.html +++ b/chrome/browser/resources/settings/languages_page/languages_page.html
@@ -9,6 +9,7 @@ <link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/cr.html"> <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> +<link rel="import" href="chrome://resources/html/i18n_behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-collapse/iron-collapse.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html"> <link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html"> @@ -293,6 +294,7 @@ <settings-toggle-button id="enableSpellcheckingToggle" label="$i18n{spellCheckTitle}" + sub-label="[[getSpellCheckSubLabel_(spellCheckLanguages_)]]" pref="{{prefs.browser.enable_spellchecking}}" disabled="[[!spellCheckLanguages_.length]]"> </settings-toggle-button>
diff --git a/chrome/browser/resources/settings/languages_page/languages_page.js b/chrome/browser/resources/settings/languages_page/languages_page.js index 649d7ae..19fd2d9 100644 --- a/chrome/browser/resources/settings/languages_page/languages_page.js +++ b/chrome/browser/resources/settings/languages_page/languages_page.js
@@ -27,6 +27,7 @@ is: 'settings-languages-page', behaviors: [ + I18nBehavior, PrefsBehavior, ], @@ -692,6 +693,20 @@ return ''; }, + /** + * @return {string|undefined} + * @private + */ + getSpellCheckSubLabel_: function() { + // <if expr="not is_macosx"> + if (this.spellCheckLanguages_.length === 0) { + return this.i18n('spellCheckDisabledReason'); + } + // </if> + + return undefined; + }, + // <if expr="chromeos"> /** * @param {string} id The input method ID.
diff --git a/chrome/browser/resources/settings/os_settings_resources.grd b/chrome/browser/resources/settings/os_settings_resources.grd index 78fb694..b324bb7 100644 --- a/chrome/browser/resources/settings/os_settings_resources.grd +++ b/chrome/browser/resources/settings/os_settings_resources.grd
@@ -889,11 +889,11 @@ type="chrome_html" allowexternalscript="true" /> <structure name="IDR_OS_SETTINGS_SEARCH_PAGE_JS" - file="search_page/search_page.js" + file="chromeos/os_search_page/os_search_page.js" type="chrome_html" preprocess="true" /> <structure name="IDR_OS_SETTINGS_SEARCH_PAGE_HTML" - file="search_page/search_page.html" + file="chromeos/os_search_page/os_search_page.html" type="chrome_html" preprocess="true" allowexternalscript="true" />
diff --git a/chrome/browser/resources/settings/search_page/search_page.js b/chrome/browser/resources/settings/search_page/search_page.js index 2ac4cc4..cc8ec3d 100644 --- a/chrome/browser/resources/settings/search_page/search_page.js +++ b/chrome/browser/resources/settings/search_page/search_page.js
@@ -36,7 +36,8 @@ isAssistantAllowed_: { type: Boolean, value: function() { - return loadTimeData.getBoolean('isAssistantAllowed'); + return loadTimeData.getBoolean('isAssistantAllowed') && + loadTimeData.getBoolean('showOSSettings'); }, }, // </if>
diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html b/chrome/browser/resources/settings/settings_menu/settings_menu.html index cb5681f..9ddd2c0 100644 --- a/chrome/browser/resources/settings/settings_menu/settings_menu.html +++ b/chrome/browser/resources/settings/settings_menu/settings_menu.html
@@ -14,8 +14,9 @@ <template> <style include="settings-shared"> :host { + box-sizing: border-box; display: block; - margin-top: 8px; + padding-top: 8px; } a[href],
diff --git a/chrome/browser/resources/settings/settings_page/settings_section.html b/chrome/browser/resources/settings/settings_page/settings_section.html index 81438e6..8e4475d 100644 --- a/chrome/browser/resources/settings/settings_page/settings_section.html +++ b/chrome/browser/resources/settings/settings_page/settings_section.html
@@ -9,9 +9,6 @@ :host { display: flex; flex-direction: column; - /* Margin so the box-shadow isn't clipped during animations. */ - margin-inline-end: 3px; - margin-inline-start: 3px; outline: none; position: relative; }
diff --git a/chrome/browser/resources/settings/settings_ui/settings_ui.html b/chrome/browser/resources/settings/settings_ui/settings_ui.html index 879a4b36..71df2e27 100644 --- a/chrome/browser/resources/settings/settings_ui/settings_ui.html +++ b/chrome/browser/resources/settings/settings_ui/settings_ui.html
@@ -4,6 +4,7 @@ <link rel="import" href="chrome://resources/cr_elements/cr_drawer/cr_drawer.html"> <link rel="import" href="chrome://resources/cr_elements/cr_toolbar/cr_toolbar.html"> <link rel="import" href="chrome://resources/cr_elements/icons.html"> +<link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html"> <link rel="import" href="chrome://resources/html/find_shortcut_behavior.html"> <link rel="import" href="chrome://resources/html/util.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-styles/color.html"> @@ -30,27 +31,79 @@ @apply --layout-fit; display: flex; flex-direction: column; - } - - cr-drawer { - z-index: 2; + --settings-menu-width: 250px; + /* Centered cards has a max-width of var(--cr-centered-card-max-width) + * and a width of a certain percentage. Therefore, to make room for the + * cards to be at their max width, the flex-basis of #main needs to be + * whatever value the percentage of would equal to the max width. */ + --settings-main-basis: calc(var(--cr-centered-card-max-width) / + var(--cr-centered-card-width-percentage)); } cr-toolbar { @apply --layout-center; min-height: 56px; z-index: 2; + --cr-toolbar-left-spacer-width: var(--settings-menu-width); + --cr-toolbar-center-basis: var(--settings-main-basis); } :host-context(html:not([dark])) cr-toolbar { --iron-icon-fill-color: white; } + #cr-container-shadow-top { + /* Needs to be higher than #container's z-index to appear above + * scrollbars. */ + z-index: 2; + } + #container { + align-items: flex-start; + display: flex; flex: 1; overflow: overlay; position: relative; } + + #left, + #main, + #right { + flex: 1 1 0; + } + + #left { + height: 100%; + position: sticky; + top: 0; + } + + #left settings-menu { + max-height: 100%; + overflow: auto; + overscroll-behavior: contain; + width: var(--settings-menu-width); + } + + #main { + flex-basis: var(--settings-main-basis); + height: 100%; + min-height: fit-content; + } + + /* The breakpoint of 980px was decided on by the rounded sum of + * var(--settings-main-basis), var(--settings-menu-width), and + * var(--cr-section-padding). */ + @media (max-width: 980px) { + #left, + #right { + display: none; + } + + #main { + min-width: auto; + } + } </style> <settings-prefs id="prefs" prefs="{{prefs}}"></settings-prefs> <cr-toolbar page-name="$i18n{settings}" @@ -61,7 +114,9 @@ menu-label="$i18n{menuButtonLabel}" on-search-changed="onSearchChanged_" role="banner" - show-menu> + narrow="{{narrow_}}" + narrow-threshold="980" + show-menu="[[narrow_]]"> </cr-toolbar> <cr-drawer id="drawer" on-close="onMenuClose_" heading="$i18n{settings}" align="$i18n{textdirection}"> @@ -81,6 +136,17 @@ </div> </cr-drawer> <div id="container" class="no-outline"> + <div id="left"> + <settings-menu page-visibility="[[pageVisibility_]]" + show-android-apps="[[showAndroidApps_]]" + show-crostini="[[showCrostini_]]" + show-plugin-vm="[[showPluginVm_]]" + show-multidevice="[[showMultidevice_]]" + have-play-store-app="[[havePlayStoreApp_]]" + on-iron-activate="onIronActivate_" + advanced-opened="{{advancedOpened_}}"> + </settings-menu> + </div> <settings-main id="main" prefs="{{prefs}}" toolbar-spinner-active="{{toolbarSpinnerActive_}}" page-visibility="[[pageVisibility_]]" @@ -93,6 +159,9 @@ have-play-store-app="[[havePlayStoreApp_]]" advanced-toggle-expanded="{{advancedOpened_}}"> </settings-main> + <!-- An additional child of the flex #container to take up space, + aligned with the right-hand child of the flex toolbar. --> + <div id="right"></div> </div> </template> <script src="settings_ui.js"></script>
diff --git a/chrome/browser/resources/settings/settings_ui/settings_ui.js b/chrome/browser/resources/settings/settings_ui/settings_ui.js index b0c16095..f94ab482 100644 --- a/chrome/browser/resources/settings/settings_ui/settings_ui.js +++ b/chrome/browser/resources/settings/settings_ui/settings_ui.js
@@ -45,6 +45,9 @@ value: false, }, + /** @private */ + narrow_: Boolean, + /** * @private {!PageVisibility} */
diff --git a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc index 4d4756b..d41df53 100644 --- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc +++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
@@ -181,8 +181,8 @@ UMA_HISTOGRAM_BOOLEAN( "SBClientDownload.ZipFileHasArchiveButNoExecutable", archive_results.has_archive && !archive_results.has_executable); - UMA_HISTOGRAM_TIMES("SBClientDownload.ExtractZipFeaturesTime", - base::TimeTicks::Now() - zip_analysis_start_time_); + UMA_HISTOGRAM_MEDIUM_TIMES("SBClientDownload.ExtractZipFeaturesTimeMedium", + base::TimeTicks::Now() - zip_analysis_start_time_); for (const auto& file_name : archive_results.archived_archive_filenames) RecordArchivedArchiveFileExtensionType(file_name); @@ -251,8 +251,8 @@ UMA_HISTOGRAM_BOOLEAN( "SBClientDownload.RarFileHasArchiveButNoExecutable", archive_results.has_archive && !archive_results.has_executable); - UMA_HISTOGRAM_TIMES("SBClientDownload.ExtractRarFeaturesTime", - base::TimeTicks::Now() - rar_analysis_start_time_); + UMA_HISTOGRAM_MEDIUM_TIMES("SBClientDownload.ExtractRarFeaturesTimeMedium", + base::TimeTicks::Now() - rar_analysis_start_time_); for (const auto& file_name : archive_results.archived_archive_filenames) RecordArchivedArchiveFileExtensionType(file_name); @@ -350,8 +350,8 @@ uma_file_type); } - UMA_HISTOGRAM_TIMES("SBClientDownload.ExtractDmgFeaturesTime", - base::TimeTicks::Now() - dmg_analysis_start_time_); + UMA_HISTOGRAM_MEDIUM_TIMES("SBClientDownload.ExtractDmgFeaturesTimeMedium", + base::TimeTicks::Now() - dmg_analysis_start_time_); std::move(callback_).Run(std::move(results_)); }
diff --git a/chrome/browser/safe_browsing/safe_browsing_controller_client.cc b/chrome/browser/safe_browsing/safe_browsing_controller_client.cc index 3411f3c..d8bffdf 100644 --- a/chrome/browser/safe_browsing/safe_browsing_controller_client.cc +++ b/chrome/browser/safe_browsing/safe_browsing_controller_client.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) SafeBrowsingControllerClient::SafeBrowsingControllerClient( @@ -39,7 +39,7 @@ // to a regular Chrome window and proceed as usual there. Browser* browser = chrome::FindBrowserWithWebContents(web_contents_); if (browser && - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser)) { + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser)) { chrome::OpenInChrome(browser); } #endif // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/safe_browsing/threat_details_unittest.cc b/chrome/browser/safe_browsing/threat_details_unittest.cc index 4b21c607..8f45785 100644 --- a/chrome/browser/safe_browsing/threat_details_unittest.cc +++ b/chrome/browser/safe_browsing/threat_details_unittest.cc
@@ -43,6 +43,7 @@ using content::BrowserThread; using content::WebContents; using testing::_; +using testing::DoAll; using testing::Eq; using testing::Return; using testing::SetArgPointee;
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc index 35b3a81..3e6f84b4 100644 --- a/chrome/browser/search/local_ntp_source.cc +++ b/chrome/browser/search/local_ntp_source.cc
@@ -623,6 +623,8 @@ config_data.SetBoolean( "richerPicker", base::FeatureList::IsEnabled(features::kNtpCustomizationMenuV2)); + config_data.SetBoolean("chromeColors", base::FeatureList::IsEnabled( + features::kChromeColors)); } // Serialize the dictionary. @@ -995,6 +997,8 @@ l10n_util::GetStringUTF16(IDS_NTP_CUSTOMIZE_MENU_SHORTCUTS_LABEL)); replacements["colorsOption"] = base::UTF16ToUTF8( l10n_util::GetStringUTF16(IDS_NTP_CUSTOMIZE_MENU_COLORS_LABEL)); + replacements["uploadImage"] = base::UTF16ToUTF8( + l10n_util::GetStringUTF16(IDS_NTP_CUSTOM_BG_UPLOAD_AN_IMAGE)); replacements["bgPreloader"] = ""; GURL custom_background_url = GetCustomBackgroundURL(profile_->GetPrefs());
diff --git a/chrome/browser/search/ntp_features.cc b/chrome/browser/search/ntp_features.cc index 1b6929f..606e4ff 100644 --- a/chrome/browser/search/ntp_features.cc +++ b/chrome/browser/search/ntp_features.cc
@@ -9,6 +9,10 @@ namespace features { +// If enabled, 'Chrome Colors' menu becomes visible in the customization picker. +const base::Feature kChromeColors{"ChromeColors", + base::FEATURE_DISABLED_BY_DEFAULT}; + // If enabled, does not fade in most visited tiles on initial page load. const base::Feature kDisableInitialMostVisitedFadeIn{ "DisableInitialMostVisitedFadeIn", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/search/ntp_features.h b/chrome/browser/search/ntp_features.h index 3211ce94..a642e74d 100644 --- a/chrome/browser/search/ntp_features.h +++ b/chrome/browser/search/ntp_features.h
@@ -12,6 +12,7 @@ // The features should be documented alongside the definition of their values in // the .cc file. +extern const base::Feature kChromeColors; extern const base::Feature kDisableInitialMostVisitedFadeIn; extern const base::Feature kNtpCustomizationMenuV2; extern const base::Feature kRemoveNtpFakebox;
diff --git a/chrome/browser/ssl/ssl_error_controller_client.cc b/chrome/browser/ssl/ssl_error_controller_client.cc index b8f15976..3fcd5d7 100644 --- a/chrome/browser/ssl/ssl_error_controller_client.cc +++ b/chrome/browser/ssl/ssl_error_controller_client.cc
@@ -198,7 +198,7 @@ // to a regular Chrome window and proceed as usual there. Browser* browser = chrome::FindBrowserWithWebContents(web_contents_); if (browser && - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser)) { + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser)) { chrome::OpenInChrome(browser); } #endif // BUILDFLAG(ENABLE_EXTENSIONS)
diff --git a/chrome/browser/ssl/ssl_error_navigation_throttle.cc b/chrome/browser/ssl/ssl_error_navigation_throttle.cc index f0e6c98..94e497a1 100644 --- a/chrome/browser/ssl/ssl_error_navigation_throttle.cc +++ b/chrome/browser/ssl/ssl_error_navigation_throttle.cc
@@ -18,7 +18,7 @@ #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS) SSLErrorNavigationThrottle::SSLErrorNavigationThrottle( @@ -90,7 +90,7 @@ Browser* browser = chrome::FindBrowserWithWebContents(handle->GetWebContents()); if (browser && - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser)) { + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser)) { QueueShowInterstitial( std::move(handle_ssl_error_callback_), handle->GetWebContents(), // The navigation handle's net error code will be
diff --git a/chrome/browser/sync/test/integration/autofill_helper.cc b/chrome/browser/sync/test/integration/autofill_helper.cc index 2ad3a5e..664b23d 100644 --- a/chrome/browser/sync/test/integration/autofill_helper.cc +++ b/chrome/browser/sync/test/integration/autofill_helper.cc
@@ -19,9 +19,9 @@ #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/web_data_service_factory.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/chrome/browser/sync/test/integration/enable_disable_test.cc b/chrome/browser/sync/test/integration/enable_disable_test.cc index ac58311..5441a92 100644 --- a/chrome/browser/sync/test/integration/enable_disable_test.cc +++ b/chrome/browser/sync/test/integration/enable_disable_test.cc
@@ -22,7 +22,6 @@ #include "components/sync/driver/sync_user_settings_impl.h" #include "components/sync/test/fake_server/bookmark_entity_builder.h" #include "components/sync/test/fake_server/entity_builder_factory.h" -#include "components/sync/test/fake_server/fake_server_http_post_provider.h" namespace { @@ -443,39 +442,6 @@ EXPECT_EQ(cache_guid, prefs.GetCacheGuid()); } -IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, - PRE_RestartDuringInitialSync) { - SetupSyncNoWaitingForCompletion(); - - // The intended scenario being tested involves an ongoing initial sync. This - // means a cache GUID has been generated, but the initial birthday hasn't been - // received yet (which is received from the server as part of the initial - // GetUpdates request). - SyncPrefs prefs(GetProfile(0)->GetPrefs()); - ASSERT_NE("", prefs.GetCacheGuid()); - ASSERT_EQ("", prefs.GetBirthday()); - - // Mimic a non-responding server (slow connection) during shutdown, to make - // sure test teardown logic doesn't fetch the birthday. This is asserted in - // the next test and would otherwise fail. - fake_server::FakeServerHttpPostProvider::SetNetworkDelay( - base::TimeDelta::Max()); -} - -IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, - RestartDuringInitialSync) { - ASSERT_TRUE(SetupClients()); - - SyncPrefs prefs(GetProfile(0)->GetPrefs()); - ASSERT_NE("", prefs.GetCacheGuid()); - ASSERT_EQ("", prefs.GetBirthday()); - - EXPECT_TRUE(GetClient(0)->AwaitSyncSetupCompletion()); - - ASSERT_NE("", prefs.GetCacheGuid()); - EXPECT_NE("", prefs.GetBirthday()); -} - class EnableDisableSingleClientSelfNotifyTest : public EnableDisableSingleClientTest { public:
diff --git a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc index 61f0e35..ce7e918 100644 --- a/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc +++ b/chrome/browser/sync/test/integration/performance/autofill_sync_perf_test.cc
@@ -12,8 +12,8 @@ #include "chrome/browser/sync/test/integration/performance/sync_timing_helper.h" #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" #include "components/sync/driver/sync_driver_switches.h"
diff --git a/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc b/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc index 37ed86d7..db06da9 100644 --- a/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_autofill_profile_sync_test.cc
@@ -9,7 +9,7 @@ #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h" #include "chrome/browser/sync/test/integration/sync_test.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/common/autofill_prefs.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc index 042ab28..d9b79683 100644 --- a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
@@ -19,9 +19,9 @@ #include "chrome/browser/sync/test/integration/wallet_helper.h" #include "chrome/browser/web_data_service_factory.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_metadata.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc index f1a81a4..d0fe64b 100644 --- a/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_autofill_sync_test.cc
@@ -10,9 +10,9 @@ #include "chrome/browser/sync/test/integration/autofill_helper.h" #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h" #include "chrome/browser/sync/test/integration/sync_test.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/sync/driver/sync_driver_switches.h"
diff --git a/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc index 17ae71c..eb9f3417 100644 --- a/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc +++ b/chrome/browser/sync/test/integration/two_client_wallet_sync_test.cc
@@ -6,9 +6,9 @@ #include "chrome/browser/sync/test/integration/autofill_helper.h" #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/sync/test/integration/wallet_helper.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/common/autofill_util.h"
diff --git a/chrome/browser/sync/test/integration/wallet_helper.cc b/chrome/browser/sync/test/integration/wallet_helper.cc index 1f8754e..1b1e88db 100644 --- a/chrome/browser/sync/test/integration/wallet_helper.cc +++ b/chrome/browser/sync/test/integration/wallet_helper.cc
@@ -14,8 +14,8 @@ #include "chrome/browser/sync/test/integration/sync_test.h" #include "chrome/browser/web_data_service_factory.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 405c6db..f7d66f5 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -1375,8 +1375,8 @@ "ash/ash_shell_init.h", "ash/ash_util.cc", "ash/ash_util.h", - "ash/cast_config_client_media_router.cc", - "ash/cast_config_client_media_router.h", + "ash/cast_config_controller_media_router.cc", + "ash/cast_config_controller_media_router.h", "ash/chrome_accessibility_delegate.cc", "ash/chrome_accessibility_delegate.h", "ash/chrome_browser_main_extra_parts_ash.cc", @@ -2982,8 +2982,6 @@ "views/webauthn/sheet_view_factory.h", "views_mode_controller.cc", "views_mode_controller.h", - "web_app_browser_controller.cc", - "web_app_browser_controller.h", "webauthn/account_hover_list_model.cc", "webauthn/account_hover_list_model.h", "webauthn/authenticator_request_sheet_model.h", @@ -3589,6 +3587,8 @@ "views/extensions/media_galleries_dialog_views.h", "views/extensions/media_gallery_checkbox_view.cc", "views/extensions/media_gallery_checkbox_view.h", + "web_applications/app_browser_controller.cc", + "web_applications/app_browser_controller.h", "web_applications/system_web_app_ui_utils_chromeos.cc", "web_applications/system_web_app_ui_utils_chromeos.h", "web_applications/web_app_dialog_utils.cc",
diff --git a/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc b/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc index 824150d..09e2b4b 100644 --- a/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc +++ b/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc
@@ -11,7 +11,7 @@ #include "base/memory/ptr_util.h" #include "chrome/browser/ui/android/view_android_helper.h" #include "chrome/browser/ui/autofill/payments/credit_card_scanner_view_delegate.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "jni/CreditCardScannerBridge_jni.h" #include "ui/android/view_android.h"
diff --git a/chrome/browser/ui/ash/cast_config_client_media_router.cc b/chrome/browser/ui/ash/cast_config_client_media_router.cc deleted file mode 100644 index 6311742..0000000 --- a/chrome/browser/ui/ash/cast_config_client_media_router.cc +++ /dev/null
@@ -1,253 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ui/ash/cast_config_client_media_router.h" - -#include <string> -#include <utility> -#include <vector> - -#include "ash/public/interfaces/constants.mojom.h" -#include "base/bind_helpers.h" -#include "base/macros.h" -#include "base/optional.h" -#include "base/strings/string_util.h" -#include "base/strings/utf_string_conversions.h" -#include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/media/router/media_router.h" -#include "chrome/browser/media/router/media_router_factory.h" -#include "chrome/browser/media/router/media_router_feature.h" -#include "chrome/browser/media/router/media_routes_observer.h" -#include "chrome/browser/media/router/media_sinks_observer.h" -#include "chrome/browser/profiles/profile_manager.h" -#include "chrome/common/media_router/media_source_helper.h" -#include "chrome/common/url_constants.h" -#include "content/public/browser/notification_service.h" -#include "content/public/browser/notification_source.h" -#include "content/public/common/service_manager_connection.h" -#include "services/service_manager/public/cpp/connector.h" - -namespace { - -media_router::MediaRouter* media_router_for_test_ = nullptr; - -// Returns the MediaRouter instance for the current primary profile. -media_router::MediaRouter* GetMediaRouter() { - if (media_router_for_test_) - return media_router_for_test_; - - auto* router = media_router::MediaRouterFactory::GetApiForBrowserContext( - ProfileManager::GetPrimaryUserProfile()); - DCHECK(router); - return router; -} - -// "Cast for Education" extension uses this string and expects the client to -// interpret it as "signed-in user's domain". -constexpr char const kDefaultDomain[] = "default"; - -} // namespace - -// This class caches the values that the observers give us so we can query them -// at any point in time. It also emits a device refresh event when new data is -// available. -class CastDeviceCache : public media_router::MediaRoutesObserver, - public media_router::MediaSinksObserver { - public: - using MediaSinks = std::vector<media_router::MediaSink>; - using MediaRoutes = std::vector<media_router::MediaRoute>; - using MediaRouteIds = std::vector<media_router::MediaRoute::Id>; - - explicit CastDeviceCache(ash::mojom::CastConfigClient* cast_config_client); - ~CastDeviceCache() override; - - // This may call cast_config_client->RequestDeviceRefresh() before - // returning. - void Init(); - - const MediaSinks& sinks() const { return sinks_; } - const MediaRoutes& routes() const { return routes_; } - - private: - // media_router::MediaSinksObserver: - void OnSinksReceived(const MediaSinks& sinks) override; - - // media_router::MediaRoutesObserver: - void OnRoutesUpdated(const MediaRoutes& routes, - const MediaRouteIds& unused_joinable_route_ids) override; - - MediaSinks sinks_; - MediaRoutes routes_; - - // Not owned. - ash::mojom::CastConfigClient* cast_config_client_; - - DISALLOW_COPY_AND_ASSIGN(CastDeviceCache); -}; - -CastDeviceCache::CastDeviceCache( - ash::mojom::CastConfigClient* cast_config_client) - : MediaRoutesObserver(GetMediaRouter()), - MediaSinksObserver( - GetMediaRouter(), - media_router::MediaSourceForDesktop(), - url::Origin::Create(GURL(chrome::kChromeUIMediaRouterURL))), - cast_config_client_(cast_config_client) {} - -CastDeviceCache::~CastDeviceCache() {} - -void CastDeviceCache::Init() { - CHECK(MediaSinksObserver::Init()); -} - -void CastDeviceCache::OnSinksReceived(const MediaSinks& sinks) { - sinks_.clear(); - for (const media_router::MediaSink& sink : sinks) { - // The media router adds a MediaSink instance that doesn't have a name. Make - // sure to filter that sink out from the UI so it is not rendered, as it - // will be a line that only has a icon with no apparent meaning. - if (sink.name().empty()) - continue; - - // Hide all sinks which have a non-default domain (ie, castouts) to meet - // privacy requirements. This will be enabled once UI can display the - // domain. See crbug.com/624016. - if (sink.domain() && !sink.domain()->empty() && - sink.domain() != kDefaultDomain) { - continue; - } - - sinks_.push_back(sink); - } - - cast_config_client_->RequestDeviceRefresh(); -} - -void CastDeviceCache::OnRoutesUpdated( - const MediaRoutes& routes, - const MediaRouteIds& unused_joinable_route_ids) { - routes_ = routes; - cast_config_client_->RequestDeviceRefresh(); -} - -//////////////////////////////////////////////////////////////////////////////// -// CastConfigClientMediaRouter: - -void CastConfigClientMediaRouter::SetMediaRouterForTest( - media_router::MediaRouter* media_router) { - media_router_for_test_ = media_router; -} - -CastConfigClientMediaRouter::CastConfigClientMediaRouter() : binding_(this) { - // TODO(jdufault): This should use a callback interface once there is an - // equivalent. See crbug.com/666005. - registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, - content::NotificationService::AllSources()); - - // When starting up, we need to connect to ash and set ourselves as the - // client. - content::ServiceManagerConnection::GetForProcess() - ->GetConnector() - ->BindInterface(ash::mojom::kServiceName, &cast_config_); - - // Register this object as the client interface implementation. - ash::mojom::CastConfigClientAssociatedPtrInfo ptr_info; - binding_.Bind(mojo::MakeRequest(&ptr_info)); - cast_config_->SetClient(std::move(ptr_info)); -} - -CastConfigClientMediaRouter::~CastConfigClientMediaRouter() {} - -CastDeviceCache* CastConfigClientMediaRouter::devices() { - // The CastDeviceCache instance is lazily allocated because the MediaRouter - // component is not ready when the constructor is invoked. - if (!devices_ && GetMediaRouter()) { - devices_ = std::make_unique<CastDeviceCache>(this); - devices_->Init(); - } - - return devices_.get(); -} - -void CastConfigClientMediaRouter::RequestDeviceRefresh() { - // The media router component isn't ready yet. - if (!devices()) - return; - - // We failed to connect to ash; don't crash in release. - if (!cast_config_) { - NOTREACHED(); - return; - } - - // Build the old-style SinkAndRoute set out of the MediaRouter - // source/sink/route setup. We first map the existing sinks, and then we - // update those sinks with activity information. - - std::vector<ash::mojom::SinkAndRoutePtr> items; - - for (const media_router::MediaSink& sink : devices()->sinks()) { - ash::mojom::SinkAndRoutePtr sr = ash::mojom::SinkAndRoute::New(); - sr->route = ash::mojom::CastRoute::New(); - sr->sink = ash::mojom::CastSink::New(); - sr->sink->id = sink.id(); - sr->sink->name = sink.name(); - sr->sink->domain = sink.domain().value_or(std::string()); - // TODO(crbug.com/788854): Replace SinkIconType with - // ash::mojom::SinkIconType. - sr->sink->sink_icon_type = - static_cast<ash::mojom::SinkIconType>(sink.icon_type()); - items.push_back(std::move(sr)); - } - - for (const media_router::MediaRoute& route : devices()->routes()) { - if (!route.for_display()) - continue; - - for (ash::mojom::SinkAndRoutePtr& item : items) { - if (item->sink->id == route.media_sink_id()) { - item->route->id = route.media_route_id(); - item->route->title = route.description(); - item->route->is_local_source = route.is_local(); - - // Default to a tab/app capture. This will display the media router - // description. This means we will properly support DIAL casts. - item->route->content_source = ash::mojom::ContentSource::TAB; - if (media_router::IsDesktopMirroringMediaSource(route.media_source())) - item->route->content_source = ash::mojom::ContentSource::DESKTOP; - - break; - } - } - } - - cast_config_->OnDevicesUpdated(std::move(items)); -} - -void CastConfigClientMediaRouter::CastToSink(ash::mojom::CastSinkPtr sink) { - // TODO(imcheng): Pass in tab casting timeout. - GetMediaRouter()->CreateRoute( - media_router::MediaSourceForDesktop().id(), sink->id, - url::Origin::Create(GURL("http://cros-cast-origin/")), nullptr, - base::DoNothing(), base::TimeDelta(), false); -} - -void CastConfigClientMediaRouter::StopCasting(ash::mojom::CastRoutePtr route) { - GetMediaRouter()->TerminateRoute(route->id); -} - -void CastConfigClientMediaRouter::Observe( - int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) { - switch (type) { - case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED: - // The active profile has changed, which means that the media router has - // as well. Reset the device cache to ensure we are using up-to-date - // object instances. - devices_.reset(); - RequestDeviceRefresh(); - break; - } -}
diff --git a/chrome/browser/ui/ash/cast_config_client_media_router.h b/chrome/browser/ui/ash/cast_config_client_media_router.h deleted file mode 100644 index 363db31a..0000000 --- a/chrome/browser/ui/ash/cast_config_client_media_router.h +++ /dev/null
@@ -1,58 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_ASH_CAST_CONFIG_CLIENT_MEDIA_ROUTER_H_ -#define CHROME_BROWSER_UI_ASH_CAST_CONFIG_CLIENT_MEDIA_ROUTER_H_ - -#include <memory> - -#include "ash/public/interfaces/cast_config.mojom.h" -#include "base/macros.h" -#include "base/observer_list.h" -#include "content/public/browser/notification_observer.h" -#include "content/public/browser/notification_registrar.h" -#include "mojo/public/cpp/bindings/associated_binding.h" -#include "mojo/public/cpp/bindings/interface_ptr_set.h" - -namespace media_router { -class MediaRouter; -} - -class CastDeviceCache; - -// A class which allows the ash tray to communicate with the media router. -class CastConfigClientMediaRouter : public ash::mojom::CastConfigClient, - public content::NotificationObserver { - public: - CastConfigClientMediaRouter(); - ~CastConfigClientMediaRouter() override; - - static void SetMediaRouterForTest(media_router::MediaRouter* media_router); - - private: - // CastConfigClient: - void RequestDeviceRefresh() override; - void CastToSink(ash::mojom::CastSinkPtr sink) override; - void StopCasting(ash::mojom::CastRoutePtr route) override; - - // content::NotificationObserver: - void Observe(int type, - const content::NotificationSource& source, - const content::NotificationDetails& details) override; - - // |devices_| stores the current source/route status that we query from. - // This will return null until the media router is initialized. - CastDeviceCache* devices(); - std::unique_ptr<CastDeviceCache> devices_; - - content::NotificationRegistrar registrar_; - - ash::mojom::CastConfigPtr cast_config_; - - mojo::AssociatedBinding<ash::mojom::CastConfigClient> binding_; - - DISALLOW_COPY_AND_ASSIGN(CastConfigClientMediaRouter); -}; - -#endif // CHROME_BROWSER_UI_ASH_CAST_CONFIG_CLIENT_MEDIA_ROUTER_H_
diff --git a/chrome/browser/ui/ash/cast_config_controller_media_router.cc b/chrome/browser/ui/ash/cast_config_controller_media_router.cc new file mode 100644 index 0000000..b467783 --- /dev/null +++ b/chrome/browser/ui/ash/cast_config_controller_media_router.cc
@@ -0,0 +1,270 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/ash/cast_config_controller_media_router.h" + +#include <string> +#include <utility> +#include <vector> + +#include "base/bind_helpers.h" +#include "base/callback.h" +#include "base/macros.h" +#include "base/optional.h" +#include "base/strings/string_util.h" +#include "base/strings/utf_string_conversions.h" +#include "chrome/browser/chrome_notification_types.h" +#include "chrome/browser/chromeos/profiles/profile_helper.h" +#include "chrome/browser/media/router/media_router.h" +#include "chrome/browser/media/router/media_router_factory.h" +#include "chrome/browser/media/router/media_router_feature.h" +#include "chrome/browser/media/router/media_routes_observer.h" +#include "chrome/browser/media/router/media_sinks_observer.h" +#include "chrome/common/media_router/media_source_helper.h" +#include "chrome/common/url_constants.h" +#include "components/user_manager/user_manager.h" +#include "content/public/browser/notification_service.h" +#include "content/public/browser/notification_source.h" + +namespace { + +base::Optional<media_router::MediaRouter*> media_router_for_test_; + +// Returns the MediaRouter instance for the current primary profile, if there is +// one. +media_router::MediaRouter* GetMediaRouter() { + if (media_router_for_test_) + return *media_router_for_test_; + + if (!user_manager::UserManager::IsInitialized()) + return nullptr; + + auto* user = user_manager::UserManager::Get()->GetPrimaryUser(); + if (!user) + return nullptr; + + Profile* profile = chromeos::ProfileHelper::Get()->GetProfileByUser(user); + if (!profile) + return nullptr; + + auto* router = + media_router::MediaRouterFactory::GetApiForBrowserContext(profile); + DCHECK(router); + return router; +} + +// "Cast for Education" extension uses this string and expects the client to +// interpret it as "signed-in user's domain". +constexpr char const kDefaultDomain[] = "default"; + +} // namespace + +// This class caches the values that the observers give us so we can query them +// at any point in time. It also emits a device refresh event when new data is +// available. +class CastDeviceCache : public media_router::MediaRoutesObserver, + public media_router::MediaSinksObserver { + public: + using MediaSinks = std::vector<media_router::MediaSink>; + using MediaRoutes = std::vector<media_router::MediaRoute>; + using MediaRouteIds = std::vector<media_router::MediaRoute::Id>; + + explicit CastDeviceCache( + const base::RepeatingClosure& update_devices_callback); + ~CastDeviceCache() override; + + // This may run |update_devices_callback_| before returning. + void Init(); + + const MediaSinks& sinks() const { return sinks_; } + const MediaRoutes& routes() const { return routes_; } + + private: + // media_router::MediaSinksObserver: + void OnSinksReceived(const MediaSinks& sinks) override; + + // media_router::MediaRoutesObserver: + void OnRoutesUpdated(const MediaRoutes& routes, + const MediaRouteIds& unused_joinable_route_ids) override; + + MediaSinks sinks_; + MediaRoutes routes_; + + base::RepeatingClosure update_devices_callback_; + + DISALLOW_COPY_AND_ASSIGN(CastDeviceCache); +}; + +CastDeviceCache::CastDeviceCache( + const base::RepeatingClosure& update_devices_callback) + : MediaRoutesObserver(GetMediaRouter()), + MediaSinksObserver( + GetMediaRouter(), + media_router::MediaSourceForDesktop(), + url::Origin::Create(GURL(chrome::kChromeUIMediaRouterURL))), + update_devices_callback_(update_devices_callback) {} + +CastDeviceCache::~CastDeviceCache() = default; + +void CastDeviceCache::Init() { + CHECK(MediaSinksObserver::Init()); +} + +void CastDeviceCache::OnSinksReceived(const MediaSinks& sinks) { + sinks_.clear(); + for (const media_router::MediaSink& sink : sinks) { + // The media router adds a MediaSink instance that doesn't have a name. Make + // sure to filter that sink out from the UI so it is not rendered, as it + // will be a line that only has a icon with no apparent meaning. + if (sink.name().empty()) + continue; + + // Hide all sinks which have a non-default domain (ie, castouts) to meet + // privacy requirements. This will be enabled once UI can display the + // domain. See crbug.com/624016. + if (sink.domain() && !sink.domain()->empty() && + sink.domain() != kDefaultDomain) { + continue; + } + + sinks_.push_back(sink); + } + + update_devices_callback_.Run(); +} + +void CastDeviceCache::OnRoutesUpdated( + const MediaRoutes& routes, + const MediaRouteIds& unused_joinable_route_ids) { + routes_ = routes; + update_devices_callback_.Run(); +} + +//////////////////////////////////////////////////////////////////////////////// +// CastConfigControllerMediaRouter: + +void CastConfigControllerMediaRouter::SetMediaRouterForTest( + media_router::MediaRouter* media_router) { + media_router_for_test_ = media_router; +} + +CastConfigControllerMediaRouter::CastConfigControllerMediaRouter() { + // TODO(jdufault): This should use a callback interface once there is an + // equivalent. See crbug.com/666005. + registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, + content::NotificationService::AllSources()); +} + +CastConfigControllerMediaRouter::~CastConfigControllerMediaRouter() = default; + +CastDeviceCache* CastConfigControllerMediaRouter::device_cache() { + // The CastDeviceCache instance is lazily allocated because the MediaRouter + // component is not ready when the constructor is invoked. + if (!device_cache_ && GetMediaRouter()) { + device_cache_ = std::make_unique<CastDeviceCache>(base::BindRepeating( + &CastConfigControllerMediaRouter::RequestDeviceRefresh, + base::Unretained(this))); + device_cache_->Init(); + } + + return device_cache_.get(); +} + +void CastConfigControllerMediaRouter::AddObserver(Observer* observer) { + observers_.AddObserver(observer); +} + +void CastConfigControllerMediaRouter::RemoveObserver(Observer* observer) { + observers_.RemoveObserver(observer); +} + +bool CastConfigControllerMediaRouter::HasSinksAndRoutes() const { + return !devices_.empty(); +} + +bool CastConfigControllerMediaRouter::HasActiveRoute() const { + for (const auto& device : devices_) { + if (device.route.is_local_source && !device.route.title.empty()) + return true; + } + + return false; +} + +void CastConfigControllerMediaRouter::RequestDeviceRefresh() { + // The media router component isn't ready yet. + if (!device_cache()) + return; + + // Build the old-style SinkAndRoute set out of the MediaRouter + // source/sink/route setup. We first map the existing sinks, and then we + // update those sinks with activity information. + devices_.clear(); + + for (const media_router::MediaSink& sink : device_cache()->sinks()) { + ash::SinkAndRoute device; + device.sink.id = sink.id(); + device.sink.name = sink.name(); + device.sink.domain = sink.domain().value_or(std::string()); + device.sink.sink_icon_type = + static_cast<ash::SinkIconType>(sink.icon_type()); + devices_.push_back(std::move(device)); + } + + for (const media_router::MediaRoute& route : device_cache()->routes()) { + if (!route.for_display()) + continue; + + for (ash::SinkAndRoute& device : devices_) { + if (device.sink.id == route.media_sink_id()) { + device.route.id = route.media_route_id(); + device.route.title = route.description(); + device.route.is_local_source = route.is_local(); + + // Default to a tab/app capture. This will display the media router + // description. This means we will properly support DIAL casts. + device.route.content_source = + media_router::IsDesktopMirroringMediaSource(route.media_source()) + ? ash::ContentSource::kDesktop + : ash::ContentSource::kTab; + break; + } + } + } + + for (auto& observer : observers_) + observer.OnDevicesUpdated(devices_); +} + +const std::vector<ash::SinkAndRoute>& +CastConfigControllerMediaRouter::GetSinksAndRoutes() { + return devices_; +} + +void CastConfigControllerMediaRouter::CastToSink(const std::string& sink_id) { + // TODO(imcheng): Pass in tab casting timeout. + GetMediaRouter()->CreateRoute( + media_router::MediaSourceForDesktop().id(), sink_id, + url::Origin::Create(GURL("http://cros-cast-origin/")), nullptr, + base::DoNothing(), base::TimeDelta(), false); +} + +void CastConfigControllerMediaRouter::StopCasting(const std::string& route_id) { + GetMediaRouter()->TerminateRoute(route_id); +} + +void CastConfigControllerMediaRouter::Observe( + int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) { + switch (type) { + case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED: + // The active profile has changed, which means that the media router has + // as well. Reset the device cache to ensure we are using up-to-date + // object instances. + device_cache_.reset(); + RequestDeviceRefresh(); + break; + } +}
diff --git a/chrome/browser/ui/ash/cast_config_controller_media_router.h b/chrome/browser/ui/ash/cast_config_controller_media_router.h new file mode 100644 index 0000000..cf0e3a56 --- /dev/null +++ b/chrome/browser/ui/ash/cast_config_controller_media_router.h
@@ -0,0 +1,63 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_ASH_CAST_CONFIG_CONTROLLER_MEDIA_ROUTER_H_ +#define CHROME_BROWSER_UI_ASH_CAST_CONFIG_CONTROLLER_MEDIA_ROUTER_H_ + +#include <memory> + +#include "ash/public/cpp/cast_config_controller.h" +#include "base/macros.h" +#include "base/observer_list.h" +#include "content/public/browser/notification_observer.h" +#include "content/public/browser/notification_registrar.h" + +namespace media_router { +class MediaRouter; +} + +class CastDeviceCache; + +// A class which allows the ash tray to communicate with the media router. +class CastConfigControllerMediaRouter : public ash::CastConfigController, + public content::NotificationObserver { + public: + CastConfigControllerMediaRouter(); + ~CastConfigControllerMediaRouter() override; + + static void SetMediaRouterForTest(media_router::MediaRouter* media_router); + + private: + // CastConfigController: + void AddObserver(Observer* observer) override; + void RemoveObserver(Observer* observer) override; + bool HasSinksAndRoutes() const override; + bool HasActiveRoute() const override; + void RequestDeviceRefresh() override; + const std::vector<ash::SinkAndRoute>& GetSinksAndRoutes() override; + void CastToSink(const std::string& sink_id) override; + void StopCasting(const std::string& route_id) override; + + // content::NotificationObserver: + void Observe(int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) override; + + // |device_cache_| stores the current source/route status that we query from. + // This will return null until the media router is initialized. + CastDeviceCache* device_cache(); + std::unique_ptr<CastDeviceCache> device_cache_; + + // The list of available devices in a format more palatable for consumption by + // Ash UI. + std::vector<ash::SinkAndRoute> devices_; + + base::ObserverList<Observer> observers_; + + content::NotificationRegistrar registrar_; + + DISALLOW_COPY_AND_ASSIGN(CastConfigControllerMediaRouter); +}; + +#endif // CHROME_BROWSER_UI_ASH_CAST_CONFIG_CONTROLLER_MEDIA_ROUTER_H_
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc index fba7d1ef..ed2e5978 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -27,7 +27,7 @@ #include "chrome/browser/ui/app_list/app_list_client_impl.h" #include "chrome/browser/ui/ash/accessibility/accessibility_controller_client.h" #include "chrome/browser/ui/ash/ash_shell_init.h" -#include "chrome/browser/ui/ash/cast_config_client_media_router.h" +#include "chrome/browser/ui/ash/cast_config_controller_media_router.h" #include "chrome/browser/ui/ash/chrome_new_window_client.h" #include "chrome/browser/ui/ash/ime_controller_client.h" #include "chrome/browser/ui/ash/kiosk_next_shell_client.h" @@ -151,6 +151,9 @@ std::make_unique<NetworkConnectDelegateChromeOS>(); chromeos::NetworkConnect::Initialize(network_connect_delegate_.get()); + cast_config_controller_media_router_ = + std::make_unique<CastConfigControllerMediaRouter>(); + ash_shell_init_ = std::make_unique<AshShellInit>(); if (ui_devtools::UiDevToolsServer::IsUiDevToolsEnabled( @@ -208,8 +211,6 @@ } void ChromeBrowserMainExtraPartsAsh::PostProfileInit() { - cast_config_client_media_router_ = - std::make_unique<CastConfigClientMediaRouter>(); login_screen_client_ = std::make_unique<LoginScreenClient>(); // https://crbug.com/884127 ensuring that LoginScreenClient is initialized before using it InitializeDeviceDisablingManager. g_browser_process->platform_part()->InitializeDeviceDisablingManager(); @@ -277,7 +278,6 @@ display_settings_handler_.reset(); media_client_.reset(); login_screen_client_.reset(); - cast_config_client_media_router_.reset(); kiosk_next_shell_client_.reset(); // Initialized in PreProfileInit: @@ -290,6 +290,7 @@ // needs to be released before destroying the profile. app_list_client_.reset(); ash_shell_init_.reset(); + cast_config_controller_media_router_.reset(); chromeos::NetworkConnect::Shutdown(); network_connect_delegate_.reset();
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h index 11904b21..790c321 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.h
@@ -22,7 +22,7 @@ class AccessibilityControllerClient; class AppListClientImpl; class AshShellInit; -class CastConfigClientMediaRouter; +class CastConfigControllerMediaRouter; class ChromeNewWindowClient; class ImeControllerClient; class KioskNextShellClient; @@ -66,6 +66,8 @@ // Initialized in PreProfileInit in all configs before Shell init: std::unique_ptr<NetworkConnectDelegateChromeOS> network_connect_delegate_; + std::unique_ptr<CastConfigControllerMediaRouter> + cast_config_controller_media_router_; // Initialized in PreProfileInit if ash config != MASH: std::unique_ptr<AshShellInit> ash_shell_init_; @@ -96,7 +98,6 @@ #endif // Initialized in PostProfileInit in all configs: - std::unique_ptr<CastConfigClientMediaRouter> cast_config_client_media_router_; std::unique_ptr<KioskNextShellClient> kiosk_next_shell_client_; std::unique_ptr<LoginScreenClient> login_screen_client_; std::unique_ptr<MediaClient> media_client_;
diff --git a/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc b/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc index 48a13856..37835e77 100644 --- a/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc +++ b/chrome/browser/ui/ash/system_tray_tray_cast_browsertest_media_router_chromeos.cc
@@ -6,6 +6,7 @@ #include <vector> #include "ash/public/cpp/ash_view_ids.h" +#include "ash/public/cpp/cast_config_controller.h" #include "ash/public/interfaces/ash_message_center_controller.mojom-test-utils.h" #include "ash/public/interfaces/ash_message_center_controller.mojom.h" #include "ash/public/interfaces/constants.mojom.h" @@ -16,7 +17,7 @@ #include "chrome/browser/media/router/media_routes_observer.h" #include "chrome/browser/media/router/media_sinks_observer.h" #include "chrome/browser/media/router/test/mock_media_router.h" -#include "chrome/browser/ui/ash/cast_config_client_media_router.h" +#include "chrome/browser/ui/ash/cast_config_controller_media_router.h" #include "chrome/common/media_router/media_source_helper.h" #include "chrome/test/base/in_process_browser_test.h" #include "content/public/common/service_manager_connection.h" @@ -92,6 +93,13 @@ private: // InProcessBrowserTest: + void SetUp() override { + // This makes sure CastDeviceCache is not initialized until after the + // MockMediaRouter is ready. (MockMediaRouter can't be constructed yet.) + CastConfigControllerMediaRouter::SetMediaRouterForTest(nullptr); + InProcessBrowserTest::SetUp(); + } + void PreRunTestOnMainThread() override { media_router_ = std::make_unique<media_router::MockMediaRouter>(); ON_CALL(*media_router_, RegisterMediaSinksObserver(_)) @@ -100,7 +108,7 @@ ON_CALL(*media_router_, RegisterMediaRoutesObserver(_)) .WillByDefault(Invoke( this, &SystemTrayTrayCastMediaRouterChromeOSTest::CaptureRoutes)); - CastConfigClientMediaRouter::SetMediaRouterForTest(media_router_.get()); + CastConfigControllerMediaRouter::SetMediaRouterForTest(media_router_.get()); InProcessBrowserTest::PreRunTestOnMainThread(); } @@ -119,7 +127,7 @@ void PostRunTestOnMainThread() override { InProcessBrowserTest::PostRunTestOnMainThread(); - CastConfigClientMediaRouter::SetMediaRouterForTest(nullptr); + CastConfigControllerMediaRouter::SetMediaRouterForTest(nullptr); } bool CaptureSink(media_router::MediaSinksObserver* media_sinks_observer) {
diff --git a/chrome/browser/ui/autofill/autofill_popup_layout_model.cc b/chrome/browser/ui/autofill/autofill_popup_layout_model.cc index b1402b1..088ca8f 100644 --- a/chrome/browser/ui/autofill/autofill_popup_layout_model.cc +++ b/chrome/browser/ui/autofill/autofill_popup_layout_model.cc
@@ -13,7 +13,7 @@ #include "chrome/browser/android/android_theme_resources.h" #include "chrome/browser/ui/autofill/autofill_popup_view.h" #include "chrome/browser/ui/autofill/popup_constants.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/popup_item_ids.h" #include "components/autofill/core/browser/suggestion.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl.h b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl.h index 3fccd9c7..64072d0 100644 --- a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl.h +++ b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "chrome/browser/ui/autofill/payments/save_card_ui.h" #include "components/autofill/core/browser/autofill_client.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/sync_utils.h" #include "components/autofill/core/browser/ui/payments/save_card_bubble_controller.h" #include "components/security_state/core/security_state.h"
diff --git a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc index 0893dbbf..7086360 100644 --- a/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc +++ b/chrome/browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc
@@ -22,7 +22,7 @@ #include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/sync_utils.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc index 39211448..34d7e739 100644 --- a/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc +++ b/chrome/browser/ui/bookmarks/bookmark_context_menu_controller.cc
@@ -43,7 +43,7 @@ constexpr UserMetricsAction kBookmarkBarNewBackgroundTab( "BookmarkBar_ContextMenu_OpenAll"); constexpr UserMetricsAction kBookmarkBarNewWindow( - "BookmarkBar_ContextMenu_OpenAll"); + "BookmarkBar_ContextMenu_OpenAllInNewWindow"); constexpr UserMetricsAction kBookmarkBarIncognito( "BookmarkBar_ContextMenu_OpenAllIncognito"); constexpr UserMetricsAction kAppMenuBookmarksNewBackgroundTab(
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 5230064..7460dcb 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc
@@ -148,7 +148,7 @@ #include "chrome/browser/ui/tabs/tab_menu_model.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/tabs/tab_utils.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/ui/webui/signin/login_ui_service.h" #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" #include "chrome/browser/ui/window_sizer/window_sizer.h" @@ -284,7 +284,7 @@ #endif } -std::unique_ptr<WebAppBrowserController> MaybeCreateWebAppController( +std::unique_ptr<web_app::AppBrowserController> MaybeCreateWebAppController( Browser* browser) { #if BUILDFLAG(ENABLE_EXTENSIONS) const std::string extension_id = @@ -427,7 +427,7 @@ location_bar_model_delegate_(new BrowserLocationBarModelDelegate(this)), live_tab_context_(new BrowserLiveTabContext(this)), synced_window_delegate_(new BrowserSyncedWindowDelegate(this)), - web_app_controller_(MaybeCreateWebAppController(this)), + app_controller_(MaybeCreateWebAppController(this)), bookmark_bar_state_(BookmarkBar::HIDDEN), command_controller_(new chrome::BrowserCommandController(this)), window_has_shown_(false), @@ -482,8 +482,8 @@ : CreateBrowserWindow(std::unique_ptr<Browser>(this), params.user_gesture); - if (web_app_controller_) - web_app_controller_->UpdateToolbarVisibility(false); + if (app_controller_) + app_controller_->UpdateToolbarVisibility(false); // Create the extension window controller before sending notifications. extension_window_controller_.reset( @@ -677,9 +677,8 @@ // |contents| can be NULL because GetWindowTitleForCurrentTab is called by the // window during the window's creation (before tabs have been added). if (contents) { - title = FormatTitleForDisplay(web_app_controller_ - ? web_app_controller_->GetTitle() - : contents->GetTitle()); + title = FormatTitleForDisplay(app_controller_ ? app_controller_->GetTitle() + : contents->GetTitle()); } // If there is no title, leave it empty for apps. @@ -695,9 +694,8 @@ // ensures that the native window gets a title which is important for a11y, // for example the window selector uses the Aura window title. if (title.empty() && is_app() && include_app_name) { - return base::UTF8ToUTF16(web_app_controller_ - ? web_app_controller_->GetAppShortName() - : app_name()); + return base::UTF8ToUTF16( + app_controller_ ? app_controller_->GetAppShortName() : app_name()); } // Include the app name in window titles for tabbed browser windows when @@ -1406,8 +1404,8 @@ content::INVALIDATE_TYPE_TAB)) command_controller_->TabStateChanged(); - if (web_app_controller_) - web_app_controller_->UpdateToolbarVisibility(true); + if (app_controller_) + app_controller_->UpdateToolbarVisibility(true); } void Browser::VisibleSecurityStateChanged(WebContents* source) { @@ -1417,8 +1415,8 @@ if (tab_strip_model_->GetActiveWebContents() == source) { UpdateToolbar(false); - if (web_app_controller_) - web_app_controller_->UpdateToolbarVisibility(true); + if (app_controller_) + app_controller_->UpdateToolbarVisibility(true); } } @@ -2589,7 +2587,7 @@ return !is_trusted_source(); // Web apps always support a location bar. - if (web_app_controller_) + if (app_controller_) return true; return false; @@ -2625,7 +2623,7 @@ // Web apps should always support the toolbar, so the title/origin of the // current page can be shown when browsing a url that is not inside the app. // Note: Final determination of whether or not the toolbar is shown is made by - // the |WebAppBrowserController|. + // the |AppBrowserController|. if (web_app_controller() && web_app_controller()->IsForExperimentalWebAppBrowser()) { features |= FEATURE_TOOLBAR;
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index bce833a9..55d5012 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h
@@ -50,7 +50,6 @@ #include "ui/base/window_open_disposition.h" #include "ui/gfx/geometry/rect.h" #include "ui/shell_dialogs/select_file_dialog.h" -// #include "chrome/browser/ui/web_app_browser_controller.h" #if !defined(OS_ANDROID) #include "components/zoom/zoom_observer.h" @@ -107,7 +106,10 @@ namespace viz { class SurfaceId; } -class WebAppBrowserController; + +namespace web_app { +class AppBrowserController; +} class Browser : public TabStripModelObserver, public content::WebContentsDelegate, @@ -321,11 +323,11 @@ BrowserInstantController* instant_controller() { return instant_controller_.get(); } - const WebAppBrowserController* web_app_controller() const { - return web_app_controller_.get(); + const web_app::AppBrowserController* web_app_controller() const { + return app_controller_.get(); } - WebAppBrowserController* web_app_controller() { - return web_app_controller_.get(); + web_app::AppBrowserController* web_app_controller() { + return app_controller_.get(); } #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) @@ -1083,7 +1085,7 @@ // Helper which handles bookmark app specific browser configuration. // This must be initialized before |command_controller_| to ensure the correct // set of commands are enabled. - std::unique_ptr<WebAppBrowserController> web_app_controller_; + std::unique_ptr<web_app::AppBrowserController> app_controller_; BookmarkBar::State bookmark_bar_state_;
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 970c19e..bbfb1ce1 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc
@@ -34,6 +34,7 @@ #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" +#include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/chrome_pages.h" #include "chrome/browser/ui/extensions/application_launch.h" @@ -41,7 +42,7 @@ #include "chrome/browser/ui/page_info/page_info_dialog.h" #include "chrome/browser/ui/singleton_tabs.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/ui/webui/inspect_ui.h" #include "chrome/common/content_restriction.h" #include "chrome/common/pref_names.h" @@ -101,6 +102,33 @@ namespace chrome { +namespace { + +// Ensures that - if we have not popped up an infobar to prompt the user to e.g. +// reload the current page - that the content pane of the browser is refocused. +void AppInfoDialogClosedCallback(content::WebContents* web_contents, + views::Widget::ClosedReason /* unused */, + bool reload_prompt) { + if (reload_prompt) + return; + + // Ensure that the web contents handle we have is still valid. It's possible + // (though unlikely) that either the browser or web contents has been pulled + // out from underneath us. + Browser* const browser = chrome::FindBrowserWithWebContents(web_contents); + if (!browser) + return; + + // We want to focus the active web contents, which again, might not be the + // original web contents (though it should be the vast majority of the time). + content::WebContents* const active_contents = + browser->tab_strip_model()->GetActiveWebContents(); + if (active_contents) + active_contents->Focus(); +} + +} // namespace + /////////////////////////////////////////////////////////////////////////////// // BrowserCommandController, public: @@ -706,11 +734,17 @@ browser_, browser_->tab_strip_model()->GetActiveWebContents()->GetVisibleURL()); break; - case IDC_HOSTED_APP_MENU_APP_INFO: - ShowPageInfoDialog(browser_->tab_strip_model()->GetActiveWebContents(), - bubble_anchor_util::kAppMenuButton); + case IDC_HOSTED_APP_MENU_APP_INFO: { + content::WebContents* const web_contents = + browser_->tab_strip_model()->GetActiveWebContents(); + if (web_contents) { + ShowPageInfoDialog(web_contents, + base::BindOnce(&AppInfoDialogClosedCallback, + base::Unretained(web_contents)), + bubble_anchor_util::kAppMenuButton); + } break; - + } default: LOG(WARNING) << "Received Unimplemented Command: " << id; break; @@ -934,7 +968,7 @@ normal_window || browser_->is_app()); const bool is_experimental_hosted_app = - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser_); + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser_); // Hosted app browser commands. command_updater_.UpdateCommandEnabled(IDC_COPY_URL, is_experimental_hosted_app); @@ -1232,7 +1266,7 @@ void BrowserCommandController::UpdateCommandsForHostedAppAvailability() { bool has_toolbar = browser_->is_type_tabbed() || - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser_); + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser_); if (window() && window()->ShouldHideUIForFullscreen()) has_toolbar = false; command_updater_.UpdateCommandEnabled(IDC_FOCUS_TOOLBAR, has_toolbar);
diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h index 70237b0..cde104d9 100644 --- a/chrome/browser/ui/browser_dialogs.h +++ b/chrome/browser/ui/browser_dialogs.h
@@ -96,7 +96,7 @@ // WebApplicationInfo parameter contains the information about the app, // possibly modified by the user. using AppInstallationAcceptanceCallback = - base::OnceCallback<void(bool, const WebApplicationInfo&)>; + base::OnceCallback<void(bool, std::unique_ptr<WebApplicationInfo>)>; // Shows the Bookmark App bubble. // See Extension::InitFromValueFlags::FROM_BOOKMARK for a description of
diff --git a/chrome/browser/ui/cocoa/page_info/page_info_bubble_views_mac_browsertest.mm b/chrome/browser/ui/cocoa/page_info/page_info_bubble_views_mac_browsertest.mm index 416f984..f02649c 100644 --- a/chrome/browser/ui/cocoa/page_info/page_info_bubble_views_mac_browsertest.mm +++ b/chrome/browser/ui/cocoa/page_info/page_info_bubble_views_mac_browsertest.mm
@@ -58,7 +58,8 @@ IN_PROC_BROWSER_TEST_P(PageInfoBubbleViewsMacTest, NoCrashOnFullScreenToggle) { ui::test::ScopedFakeNSWindowFullscreen fake_fullscreen; ui_test_utils::NavigateToURL(browser(), GURL(GetParam().url)); - ShowPageInfoDialog(browser()->tab_strip_model()->GetWebContentsAt(0)); + ShowPageInfoDialog(browser()->tab_strip_model()->GetWebContentsAt(0), + base::BindOnce([](views::Widget::CloseReason, bool) {})); ExclusiveAccessManager* access_manager = browser()->exclusive_access_manager(); FullscreenController* fullscreen_controller = @@ -91,7 +92,8 @@ EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); // Show the (internal or external) Page Info bubble and check it's visible. - ShowPageInfoDialog(browser()->tab_strip_model()->GetWebContentsAt(0)); + ShowPageInfoDialog(browser()->tab_strip_model()->GetWebContentsAt(0), + base::BindOnce([](views::Widget::CloseReason, bool) {})); EXPECT_EQ(GetParam().bubble_type, PageInfoBubbleView::GetShownBubbleType()); views::BubbleDialogDelegateView* page_info = PageInfoBubbleView::GetPageInfoBubble();
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc index 3ac5ba5..8d808d4 100644 --- a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc
@@ -90,7 +90,7 @@ // static void HostedAppBrowserController::SetAppPrefsForWebContents( - WebAppBrowserController* controller, + web_app::AppBrowserController* controller, content::WebContents* web_contents) { auto* rvh = web_contents->GetRenderViewHost(); @@ -125,7 +125,7 @@ } HostedAppBrowserController::HostedAppBrowserController(Browser* browser) - : WebAppBrowserController(browser), + : AppBrowserController(browser), extension_id_(web_app::GetAppIdFromApplicationName(browser->app_name())), // If a bookmark app has a URL handler, then it is a PWA. // TODO(https://crbug.com/774918): Replace once there is a more explicit @@ -246,7 +246,7 @@ base::Optional<SkColor> HostedAppBrowserController::GetThemeColor() const { base::Optional<SkColor> web_theme_color = - WebAppBrowserController::GetThemeColor(); + AppBrowserController::GetThemeColor(); if (web_theme_color) return web_theme_color; @@ -273,7 +273,7 @@ return base::UTF8ToUTF16(extension->name()); } - return WebAppBrowserController::GetTitle(); + return AppBrowserController::GetTitle(); } GURL HostedAppBrowserController::GetAppLaunchURL() const { @@ -321,13 +321,13 @@ } void HostedAppBrowserController::OnTabInserted(content::WebContents* contents) { - WebAppBrowserController::OnTabInserted(contents); + AppBrowserController::OnTabInserted(contents); extensions::HostedAppBrowserController::SetAppPrefsForWebContents(this, contents); } void HostedAppBrowserController::OnTabRemoved(content::WebContents* contents) { - WebAppBrowserController::OnTabRemoved(contents); + AppBrowserController::OnTabRemoved(contents); extensions::HostedAppBrowserController::ClearAppPrefsForWebContents(contents); }
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.h b/chrome/browser/ui/extensions/hosted_app_browser_controller.h index 8d26321..963df726 100644 --- a/chrome/browser/ui/extensions/hosted_app_browser_controller.h +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.h
@@ -13,7 +13,7 @@ #include "base/strings/string16.h" #include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "third_party/skia/include/core/SkColor.h" class Browser; @@ -36,11 +36,12 @@ // Class to encapsulate logic to control the browser UI for extension based web // apps. class HostedAppBrowserController : public ExtensionUninstallDialog::Delegate, - public WebAppBrowserController { + public web_app::AppBrowserController { public: // Functions to set preferences that are unique to app windows. - static void SetAppPrefsForWebContents(WebAppBrowserController* controller, - content::WebContents* web_contents); + static void SetAppPrefsForWebContents( + web_app::AppBrowserController* controller, + content::WebContents* web_contents); // Clear preferences that are unique to app windows. static void ClearAppPrefsForWebContents(content::WebContents* web_contents);
diff --git a/chrome/browser/ui/extensions/hosted_app_menu_model.cc b/chrome/browser/ui/extensions/hosted_app_menu_model.cc index 37707766..bca9e1c 100644 --- a/chrome/browser/ui/extensions/hosted_app_menu_model.cc +++ b/chrome/browser/ui/extensions/hosted_app_menu_model.cc
@@ -10,7 +10,7 @@ #include "chrome/browser/media/router/media_router_feature.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" #include "components/strings/grit/components_strings.h" @@ -31,7 +31,7 @@ AddItemWithStringId(IDC_HOSTED_APP_MENU_APP_INFO, IDS_APP_CONTEXT_MENU_SHOW_INFO); int app_info_index = GetItemCount() - 1; - SetMinorText(app_info_index, WebAppBrowserController::FormatUrlOrigin( + SetMinorText(app_info_index, web_app::AppBrowserController::FormatUrlOrigin( browser() ->tab_strip_model() ->GetActiveWebContents()
diff --git a/chrome/browser/ui/managed_ui.cc b/chrome/browser/ui/managed_ui.cc index 3875524..753263a 100644 --- a/chrome/browser/ui/managed_ui.cc +++ b/chrome/browser/ui/managed_ui.cc
@@ -5,18 +5,23 @@ #include "chrome/browser/ui/managed_ui.h" #include "base/feature_list.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process_platform_part.h" #include "chrome/browser/policy/chrome_browser_policy_connector.h" #include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/webui/management_ui_handler.h" #include "chrome/common/chrome_features.h" +#include "chrome/grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/login/demo_mode/demo_session.h" #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "components/user_manager/user_manager.h" +#include "ui/chromeos/devicetype_utils.h" #endif namespace chrome { @@ -71,4 +76,37 @@ return false; } +base::string16 GetManagedUiMenuItemLabel(Profile* profile) { + std::string management_domain = + ManagementUIHandler::GetAccountDomain(profile); + + int string_id = IDS_MANAGED; + std::vector<base::string16> replacements; + if (!management_domain.empty()) { + string_id = IDS_MANAGED_BY; + replacements.push_back(base::UTF8ToUTF16(management_domain)); + } + + return l10n_util::GetStringFUTF16(string_id, replacements, nullptr); +} + +base::string16 GetManagedUiWebUILabel(Profile* profile) { + std::string management_domain = + ManagementUIHandler::GetAccountDomain(profile); + + int string_id = IDS_MANAGED_WITH_HYPERLINK; + + std::vector<base::string16> replacements; + replacements.push_back(base::UTF8ToUTF16(chrome::kChromeUIManagementURL)); +#if defined(OS_CHROMEOS) + replacements.push_back(ui::GetChromeOSDeviceName()); +#endif + if (!management_domain.empty()) { + string_id = IDS_MANAGED_BY_WITH_HYPERLINK; + replacements.push_back(base::UTF8ToUTF16(management_domain)); + } + + return l10n_util::GetStringFUTF16(string_id, replacements, nullptr); +} + } // namespace chrome
diff --git a/chrome/browser/ui/managed_ui.h b/chrome/browser/ui/managed_ui.h index 2c548f26..2fc7db70 100644 --- a/chrome/browser/ui/managed_ui.h +++ b/chrome/browser/ui/managed_ui.h
@@ -5,6 +5,8 @@ #ifndef CHROME_BROWSER_UI_MANAGED_UI_H_ #define CHROME_BROWSER_UI_MANAGED_UI_H_ +#include "base/strings/string16.h" + class Profile; namespace chrome { @@ -21,6 +23,13 @@ // users. bool ShouldDisplayManagedUi(Profile* profile); +// The label for the App Menu item for Managed UI. +base::string16 GetManagedUiMenuItemLabel(Profile* profile); + +// The label for the WebUI footnote for Managed UI. These strings contain HTML +// for an <a> element. +base::string16 GetManagedUiWebUILabel(Profile* profile); + } // namespace chrome #endif // CHROME_BROWSER_UI_MANAGED_UI_H_
diff --git a/chrome/browser/ui/managed_ui_browsertest.cc b/chrome/browser/ui/managed_ui_browsertest.cc index 0e552a0..4f14678f 100644 --- a/chrome/browser/ui/managed_ui_browsertest.cc +++ b/chrome/browser/ui/managed_ui_browsertest.cc
@@ -4,12 +4,14 @@ #include "chrome/browser/ui/managed_ui.h" +#include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" #include "base/values.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/common/chrome_features.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chrome/test/base/testing_profile.h" #include "components/policy/core/browser/browser_policy_connector.h" #include "components/policy/core/common/mock_configuration_policy_provider.h" #include "testing/gmock/include/gmock/gmock.h" @@ -71,3 +73,48 @@ EXPECT_TRUE(chrome::ShouldDisplayManagedUi(browser()->profile())); #endif } + +IN_PROC_BROWSER_TEST_F(ManagedUiTest, GetManagedUiMenuItemLabel) { + TestingProfile::Builder builder; + auto profile = builder.Build(); + + TestingProfile::Builder builder_with_domain; + builder_with_domain.SetProfileName("foobar@example.com"); + auto profile_with_domain = builder_with_domain.Build(); + + EXPECT_EQ(base::UTF8ToUTF16("Managed by your organization"), + chrome::GetManagedUiMenuItemLabel(profile.get())); + EXPECT_EQ(base::UTF8ToUTF16("Managed by example.com"), + chrome::GetManagedUiMenuItemLabel(profile_with_domain.get())); +} + +IN_PROC_BROWSER_TEST_F(ManagedUiTest, GetManagedUiWebUILabel) { + TestingProfile::Builder builder; + auto profile = builder.Build(); + + TestingProfile::Builder builder_with_domain; + builder_with_domain.SetProfileName("foobar@example.com"); + auto profile_with_domain = builder_with_domain.Build(); + +#if !defined(OS_CHROMEOS) + EXPECT_EQ( + base::UTF8ToUTF16( + "Your <a href=\"chrome://management\">browser is managed</a> by your " + "organization"), + chrome::GetManagedUiWebUILabel(profile.get())); + EXPECT_EQ( + base::UTF8ToUTF16( + "Your <a href=\"chrome://management\">browser is managed</a> by " + "example.com"), + chrome::GetManagedUiWebUILabel(profile_with_domain.get())); +#else + EXPECT_EQ( + base::UTF8ToUTF16("Your <a href=\"chrome://management\">Chrome device is " + "managed</a> by your organization"), + chrome::GetManagedUiWebUILabel(profile.get())); + EXPECT_EQ( + base::UTF8ToUTF16("Your <a href=\"chrome://management\">Chrome device is " + "managed</a> by example.com"), + chrome::GetManagedUiWebUILabel(profile_with_domain.get())); +#endif +}
diff --git a/chrome/browser/ui/manifest_web_app_browser_controller.cc b/chrome/browser/ui/manifest_web_app_browser_controller.cc index 3170d0c..f1ff39f 100644 --- a/chrome/browser/ui/manifest_web_app_browser_controller.cc +++ b/chrome/browser/ui/manifest_web_app_browser_controller.cc
@@ -17,7 +17,7 @@ ManifestWebAppBrowserController::ManifestWebAppBrowserController( Browser* browser) - : WebAppBrowserController(browser), app_launch_url_(GURL()) {} + : AppBrowserController(browser), app_launch_url_(GURL()) {} ManifestWebAppBrowserController::~ManifestWebAppBrowserController() = default; @@ -91,6 +91,6 @@ content::WebContents* contents) { if (app_launch_url_.is_empty()) app_launch_url_ = contents->GetURL(); - WebAppBrowserController::OnTabInserted(contents); + AppBrowserController::OnTabInserted(contents); UpdateToolbarVisibility(false); }
diff --git a/chrome/browser/ui/manifest_web_app_browser_controller.h b/chrome/browser/ui/manifest_web_app_browser_controller.h index c96db39..a1a0cd12 100644 --- a/chrome/browser/ui/manifest_web_app_browser_controller.h +++ b/chrome/browser/ui/manifest_web_app_browser_controller.h
@@ -12,7 +12,7 @@ #include "base/strings/string16.h" #include "chrome/browser/extensions/extension_uninstall_dialog.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "content/public/browser/web_contents_observer.h" #include "third_party/skia/include/core/SkColor.h" @@ -24,7 +24,7 @@ // Class to encapsulate logic to control the browser UI for manifest based web // apps or focus mode. -class ManifestWebAppBrowserController : public WebAppBrowserController { +class ManifestWebAppBrowserController : public web_app::AppBrowserController { public: explicit ManifestWebAppBrowserController(Browser* browser); ~ManifestWebAppBrowserController() override;
diff --git a/chrome/browser/ui/page_info/page_info.cc b/chrome/browser/ui/page_info/page_info.cc index 3ccf350..9d7c5ce 100644 --- a/chrome/browser/ui/page_info/page_info.cc +++ b/chrome/browser/ui/page_info/page_info.cc
@@ -513,15 +513,20 @@ PresentSiteData(); } -void PageInfo::OnUIClosing() { +void PageInfo::OnUIClosing(bool* reload_prompt) { + if (reload_prompt) + *reload_prompt = false; #if defined(OS_ANDROID) NOTREACHED(); #else if (show_info_bar_ && web_contents() && !web_contents()->IsBeingDestroyed()) { InfoBarService* infobar_service = InfoBarService::FromWebContents(web_contents()); - if (infobar_service) + if (infobar_service) { PageInfoInfoBarDelegate::Create(infobar_service); + if (reload_prompt) + *reload_prompt = true; + } } #endif }
diff --git a/chrome/browser/ui/page_info/page_info.h b/chrome/browser/ui/page_info/page_info.h index b36e08f..0f62274 100644 --- a/chrome/browser/ui/page_info/page_info.h +++ b/chrome/browser/ui/page_info/page_info.h
@@ -164,7 +164,9 @@ const base::Value& object); // This method is called by the UI when the UI is closing. - void OnUIClosing(); + // If specified, |reload_prompt| is set to whether closing the UI resulted in + // a prompt to the user to reload the page. + void OnUIClosing(bool* reload_prompt); // This method is called when the revoke SSL error bypass button is pressed. void OnRevokeSSLErrorBypassButtonPressed();
diff --git a/chrome/browser/ui/page_info/page_info_dialog.cc b/chrome/browser/ui/page_info/page_info_dialog.cc index df2e839d..670f3c4 100644 --- a/chrome/browser/ui/page_info/page_info_dialog.cc +++ b/chrome/browser/ui/page_info/page_info_dialog.cc
@@ -12,6 +12,7 @@ #include "content/public/browser/web_contents.h" bool ShowPageInfoDialog(content::WebContents* web_contents, + PageInfoClosingCallback closing_callback, bubble_anchor_util::Anchor anchor) { if (!web_contents) return false; @@ -27,9 +28,9 @@ SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(web_contents); - ShowPageInfoDialogImpl(browser, web_contents, entry->GetVirtualURL(), - helper->GetSecurityLevel(), - *helper->GetVisibleSecurityState(), anchor); + ShowPageInfoDialogImpl( + browser, web_contents, entry->GetVirtualURL(), helper->GetSecurityLevel(), + *helper->GetVisibleSecurityState(), anchor, std::move(closing_callback)); if (GetPageInfoDialogCreatedCallbackForTesting()) std::move(GetPageInfoDialogCreatedCallbackForTesting()).Run();
diff --git a/chrome/browser/ui/page_info/page_info_dialog.h b/chrome/browser/ui/page_info/page_info_dialog.h index 97257b9..5728f682 100644 --- a/chrome/browser/ui/page_info/page_info_dialog.h +++ b/chrome/browser/ui/page_info/page_info_dialog.h
@@ -5,9 +5,10 @@ #ifndef CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_DIALOG_H_ #define CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_DIALOG_H_ -#include "base/callback_forward.h" +#include "base/callback.h" #include "chrome/browser/ui/bubble_anchor_util.h" #include "components/security_state/core/security_state.h" +#include "ui/views/widget/widget.h" namespace content { class WebContents; @@ -16,10 +17,18 @@ class GURL; class Browser; +// Callback that happens when the user closes the Page Info UI. +// The second parameter is whether closing the UI caused a reload prompt to be +// displayed to the user. +using PageInfoClosingCallback = + base::OnceCallback<void(views::Widget::ClosedReason, + bool /* reload_prompt */)>; + // Shows PageInfo for the given |web_contents| in its browser. Returns false if // the URL or parent Browser* can not be determined. bool ShowPageInfoDialog( content::WebContents* web_contents, + PageInfoClosingCallback closing_callback, bubble_anchor_util::Anchor = bubble_anchor_util::kLocationBar); // Shows Page Info using the specified information. |virtual_url| is the virtual @@ -32,7 +41,8 @@ const GURL& virtual_url, security_state::SecurityLevel security_level, const security_state::VisibleSecurityState& visible_security_state, - bubble_anchor_util::Anchor); + bubble_anchor_util::Anchor, + PageInfoClosingCallback closing_callback); // Gets the callback to run after a dialog is created. Only used in tests. base::OnceClosure& GetPageInfoDialogCreatedCallbackForTesting();
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc index 0cc5dd7..8a3114f7 100644 --- a/chrome/browser/ui/page_info/page_info_unittest.cc +++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -859,7 +859,8 @@ TEST_F(PageInfoTest, NoInfoBar) { SetDefaultUIExpectations(mock_ui()); EXPECT_EQ(0u, infobar_service()->infobar_count()); - page_info()->OnUIClosing(); + bool unused; + page_info()->OnUIClosing(&unused); EXPECT_EQ(0u, infobar_service()->infobar_count()); } @@ -872,7 +873,8 @@ EXPECT_EQ(0u, infobar_service()->infobar_count()); page_info()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW); - page_info()->OnUIClosing(); + bool unused; + page_info()->OnUIClosing(&unused); ASSERT_EQ(1u, infobar_service()->infobar_count()); infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); @@ -882,7 +884,8 @@ EXPECT_EQ(0u, infobar_service()->infobar_count()); page_info()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_SOUND, CONTENT_SETTING_BLOCK); - page_info()->OnUIClosing(); + bool unused; + page_info()->OnUIClosing(&unused); EXPECT_EQ(0u, infobar_service()->infobar_count()); } @@ -892,7 +895,8 @@ CONTENT_SETTING_BLOCK); page_info()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_SOUND, CONTENT_SETTING_BLOCK); - page_info()->OnUIClosing(); + bool unused; + page_info()->OnUIClosing(&unused); EXPECT_EQ(1u, infobar_service()->infobar_count()); infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
diff --git a/chrome/browser/ui/passwords/manage_passwords_state.cc b/chrome/browser/ui/passwords/manage_passwords_state.cc index 3f466a0..fda40c3 100644 --- a/chrome/browser/ui/passwords/manage_passwords_state.cc +++ b/chrome/browser/ui/passwords/manage_passwords_state.cc
@@ -47,7 +47,7 @@ auto it = std::find_if( forms->begin(), forms->end(), [&updated_form](const std::unique_ptr<autofill::PasswordForm>& form) { - return ArePasswordFormUniqueKeyEqual(*form, updated_form); + return ArePasswordFormUniqueKeysEqual(*form, updated_form); }); if (it != forms->end()) { **it = updated_form; @@ -64,7 +64,7 @@ auto it = std::find_if( forms->begin(), forms->end(), [&form_to_delete](const std::unique_ptr<autofill::PasswordForm>& form) { - return ArePasswordFormUniqueKeyEqual(*form, form_to_delete); + return ArePasswordFormUniqueKeysEqual(*form, form_to_delete); }); if (it != forms->end()) { forms->erase(it);
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc index 388647e..160ec00 100644 --- a/chrome/browser/ui/toolbar/app_menu_model.cc +++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -835,8 +835,9 @@ ui::NativeTheme::kColorId_HighlightedMenuItemForegroundColor); const auto icon = gfx::CreateVectorIcon(vector_icons::kBusinessIcon, kIconSize, color); - AddHighlightedItemWithStringIdAndIcon(IDC_SHOW_MANAGEMENT_PAGE, - IDS_MANAGED_BY_ORG, icon); + AddHighlightedItemWithIcon( + IDC_SHOW_MANAGEMENT_PAGE, + chrome::GetManagedUiMenuItemLabel(browser_->profile()), icon); } #endif // !defined(OS_CHROMEOS)
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc index 49f3e172..9c37909 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views.cc
@@ -14,7 +14,7 @@ #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/chrome_typography.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/legal_message_line.h" #include "components/autofill/core/browser/ui/payments/save_card_bubble_controller.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_offer_bubble_views.cc b/chrome/browser/ui/views/autofill/payments/save_card_offer_bubble_views.cc index 84af3b3..fe9f225d 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_offer_bubble_views.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_offer_bubble_views.cc
@@ -17,7 +17,7 @@ #include "chrome/grit/generated_resources.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/legal_message_line.h" #include "components/autofill/core/browser/ui/payments/save_card_bubble_controller.h" #include "components/autofill/core/browser/validation.h"
diff --git a/chrome/browser/ui/views/chrome_typography_provider.cc b/chrome/browser/ui/views/chrome_typography_provider.cc index fc61b23a..e1ffcda 100644 --- a/chrome/browser/ui/views/chrome_typography_provider.cc +++ b/chrome/browser/ui/views/chrome_typography_provider.cc
@@ -110,18 +110,17 @@ #if defined(OS_WIN) // static int ChromeTypographyProvider::GetPlatformFontHeight(int font_context) { - const bool windows_10 = base::win::GetVersion() >= base::win::Version::WIN10; switch (font_context) { case CONTEXT_HEADLINE: - return windows_10 ? 27 : 28; + return 27; case views::style::CONTEXT_DIALOG_TITLE: - return windows_10 ? 20 : 21; + return 20; case CONTEXT_BODY_TEXT_LARGE: case CONTEXT_TAB_HOVER_CARD_TITLE: case views::style::CONTEXT_MESSAGE_BOX_BODY_TEXT: return 18; case CONTEXT_BODY_TEXT_SMALL: - return windows_10 ? 16 : 15; + return 16; } NOTREACHED(); return 0;
diff --git a/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc b/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc index 51f29db9..0c85cb1 100644 --- a/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc +++ b/chrome/browser/ui/views/extensions/bookmark_app_confirmation_view.cc
@@ -118,15 +118,18 @@ } void BookmarkAppConfirmationView::WindowClosing() { - if (callback_) - std::move(callback_).Run(false, web_app_info_); + if (callback_) { + std::move(callback_).Run( + false, std::make_unique<WebApplicationInfo>(web_app_info_)); + } } bool BookmarkAppConfirmationView::Accept() { web_app_info_.title = GetTrimmedTitle(); web_app_info_.open_as_window = open_as_window_checkbox_ && open_as_window_checkbox_->checked(); - std::move(callback_).Run(true, web_app_info_); + std::move(callback_).Run(true, + std::make_unique<WebApplicationInfo>(web_app_info_)); return true; }
diff --git a/chrome/browser/ui/views/extensions/pwa_confirmation.cc b/chrome/browser/ui/views/extensions/pwa_confirmation.cc index 7ccf50a..48e9f34 100644 --- a/chrome/browser/ui/views/extensions/pwa_confirmation.cc +++ b/chrome/browser/ui/views/extensions/pwa_confirmation.cc
@@ -124,12 +124,15 @@ } void PWAConfirmation::Accept() { - std::move(callback_).Run(true, web_app_info_); + std::move(callback_).Run(true, + std::make_unique<WebApplicationInfo>(web_app_info_)); } void PWAConfirmation::WindowClosing() { - if (callback_) - std::move(callback_).Run(false, web_app_info_); + if (callback_) { + std::move(callback_).Run( + false, std::make_unique<WebApplicationInfo>(web_app_info_)); + } } namespace chrome {
diff --git a/chrome/browser/ui/views/frame/browser_frame.cc b/chrome/browser/ui/views/frame/browser_frame.cc index 35251f5..0346882 100644 --- a/chrome/browser/ui/views/frame/browser_frame.cc +++ b/chrome/browser/ui/views/frame/browser_frame.cc
@@ -173,7 +173,7 @@ bool BrowserFrame::ShouldUseTheme() const { // Browser windows are always themed (including popups). - if (!WebAppBrowserController::IsForExperimentalWebAppBrowser( + if (!web_app::AppBrowserController::IsForExperimentalWebAppBrowser( browser_view_->browser())) { return true; }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc index 043db66..d2ee8ebc 100644 --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
@@ -16,7 +16,7 @@ #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/hosted_app_button_container.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/common/chrome_features.h" #include "chrome/grit/theme_resources.h" #include "third_party/skia/include/core/SkColor.h" @@ -153,7 +153,7 @@ if (frame_->ShouldUseTheme()) return GetThemeProviderForProfile()->GetColor(color_id); - WebAppBrowserController* web_app_controller = + web_app::AppBrowserController* web_app_controller = browser_view_->browser()->web_app_controller(); if (web_app_controller && web_app_controller->GetThemeColor()) return *web_app_controller->GetThemeColor();
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 311b352..b3656fc0 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -111,7 +111,7 @@ #include "chrome/browser/ui/views/toolbar/toolbar_view.h" #include "chrome/browser/ui/views/translate/translate_bubble_view.h" #include "chrome/browser/ui/views/update_recommended_message_box.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/ui/window_sizer/window_sizer.h" #include "chrome/common/channel_info.h" #include "chrome/common/chrome_features.h" @@ -621,7 +621,7 @@ } bool BrowserView::IsBrowserTypeHostedApp() const { - return WebAppBrowserController::IsForExperimentalWebAppBrowser( + return web_app::AppBrowserController::IsForExperimentalWebAppBrowser( browser_.get()); } @@ -2045,7 +2045,8 @@ } gfx::ImageSkia BrowserView::GetWindowAppIcon() { - WebAppBrowserController* app_controller = browser()->web_app_controller(); + web_app::AppBrowserController* app_controller = + browser()->web_app_controller(); return app_controller ? app_controller->GetWindowAppIcon() : GetWindowIcon(); } @@ -2055,7 +2056,8 @@ return gfx::ImageSkia(); // Hosted apps always show their app icon. - WebAppBrowserController* app_controller = browser()->web_app_controller(); + web_app::AppBrowserController* app_controller = + browser()->web_app_controller(); if (app_controller) return app_controller->GetWindowIcon();
diff --git a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc index 2326734..32e506e9 100644 --- a/chrome/browser/ui/views/frame/glass_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/glass_browser_frame_view.cc
@@ -19,7 +19,7 @@ #include "chrome/browser/ui/views/tabs/tab.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/win/titlebar_config.h" #include "content/public/browser/web_contents.h" #include "skia/ext/image_operations.h" @@ -111,7 +111,7 @@ AddChildView(window_title_); } - WebAppBrowserController* controller = + web_app::AppBrowserController* controller = browser_view->browser()->web_app_controller(); if (controller && controller->ShouldShowHostedAppButtonContainer()) { // TODO(alancutter): Avoid snapshotting GetCaptionColor() values here and
diff --git a/chrome/browser/ui/views/frame/hosted_app_origin_text.cc b/chrome/browser/ui/views/frame/hosted_app_origin_text.cc index dc22cf8..1397c33 100644 --- a/chrome/browser/ui/views/frame/hosted_app_origin_text.cc +++ b/chrome/browser/ui/views/frame/hosted_app_origin_text.cc
@@ -10,7 +10,7 @@ #include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" #include "chrome/browser/ui/views/chrome_typography.h" #include "chrome/browser/ui/views/frame/hosted_app_button_container.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "ui/accessibility/ax_node_data.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_sequence.h" @@ -25,7 +25,8 @@ } // namespace HostedAppOriginText::HostedAppOriginText(Browser* browser) { - DCHECK(WebAppBrowserController::IsForExperimentalWebAppBrowser(browser)); + DCHECK( + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser)); SetLayoutManager(std::make_unique<views::FillLayout>());
diff --git a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc index e8ff35c6..b607780 100644 --- a/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc +++ b/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
@@ -20,7 +20,7 @@ #include "chrome/browser/ui/views/tabs/new_tab_button.h" #include "chrome/browser/ui/views/tabs/tab_strip.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/theme_resources.h" #include "components/strings/grit/components_strings.h" @@ -181,7 +181,7 @@ window_title_->SetID(VIEW_ID_WINDOW_TITLE); AddChildView(window_title_); - WebAppBrowserController* controller = + web_app::AppBrowserController* controller = browser_view()->browser()->web_app_controller(); if (controller && controller->ShouldShowHostedAppButtonContainer()) { set_hosted_app_button_container(new HostedAppButtonContainer(
diff --git a/chrome/browser/ui/views/layout_provider_unittest.cc b/chrome/browser/ui/views/layout_provider_unittest.cc index 42aaeab..c640d2f 100644 --- a/chrome/browser/ui/views/layout_provider_unittest.cc +++ b/chrome/browser/ui/views/layout_provider_unittest.cc
@@ -39,17 +39,22 @@ public: LayoutProviderTest() {} -#if defined(OS_WIN) protected: static void SetUpTestCase() { - // The expected case is to have DirectWrite enabled; the fallback gives - // different font heights. However, only use DirectWrite on Windows 10 and - // later, since it's known to have flaky results on Windows 7. See - // http://crbug.com/759870. - if (base::win::GetVersion() >= base::win::Version::WIN10) - gfx::win::InitializeDirectWrite(); - } +#if defined(OS_WIN) + gfx::win::InitializeDirectWrite(); + + // Ensures anti-aliasing is activated. + BOOL antialiasing = TRUE; + BOOL result = + SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &antialiasing, 0); + ASSERT_NE(result, FALSE); + ASSERT_NE(antialiasing, FALSE) + << "The test requires that fonts smoothing (anti-aliasing) is " + "activated. If this assert is failing you need to manually activate " + "the flag in your system fonts settings."; #endif + } private: DISALLOW_COPY_AND_ASSIGN(LayoutProviderTest); @@ -58,23 +63,24 @@ // Check legacy font sizes. No new code should be using these constants, but if // these tests ever fail it probably means something in the old UI will have // changed by mistake. -// Disabled since this relies on machine configuration. http://crbug.com/701241. -TEST_F(LayoutProviderTest, DISABLED_LegacyFontSizeConstants) { +TEST_F(LayoutProviderTest, LegacyFontSizeConstants) { ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); gfx::FontList label_font = rb.GetFontListWithDelta(ui::kLabelFontSizeDelta); - EXPECT_EQ(12, label_font.GetFontSize()); +#if defined(OS_WIN) + EXPECT_EQ(16, label_font.GetHeight()); + EXPECT_EQ(13, label_font.GetBaseline()); +#else EXPECT_EQ(15, label_font.GetHeight()); EXPECT_EQ(12, label_font.GetBaseline()); +#endif + EXPECT_EQ(12, label_font.GetFontSize()); EXPECT_EQ(9, label_font.GetCapHeight()); -// Note some Windows bots report 11,13,11,9 for the above. -// TODO(tapted): Smoke them out and figure out why. #if defined(OS_MACOSX) - EXPECT_EQ(10, label_font.GetExpectedTextWidth(1)); + EXPECT_EQ(7, label_font.GetExpectedTextWidth(1)); #else EXPECT_EQ(6, label_font.GetExpectedTextWidth(1)); -// Some Windows bots may say 5. #endif gfx::FontList title_font = rb.GetFontListWithDelta(ui::kTitleFontSizeDelta); @@ -104,7 +110,7 @@ if (base::mac::IsOS10_9()) { EXPECT_EQ(7, title_font.GetExpectedTextWidth(1)); } else { - EXPECT_EQ(12, title_font.GetExpectedTextWidth(1)); + EXPECT_EQ(8, title_font.GetExpectedTextWidth(1)); } #else EXPECT_EQ(8, title_font.GetExpectedTextWidth(1)); @@ -142,8 +148,7 @@ // platform starts returning 18 in a standard configuration then the // TypographyProvider must add 4 instead. We do this so that Chrome adapts // correctly to _non-standard_ system font configurations on user machines. -// Disabled since this relies on machine configuration. http://crbug.com/701241. -TEST_F(LayoutProviderTest, DISABLED_RequestFontBySize) { +TEST_F(LayoutProviderTest, RequestFontBySize) { #if defined(OS_MACOSX) constexpr int kBase = 13; #else @@ -311,8 +316,7 @@ // Ensure that line heights reported in a default bot configuration match the // Harmony spec. This test will only run if it detects that the current machine // has the default OS configuration. -// Flaky. http://crbug.com/759870 -TEST_F(LayoutProviderTest, DISABLED_ExplicitTypographyLineHeight) { +TEST_F(LayoutProviderTest, ExplicitTypographyLineHeight) { std::unique_ptr<views::LayoutProvider> layout_provider = ChromeLayoutProvider::CreateLayoutProvider();
diff --git a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc index 18e5e70..65fde94 100644 --- a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.cc
@@ -320,8 +320,11 @@ void CustomTabBarView::OnLocationIconDragged(const ui::MouseEvent& event) {} bool CustomTabBarView::ShowPageInfoDialog() { - return ::ShowPageInfoDialog(GetWebContents(), - bubble_anchor_util::Anchor::kCustomTabBar); + return ::ShowPageInfoDialog( + GetWebContents(), + base::BindOnce(&CustomTabBarView::AppInfoClosedCallback, + weak_factory_.GetWeakPtr()), + bubble_anchor_util::Anchor::kCustomTabBar); } SkColor CustomTabBarView::GetSecurityChipColor( @@ -384,6 +387,24 @@ controller.GoToOffset(offset); } +void CustomTabBarView::AppInfoClosedCallback( + views::Widget::ClosedReason closed_reason, + bool reload_prompt) { + // If we're closing the bubble because the user pressed ESC or because the + // user clicked Close (rather than the user clicking directly on something + // else), we should refocus the location bar. This lets the user tab into the + // "You should reload this page" infobar rather than dumping them back out + // into a stale webpage. + if (!reload_prompt) + return; + if (closed_reason != views::Widget::ClosedReason::kEscKeyPressed && + closed_reason != views::Widget::ClosedReason::kCloseButtonClicked) { + return; + } + + GetFocusManager()->SetFocusedView(location_icon_view_); +} + bool CustomTabBarView::IsShowingOriginForTesting() const { return title_origin_view_ != nullptr && title_origin_view_->IsShowingOriginForTesting();
diff --git a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.h b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.h index 7a2dad43..f03031887d 100644 --- a/chrome/browser/ui/views/location_bar/custom_tab_bar_view.h +++ b/chrome/browser/ui/views/location_bar/custom_tab_bar_view.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_UI_VIEWS_LOCATION_BAR_CUSTOM_TAB_BAR_VIEW_H_ #include "base/macros.h" +#include "base/memory/weak_ptr.h" #include "base/scoped_observer.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h" @@ -81,6 +82,11 @@ // Takes the web contents for the custom tab bar back to the app scope. void GoBackToApp(); + // Called when the AppInfo dialog closes to set the focus on the correct view + // within the browser. + void AppInfoClosedCallback(views::Widget::ClosedReason closed_reason, + bool reload_prompt); + SkColor title_bar_color_; base::string16 last_title_; @@ -94,6 +100,8 @@ views::FlexLayout* layout_manager_; + base::WeakPtrFactory<CustomTabBarView> weak_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(CustomTabBarView); };
diff --git a/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc b/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc index efde62e..839a3bc0 100644 --- a/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc +++ b/chrome/browser/ui/views/location_bar/custom_tab_bar_view_browsertest.cc
@@ -8,7 +8,7 @@ #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/common/chrome_features.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/web_application_info.h" @@ -143,7 +143,7 @@ // |install_interstitial| is true. class UrlHidingWebContentsObserver : public content::WebContentsObserver { public: - UrlHidingWebContentsObserver(content::WebContents* contents) + explicit UrlHidingWebContentsObserver(content::WebContents* contents) : content::WebContentsObserver(contents), install_interstitial_(true) {} void DidFinishNavigation(content::NavigationHandle* handle) override { @@ -225,7 +225,7 @@ BrowserView* browser_view_; LocationBarView* location_bar_; CustomTabBarView* custom_tab_bar_; - WebAppBrowserController* web_app_controller_; + web_app::AppBrowserController* web_app_controller_; net::EmbeddedTestServer* https_server() { return &https_server_; }
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index 05eac8d1..36ba6015 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -58,7 +58,7 @@ #include "chrome/browser/ui/views/page_action/omnibox_page_action_icon_container_view.h" #include "chrome/browser/ui/views/page_info/page_info_bubble_view.h" #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/common/chrome_features.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" @@ -864,7 +864,7 @@ } bool LocationBarView::RefreshContentSettingViews() { - if (WebAppBrowserController::IsForExperimentalWebAppBrowser(browser_)) { + if (web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser_)) { // For hosted apps, the location bar is normally hidden and icons appear in // the window frame instead. GetWidget()->non_client_view()->ResetWindowControls(); @@ -881,7 +881,7 @@ } void LocationBarView::RefreshPageActionIconViews() { - if (WebAppBrowserController::IsForExperimentalWebAppBrowser(browser_)) { + if (web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser_)) { // For hosted apps, the location bar is normally hidden and icons appear in // the window frame instead. GetWidget()->non_client_view()->ResetWindowControls(); @@ -956,6 +956,24 @@ return omnibox_view_->model()->popup_model()->view(); } +void LocationBarView::OnPageInfoBubbleClosed( + views::Widget::ClosedReason closed_reason, + bool reload_prompt) { + // If we're closing the bubble because the user pressed ESC or because the + // user clicked Close (rather than the user clicking directly on something + // else), we should refocus the location bar. This lets the user tab into the + // "You should reload this page" infobar rather than dumping them back out + // into a stale webpage. + if (!reload_prompt) + return; + if (closed_reason != views::Widget::ClosedReason::kEscKeyPressed && + closed_reason != views::Widget::ClosedReason::kCloseButtonClicked) { + return; + } + + FocusLocation(false); +} + //////////////////////////////////////////////////////////////////////////////// // LocationBarView, private LocationBar implementation: @@ -1298,7 +1316,9 @@ PageInfoBubbleView::CreatePageInfoBubble( this, gfx::Rect(), GetWidget()->GetNativeWindow(), profile(), contents, entry->GetVirtualURL(), helper->GetSecurityLevel(), - *helper->GetVisibleSecurityState()); + *helper->GetVisibleSecurityState(), + base::BindOnce(&LocationBarView::OnPageInfoBubbleClosed, + weak_factory_.GetWeakPtr())); bubble->SetHighlightedButton(location_icon_view()); bubble->GetWidget()->Show(); return true;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 686229c..1877f19 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -304,6 +304,10 @@ // Gets the OmniboxPopupView associated with the model in |omnibox_view_|. OmniboxPopupView* GetOmniboxPopupView(); + // Called when the page info bubble is closed. + void OnPageInfoBubbleClosed(views::Widget::ClosedReason closed_reason, + bool reload_prompt); + // LocationBar: GURL GetDestinationURL() const override; WindowOpenDisposition GetWindowOpenDisposition() const override; @@ -449,11 +453,7 @@ ui::MaterialDesignControllerObserver> md_observer_{this}; - // Used to scope the lifetime of asynchronous icon fetch callbacks to the - // lifetime of the object. Weak pointers issued by this factory are - // invalidated whenever we start a new icon fetch, so don't use this weak - // factory for any other purposes. - base::WeakPtrFactory<LocationBarView> icon_fetch_weak_ptr_factory_{this}; + base::WeakPtrFactory<LocationBarView> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(LocationBarView); };
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc index 9f0815e..742e353 100644 --- a/chrome/browser/ui/views/page_info/page_info_bubble_view.cc +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.cc
@@ -440,7 +440,8 @@ content::WebContents* web_contents, const GURL& url, security_state::SecurityLevel security_level, - const security_state::VisibleSecurityState& visible_security_state) { + const security_state::VisibleSecurityState& visible_security_state, + PageInfoClosingCallback closing_callback) { gfx::NativeView parent_view = platform_util::GetViewForWindow(parent_window); if (url.SchemeIs(content::kChromeUIScheme) || @@ -452,9 +453,9 @@ web_contents, url); } - return new PageInfoBubbleView(anchor_view, anchor_rect, parent_view, profile, - web_contents, url, security_level, - visible_security_state); + return new PageInfoBubbleView( + anchor_view, anchor_rect, parent_view, profile, web_contents, url, + security_level, visible_security_state, std::move(closing_callback)); } PageInfoBubbleView::PageInfoBubbleView( @@ -465,19 +466,15 @@ content::WebContents* web_contents, const GURL& url, security_state::SecurityLevel security_level, - const security_state::VisibleSecurityState& visible_security_state) + const security_state::VisibleSecurityState& visible_security_state, + PageInfoClosingCallback closing_callback) : PageInfoBubbleViewBase(anchor_view, anchor_rect, parent_window, PageInfoBubbleViewBase::BUBBLE_PAGE_INFO, web_contents), profile_(profile), - header_(nullptr), - site_settings_view_(nullptr), - cookie_button_(nullptr), - certificate_button_(nullptr), - page_feature_info_view_(nullptr), - weak_factory_(this) { + closing_callback_(std::move(closing_callback)) { // Capture the default bubble margin, and move it to the Layout classes. This // is necessary so that the views::Separator can extend the full width of the // bubble. @@ -562,24 +559,9 @@ void PageInfoBubbleView::OnWidgetDestroying(views::Widget* widget) { PageInfoBubbleViewBase::OnWidgetDestroying(widget); - presenter_->OnUIClosing(); - - // If we're closing the bubble because the user pressed ESC or because the - // user clicked Close (rather than the user clicking directly on something - // else), we should refocus the Omnibox. This lets the user tab into the - // "You should reload this page" infobar rather than dumping them back out - // into a stale webpage. - const views::Widget::ClosedReason closed_reason = - GetWidget()->closed_reason(); - if (closed_reason == views::Widget::ClosedReason::kEscKeyPressed || - closed_reason == views::Widget::ClosedReason::kCloseButtonClicked) { - // Because of how this bubble shows, the anchor is always in the toolbar, - // which means the infobar with the reload prompt is just after in the focus - // order. - View* const anchor = GetAnchorView(); - if (anchor) - anchor->GetFocusManager()->SetFocusedView(anchor); - } + bool reload_prompt; + presenter_->OnUIClosing(&reload_prompt); + std::move(closing_callback_).Run(GetWidget()->closed_reason(), reload_prompt); } void PageInfoBubbleView::ButtonPressed(views::Button* button, @@ -1041,7 +1023,8 @@ const GURL& virtual_url, security_state::SecurityLevel security_level, const security_state::VisibleSecurityState& visible_security_state, - bubble_anchor_util::Anchor anchor) { + bubble_anchor_util::Anchor anchor, + PageInfoClosingCallback closing_callback) { AnchorConfiguration configuration = GetPageInfoAnchorConfiguration(browser, anchor); gfx::Rect anchor_rect = @@ -1051,7 +1034,7 @@ PageInfoBubbleView::CreatePageInfoBubble( configuration.anchor_view, anchor_rect, parent_window, browser->profile(), web_contents, virtual_url, security_level, - visible_security_state); + visible_security_state, std::move(closing_callback)); bubble->SetHighlightedButton(configuration.highlighted_button); bubble->SetArrow(configuration.bubble_arrow); bubble->GetWidget()->Show();
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view.h b/chrome/browser/ui/views/page_info/page_info_bubble_view.h index f0ecfe6..e4346a6 100644 --- a/chrome/browser/ui/views/page_info/page_info_bubble_view.h +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view.h
@@ -8,9 +8,11 @@ #include <memory> #include <vector> +#include "base/callback.h" #include "base/compiler_specific.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ui/page_info/page_info_dialog.h" #include "chrome/browser/ui/page_info/page_info_ui.h" #include "chrome/browser/ui/views/bubble_anchor_util_views.h" #include "chrome/browser/ui/views/page_info/chosen_object_view_observer.h" @@ -23,6 +25,7 @@ #include "ui/views/controls/link_listener.h" #include "ui/views/controls/separator.h" #include "ui/views/controls/styled_label_listener.h" +#include "ui/views/widget/widget.h" class BubbleHeaderView; class GURL; @@ -48,7 +51,6 @@ namespace views { class Link; class View; -class Widget; } // namespace views // The views implementation of the page info UI. @@ -93,7 +95,8 @@ content::WebContents* web_contents, const GURL& url, security_state::SecurityLevel security_level, - const security_state::VisibleSecurityState& visible_security_state); + const security_state::VisibleSecurityState& visible_security_state, + PageInfoClosingCallback closing_callback); private: friend class PageInfoBubbleViewBrowserTest; @@ -107,7 +110,8 @@ content::WebContents* web_contents, const GURL& url, security_state::SecurityLevel security_level, - const security_state::VisibleSecurityState& visible_security_state); + const security_state::VisibleSecurityState& visible_security_state, + PageInfoClosingCallback closing_callback); // PageInfoBubbleViewBase: gfx::Size CalculatePreferredSize() const override; @@ -167,26 +171,26 @@ // The presenter that controls the Page Info UI. std::unique_ptr<PageInfo> presenter_; - Profile* profile_; + Profile* const profile_; // The header section (containing security-related information). - BubbleHeaderView* header_; + BubbleHeaderView* header_ = nullptr; // The view that contains the certificate, cookie, and permissions sections. - views::View* site_settings_view_; + views::View* site_settings_view_ = nullptr; // The button that opens the "Cookies" dialog. - HoverButton* cookie_button_; + HoverButton* cookie_button_ = nullptr; // The button that opens the "Certificate" dialog. - HoverButton* certificate_button_; + HoverButton* certificate_button_ = nullptr; // The view that contains the "Permissions" table of the bubble. - views::View* permissions_view_; + views::View* permissions_view_ = nullptr; // The view that contains ui related to features on a page, like a presenting // VR page. - views::View* page_feature_info_view_; + views::View* page_feature_info_view_ = nullptr; // The certificate provided by the site, if one exists. scoped_refptr<net::X509Certificate> certificate_; @@ -196,7 +200,9 @@ // |Permission| changes. std::vector<std::unique_ptr<PermissionSelectorRow>> selector_rows_; - base::WeakPtrFactory<PageInfoBubbleView> weak_factory_; + PageInfoClosingCallback closing_callback_; + + base::WeakPtrFactory<PageInfoBubbleView> weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(PageInfoBubbleView); };
diff --git a/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc b/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc index 6cac31b..fbdf4db 100644 --- a/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/page_info/page_info_bubble_view_unittest.cc
@@ -71,11 +71,15 @@ views::View* anchor_view = nullptr; view_ = new PageInfoBubbleView( anchor_view, gfx::Rect(), parent_, profile_, web_contents_, GURL(kUrl), - security_state::NONE, security_state::VisibleSecurityState()); + security_state::NONE, security_state::VisibleSecurityState(), + base::BindOnce(&PageInfoBubbleViewTestApi::OnPageInfoBubbleClosed, + base::Unretained(this), run_loop_.QuitClosure())); } PageInfoBubbleView* view() { return view_; } views::View* permissions_view() { return view_->permissions_view_; } + bool reload_prompt() const { return *reload_prompt_; } + views::Widget::ClosedReason closed_reason() const { return *closed_reason_; } base::string16 GetWindowTitle() { return view_->GetWindowTitle(); } @@ -119,13 +123,26 @@ CreateView(); } + void WaitForBubbleClose() { run_loop_.Run(); } + private: + void OnPageInfoBubbleClosed(base::RepeatingCallback<void()> quit_closure, + views::Widget::ClosedReason closed_reason, + bool reload_prompt) { + closed_reason_ = closed_reason; + reload_prompt_ = reload_prompt; + quit_closure.Run(); + } + PageInfoBubbleView* view_; // Weak. Owned by its Widget. // For recreating the view. gfx::NativeView parent_; Profile* profile_; content::WebContents* web_contents_; + base::RunLoop run_loop_; + base::Optional<bool> reload_prompt_; + base::Optional<views::Widget::ClosedReason> closed_reason_; DISALLOW_COPY_AND_ASSIGN(PageInfoBubbleViewTestApi); }; @@ -629,3 +646,12 @@ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PAGE_INFO_SECURE_SUMMARY), api_->GetWindowTitle()); } + +TEST_F(PageInfoBubbleViewTest, EnsureCloseCallback) { + api_->view()->GetWidget()->CloseWithReason( + views::Widget::ClosedReason::kCloseButtonClicked); + api_->WaitForBubbleClose(); + EXPECT_EQ(false, api_->reload_prompt()); + EXPECT_EQ(views::Widget::ClosedReason::kCloseButtonClicked, + api_->closed_reason()); +}
diff --git a/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc b/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc index bf44f0d..9f55487 100644 --- a/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/contact_info_editor_view_controller.cc
@@ -9,8 +9,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/validating_textfield.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/validation.h"
diff --git a/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc b/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc index 443886ce..668e15b 100644 --- a/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/credit_card_editor_view_controller.cc
@@ -28,7 +28,7 @@ #include "components/autofill/core/browser/address_combobox_model.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/payments_service_url.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc b/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc index a226582..697d0d30 100644 --- a/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc +++ b/chrome/browser/ui/views/payments/cvc_unmask_view_controller.cc
@@ -17,7 +17,7 @@ #include "chrome/browser/ui/views/payments/payment_request_views_util.h" #include "chrome/grit/generated_resources.h" #include "components/autofill/core/browser/autofill_client.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/full_card_request.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/validation.h"
diff --git a/chrome/browser/ui/views/payments/error_message_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/error_message_view_controller_browsertest.cc index fbf8c6727..c6cf98c6 100644 --- a/chrome/browser/ui/views/payments/error_message_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/error_message_view_controller_browsertest.cc
@@ -10,7 +10,7 @@ #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/test/base/ui_test_utils.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "content/public/test/browser_test_utils.h" namespace payments {
diff --git a/chrome/browser/ui/views/payments/order_summary_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/order_summary_view_controller_browsertest.cc index 5979ea5f7..93447730 100644 --- a/chrome/browser/ui/views/payments/order_summary_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/order_summary_view_controller_browsertest.cc
@@ -7,8 +7,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "testing/gtest/include/gtest/gtest.h" namespace payments {
diff --git a/chrome/browser/ui/views/payments/payment_request_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_browsertest.cc index 3342d62..d3e48778 100644 --- a/chrome/browser/ui/views/payments/payment_request_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_browsertest.cc
@@ -12,9 +12,9 @@ #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/common/webui_url_constants.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/content/payment_request.h" #include "components/payments/content/payment_request_web_contents_manager.h" #include "components/web_modal/web_contents_modal_dialog_manager.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc index 8a982c4..b81f90d 100644 --- a/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc +++ b/chrome/browser/ui/views/payments/payment_request_browsertest_base.cc
@@ -27,8 +27,8 @@ #include "chrome/browser/ui/views/payments/view_stack.h" #include "chrome/test/base/ui_test_utils.h" #include "components/autofill/core/browser/address_combobox_model.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/network_session_configurator/common/network_switches.h" #include "components/payments/content/payment_request.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc index 2a63c14..bd3df8c2 100644 --- a/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_can_make_payment_browsertest.cc
@@ -11,7 +11,7 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/features.h" #include "content/public/common/content_features.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc index 5f2b5f1f..578dec6 100644 --- a/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc
@@ -12,9 +12,9 @@ #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/journey_logger.h" #include "content/public/common/content_features.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_completion_status_metrics_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_completion_status_metrics_browsertest.cc index 5c7f9c5..6f466d39 100644 --- a/chrome/browser/ui/views/payments/payment_request_completion_status_metrics_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_completion_status_metrics_browsertest.cc
@@ -10,9 +10,9 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/journey_logger.h" #include "content/public/common/content_features.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_debit_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_debit_browsertest.cc index 6236028..df28659 100644 --- a/chrome/browser/ui/views/payments/payment_request_debit_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_debit_browsertest.cc
@@ -8,7 +8,7 @@ #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/features.h" #include "content/public/common/content_features.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc index 1994fc9..e829fe04 100644 --- a/chrome/browser/ui/views/payments/payment_request_dialog_view.cc +++ b/chrome/browser/ui/views/payments/payment_request_dialog_view.cc
@@ -23,8 +23,8 @@ #include "chrome/browser/ui/views/payments/profile_list_view_controller.h" #include "chrome/browser/ui/views/payments/shipping_address_editor_view_controller.h" #include "chrome/browser/ui/views/payments/shipping_option_view_controller.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/constrained_window/constrained_window_views.h" #include "components/payments/content/payment_request.h" #include "components/strings/grit/components_strings.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_has_enrolled_instrument_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_has_enrolled_instrument_browsertest.cc index cda6c6b..59048db 100644 --- a/chrome/browser/ui/views/payments/payment_request_has_enrolled_instrument_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_has_enrolled_instrument_browsertest.cc
@@ -11,7 +11,7 @@ #include "base/test/scoped_feature_list.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/features.h" #include "content/public/common/content_features.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_journey_logger_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_journey_logger_browsertest.cc index fce8329..c84b9d6 100644 --- a/chrome/browser/ui/views/payments/payment_request_journey_logger_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_journey_logger_browsertest.cc
@@ -11,9 +11,9 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/journey_logger.h" #include "components/ukm/test_ukm_recorder.h" #include "content/public/common/content_features.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_no_update_with_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_no_update_with_browsertest.cc index 69e0051..e6aec8b 100644 --- a/chrome/browser/ui/views/payments/payment_request_no_update_with_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_no_update_with_browsertest.cc
@@ -5,8 +5,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "content/public/test/browser_test_utils.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc index 57c9b6db..619b7e2 100644 --- a/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc
@@ -10,9 +10,9 @@ #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/test/browser_test_utils.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_shipping_address_instance_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_shipping_address_instance_browsertest.cc index 2bece5d9..378622a 100644 --- a/chrome/browser/ui/views/payments/payment_request_shipping_address_instance_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_shipping_address_instance_browsertest.cc
@@ -6,9 +6,9 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace payments { namespace {
diff --git a/chrome/browser/ui/views/payments/payment_request_show_promise_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_show_promise_browsertest.cc index de91a04..6f7ccfa 100644 --- a/chrome/browser/ui/views/payments/payment_request_show_promise_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_show_promise_browsertest.cc
@@ -5,8 +5,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/test/browser_test_utils.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_update_with_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_update_with_browsertest.cc index 4a471e1..27c4a25 100644 --- a/chrome/browser/ui/views/payments/payment_request_update_with_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_update_with_browsertest.cc
@@ -5,8 +5,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "content/public/test/browser_test_utils.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_use_stats_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_use_stats_browsertest.cc index 14dfc32..76d81c2a 100644 --- a/chrome/browser/ui/views/payments/payment_request_use_stats_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_request_use_stats_browsertest.cc
@@ -10,9 +10,9 @@ #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/test/base/ui_test_utils.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/web_modal/web_contents_modal_dialog_manager.h"
diff --git a/chrome/browser/ui/views/payments/payment_request_views_util.cc b/chrome/browser/ui/views/payments/payment_request_views_util.cc index b3288aa..904bc441 100644 --- a/chrome/browser/ui/views/payments/payment_request_views_util.cc +++ b/chrome/browser/ui/views/payments/payment_request_views_util.cc
@@ -15,9 +15,9 @@ #include "chrome/grit/chromium_strings.h" #include "chrome/grit/theme_resources.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/payments/content/icon/icon_size.h"
diff --git a/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc index 4149a07e..f302f2b 100644 --- a/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller_browsertest.cc
@@ -5,9 +5,9 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/strings/grit/components_strings.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc index b453767b..59899a4 100644 --- a/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/profile_list_view_controller_browsertest.cc
@@ -6,8 +6,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "ui/views/controls/label.h"
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc index d0f1f39..2c8031a 100644 --- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller_browsertest.cc
@@ -12,9 +12,9 @@ #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" #include "chrome/browser/ui/views/payments/validating_textfield.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/country_combobox_model.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/region_combobox_model.h" #include "components/autofill/core/browser/test_region_data_loader.h"
diff --git a/chrome/browser/ui/views/payments/shipping_option_view_controller_browsertest.cc b/chrome/browser/ui/views/payments/shipping_option_view_controller_browsertest.cc index c9f139c..f5853c4 100644 --- a/chrome/browser/ui/views/payments/shipping_option_view_controller_browsertest.cc +++ b/chrome/browser/ui/views/payments/shipping_option_view_controller_browsertest.cc
@@ -7,8 +7,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc index d727e12c1..f7628b7d 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -49,7 +49,7 @@ #include "chrome/browser/ui/views/toolbar/reload_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_button.h" #include "chrome/browser/ui/views/toolbar/toolbar_page_action_icon_container_view.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/upgrade_detector/upgrade_detector.h" #include "chrome/common/chrome_features.h" #include "chrome/common/pref_names.h" @@ -107,7 +107,7 @@ return ToolbarView::DisplayMode::NORMAL; if (browser->web_app_controller() && - WebAppBrowserController::IsForExperimentalWebAppBrowser(browser) && + web_app::AppBrowserController::IsForExperimentalWebAppBrowser(browser) && base::FeatureList::IsEnabled(features::kDesktopPWAsCustomTabUI)) return ToolbarView::DisplayMode::CUSTOM_TAB;
diff --git a/chrome/browser/ui/web_app_browser_controller.cc b/chrome/browser/ui/web_applications/app_browser_controller.cc similarity index 61% rename from chrome/browser/ui/web_app_browser_controller.cc rename to chrome/browser/ui/web_applications/app_browser_controller.cc index 1e7fe80..c3c2c870 100644 --- a/chrome/browser/ui/web_app_browser_controller.cc +++ b/chrome/browser/ui/web_applications/app_browser_controller.cc
@@ -1,51 +1,34 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. +// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" -#include "base/strings/utf_string_conversions.h" -#include "chrome/browser/extensions/extension_util.h" -#include "chrome/browser/extensions/tab_helper.h" -#include "chrome/browser/profiles/profile.h" +#include "base/feature_list.h" #include "chrome/browser/ssl/security_state_tab_helper.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" -#include "chrome/browser/ui/extensions/hosted_app_browser_controller.h" -#include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" -#include "chrome/browser/web_applications/components/web_app_helpers.h" #include "chrome/common/chrome_features.h" -#include "chrome/common/extensions/api/url_handlers/url_handlers_parser.h" -#include "chrome/common/extensions/manifest_handlers/app_launch_info.h" -#include "chrome/common/extensions/manifest_handlers/app_theme_color_info.h" #include "components/security_state/core/security_state.h" #include "components/url_formatter/url_formatter.h" -#include "content/public/browser/browser_context.h" +#include "content/public/browser/navigation_controller.h" #include "content/public/browser/navigation_entry.h" -#include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" -#include "content/public/common/url_constants.h" -#include "content/public/common/web_preferences.h" -#include "extensions/browser/extension_registry.h" -#include "extensions/browser/extension_system.h" -#include "extensions/browser/management_policy.h" -#include "extensions/common/constants.h" -#include "extensions/common/extension.h" -#include "third_party/blink/public/mojom/renderer_preferences.mojom.h" -#include "ui/gfx/favicon_size.h" -#include "ui/gfx/image/image_skia.h" +#include "net/base/escape.h" #include "url/gurl.h" +namespace web_app { + // static -bool WebAppBrowserController::IsForExperimentalWebAppBrowser( +bool AppBrowserController::IsForExperimentalWebAppBrowser( const Browser* browser) { return browser && browser->web_app_controller() && browser->web_app_controller()->IsForExperimentalWebAppBrowser(); } // static -base::string16 WebAppBrowserController::FormatUrlOrigin(const GURL& url) { +base::string16 AppBrowserController::FormatUrlOrigin(const GURL& url) { return url_formatter::FormatUrl( url.GetOrigin(), url_formatter::kFormatUrlOmitUsernamePassword | @@ -57,7 +40,7 @@ } // static -bool WebAppBrowserController::IsSiteSecure( +bool AppBrowserController::IsSiteSecure( const content::WebContents* web_contents) { const SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(web_contents); @@ -79,51 +62,51 @@ return false; } -WebAppBrowserController::WebAppBrowserController(Browser* browser) +AppBrowserController::AppBrowserController(Browser* browser) : content::WebContentsObserver(nullptr), browser_(browser) { browser->tab_strip_model()->AddObserver(this); } -WebAppBrowserController::~WebAppBrowserController() { +AppBrowserController::~AppBrowserController() { browser()->tab_strip_model()->RemoveObserver(this); } -bool WebAppBrowserController::IsForExperimentalWebAppBrowser() const { +bool AppBrowserController::IsForExperimentalWebAppBrowser() const { return base::FeatureList::IsEnabled(::features::kDesktopPWAWindowing) || base::FeatureList::IsEnabled(::features::kFocusMode); } -bool WebAppBrowserController::CreatedForInstalledPwa() const { +bool AppBrowserController::CreatedForInstalledPwa() const { return false; } -bool WebAppBrowserController::IsInstalled() const { +bool AppBrowserController::IsInstalled() const { return false; } -bool WebAppBrowserController::IsHostedApp() const { +bool AppBrowserController::IsHostedApp() const { return false; } -bool WebAppBrowserController::CanUninstall() const { +bool AppBrowserController::CanUninstall() const { return false; } -void WebAppBrowserController::Uninstall() { +void AppBrowserController::Uninstall() { NOTREACHED(); return; } -void WebAppBrowserController::UpdateToolbarVisibility(bool animate) const { +void AppBrowserController::UpdateToolbarVisibility(bool animate) const { browser()->window()->UpdateToolbarVisibility(ShouldShowToolbar(), animate); } -void WebAppBrowserController::DidChangeThemeColor( +void AppBrowserController::DidChangeThemeColor( base::Optional<SkColor> theme_color) { browser_->window()->UpdateFrameColor(); } -base::Optional<SkColor> WebAppBrowserController::GetThemeColor() const { +base::Optional<SkColor> AppBrowserController::GetThemeColor() const { base::Optional<SkColor> result; // HTML meta theme-color tag overrides manifest theme_color, see spec: // https://www.w3.org/TR/appmanifest/#theme_color-member @@ -142,7 +125,7 @@ return SkColorSetA(*result, SK_AlphaOPAQUE); } -base::string16 WebAppBrowserController::GetTitle() const { +base::string16 AppBrowserController::GetTitle() const { content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); if (!web_contents) @@ -153,7 +136,7 @@ return entry ? entry->GetTitle() : base::string16(); } -void WebAppBrowserController::OnTabStripModelChanged( +void AppBrowserController::OnTabStripModelChanged( TabStripModel* tab_strip_model, const TabStripModelChange& change, const TabStripSelectionChange& selection) { @@ -166,13 +149,15 @@ } } -void WebAppBrowserController::OnTabInserted(content::WebContents* contents) { +void AppBrowserController::OnTabInserted(content::WebContents* contents) { DCHECK(!web_contents()) << " App windows are single tabbed only"; content::WebContentsObserver::Observe(contents); DidChangeThemeColor(GetThemeColor()); } -void WebAppBrowserController::OnTabRemoved(content::WebContents* contents) { +void AppBrowserController::OnTabRemoved(content::WebContents* contents) { DCHECK_EQ(contents, web_contents()); content::WebContentsObserver::Observe(nullptr); } + +} // namespace web_app
diff --git a/chrome/browser/ui/web_app_browser_controller.h b/chrome/browser/ui/web_applications/app_browser_controller.h similarity index 87% rename from chrome/browser/ui/web_app_browser_controller.h rename to chrome/browser/ui/web_applications/app_browser_controller.h index 4e10bc0f..46b4b60 100644 --- a/chrome/browser/ui/web_app_browser_controller.h +++ b/chrome/browser/ui/web_applications/app_browser_controller.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_WEB_APP_BROWSER_CONTROLLER_H_ -#define CHROME_BROWSER_UI_WEB_APP_BROWSER_CONTROLLER_H_ +#ifndef CHROME_BROWSER_UI_WEB_APPLICATIONS_APP_BROWSER_CONTROLLER_H_ +#define CHROME_BROWSER_UI_WEB_APPLICATIONS_APP_BROWSER_CONTROLLER_H_ #include <string> @@ -20,11 +20,13 @@ class ImageSkia; } +namespace web_app { + // Class to encapsulate logic to control the browser UI for web apps. -class WebAppBrowserController : public TabStripModelObserver, - public content::WebContentsObserver { +class AppBrowserController : public TabStripModelObserver, + public content::WebContentsObserver { public: - ~WebAppBrowserController() override; + ~AppBrowserController() override; // Returns whether |browser| uses the experimental hosted app experience. // Convenience wrapper for checking IsForExperimentalWebAppBrowser() on @@ -103,7 +105,7 @@ const TabStripSelectionChange& selection) override; protected: - explicit WebAppBrowserController(Browser* browser); + explicit AppBrowserController(Browser* browser); // Called by OnTabstripModelChanged(). virtual void OnTabInserted(content::WebContents* contents); virtual void OnTabRemoved(content::WebContents* contents); @@ -111,7 +113,9 @@ private: Browser* const browser_; - DISALLOW_COPY_AND_ASSIGN(WebAppBrowserController); + DISALLOW_COPY_AND_ASSIGN(AppBrowserController); }; -#endif // CHROME_BROWSER_UI_WEB_APP_BROWSER_CONTROLLER_H_ +} // namespace web_app + +#endif // CHROME_BROWSER_UI_WEB_APPLICATIONS_APP_BROWSER_CONTROLLER_H_
diff --git a/chrome/browser/ui/web_app_browser_controller_unittest.cc b/chrome/browser/ui/web_applications/app_browser_controller_unittest.cc similarity index 84% rename from chrome/browser/ui/web_app_browser_controller_unittest.cc rename to chrome/browser/ui/web_applications/app_browser_controller_unittest.cc index 3698a2e4..033a7d1 100644 --- a/chrome/browser/ui/web_app_browser_controller_unittest.cc +++ b/chrome/browser/ui/web_applications/app_browser_controller_unittest.cc
@@ -2,13 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" +namespace web_app { + // Tests that various URLs get formatted as an origin string in the desired way. -TEST(WebAppBrowserController, FormatUrlOrigin) { +TEST(AppBrowserController, FormatUrlOrigin) { constexpr struct { const char* const input; const wchar_t* const expectation; @@ -29,7 +31,9 @@ {"https://xn--36c-tfa.com", L"xn--36c-tfa.com"}, }; for (auto test_case : kTestCases) { - EXPECT_EQ(WebAppBrowserController::FormatUrlOrigin(GURL(test_case.input)), + EXPECT_EQ(AppBrowserController::FormatUrlOrigin(GURL(test_case.input)), base::WideToUTF16(test_case.expectation)); } } + +} // namespace web_app
diff --git a/chrome/browser/ui/web_applications/web_app_dialog_utils.cc b/chrome/browser/ui/web_applications/web_app_dialog_utils.cc index acd66f5c..0e8416f7 100644 --- a/chrome/browser/ui/web_applications/web_app_dialog_utils.cc +++ b/chrome/browser/ui/web_applications/web_app_dialog_utils.cc
@@ -25,26 +25,13 @@ namespace { -// Use tricky function adapters here to connect old API with new unique_ptr -// based API. TODO(loyso): Erase these type adapters. crbug.com/915043. -using AcceptanceCallback = InstallManager::WebAppInstallationAcceptanceCallback; - -void BookmarkAppAcceptanceCallback( - AcceptanceCallback web_app_acceptance_callback, - bool user_accepted, - const WebApplicationInfo& web_app_info) { - std::move(web_app_acceptance_callback) - .Run(user_accepted, std::make_unique<WebApplicationInfo>(web_app_info)); -} - void WebAppInstallDialogCallback( WebappInstallSource install_source, content::WebContents* initiator_web_contents, std::unique_ptr<WebApplicationInfo> web_app_info, ForInstallableSite for_installable_site, - AcceptanceCallback web_app_acceptance_callback) { - chrome::AppInstallationAcceptanceCallback adapted_callback = base::BindOnce( - BookmarkAppAcceptanceCallback, std::move(web_app_acceptance_callback)); + InstallManager::WebAppInstallationAcceptanceCallback + web_app_acceptance_callback) { // This is a copy paste of BookmarkAppHelper::OnIconsDownloaded(). // TODO(https://crbug.com/915043): Delete // BookmarkAppHelper::OnIconsDownloaded(). @@ -53,14 +40,14 @@ web_app_info->open_as_window = true; if (install_source == WebappInstallSource::OMNIBOX_INSTALL_ICON) { chrome::ShowPWAInstallBubble(initiator_web_contents, *web_app_info, - std::move(adapted_callback)); + std::move(web_app_acceptance_callback)); } else { chrome::ShowPWAInstallDialog(initiator_web_contents, *web_app_info, - std::move(adapted_callback)); + std::move(web_app_acceptance_callback)); } } else { chrome::ShowBookmarkAppDialog(initiator_web_contents, *web_app_info, - std::move(adapted_callback)); + std::move(web_app_acceptance_callback)); } }
diff --git a/chrome/browser/ui/web_applications/web_app_ui_delegate_impl.cc b/chrome/browser/ui/web_applications/web_app_ui_delegate_impl.cc index a9fbcf1..64cbe8b 100644 --- a/chrome/browser/ui/web_applications/web_app_ui_delegate_impl.cc +++ b/chrome/browser/ui/web_applications/web_app_ui_delegate_impl.cc
@@ -9,7 +9,7 @@ #include "base/callback.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" -#include "chrome/browser/ui/web_app_browser_controller.h" +#include "chrome/browser/ui/web_applications/app_browser_controller.h" #include "chrome/browser/ui/web_applications/web_app_ui_delegate_impl_factory.h" #include "chrome/browser/web_applications/web_app_provider.h"
diff --git a/chrome/browser/ui/webui/downloads/downloads_ui.cc b/chrome/browser/ui/webui/downloads/downloads_ui.cc index 0b8d0d0..d0518761 100644 --- a/chrome/browser/ui/webui/downloads/downloads_ui.cc +++ b/chrome/browser/ui/webui/downloads/downloads_ui.cc
@@ -25,8 +25,9 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" -#include "chrome/grit/browser_resources.h" #include "chrome/grit/chromium_strings.h" +#include "chrome/grit/downloads_resources.h" +#include "chrome/grit/downloads_resources_map.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/theme_resources.h" #include "components/prefs/pref_service.h" @@ -142,25 +143,10 @@ source->AddResourcePath("crisper.js", IDR_DOWNLOADS_CRISPER_JS); source->SetDefaultResource(IDR_DOWNLOADS_VULCANIZED_HTML); #else - source->AddResourcePath("browser_proxy.html", - IDR_DOWNLOADS_BROWSER_PROXY_HTML); - source->AddResourcePath("browser_proxy.js", IDR_DOWNLOADS_BROWSER_PROXY_JS); - source->AddResourcePath("constants.html", IDR_DOWNLOADS_CONSTANTS_HTML); - source->AddResourcePath("constants.js", IDR_DOWNLOADS_CONSTANTS_JS); - source->AddResourcePath("downloads.js", IDR_DOWNLOADS_DOWNLOADS_JS); - source->AddResourcePath("i18n_setup.html", IDR_DOWNLOADS_I18N_SETUP_HTML); - source->AddResourcePath("icon_loader.html", IDR_DOWNLOADS_ICON_LOADER_HTML); - source->AddResourcePath("icon_loader.js", IDR_DOWNLOADS_ICON_LOADER_JS); - source->AddResourcePath("icons.html", IDR_DOWNLOADS_ICONS_HTML); - source->AddResourcePath("item.html", IDR_DOWNLOADS_ITEM_HTML); - source->AddResourcePath("item.js", IDR_DOWNLOADS_ITEM_JS); - source->AddResourcePath("manager.html", IDR_DOWNLOADS_MANAGER_HTML); - source->AddResourcePath("manager.js", IDR_DOWNLOADS_MANAGER_JS); - source->AddResourcePath("search_service.html", - IDR_DOWNLOADS_SEARCH_SERVICE_HTML); - source->AddResourcePath("search_service.js", IDR_DOWNLOADS_SEARCH_SERVICE_JS); - source->AddResourcePath("toolbar.html", IDR_DOWNLOADS_TOOLBAR_HTML); - source->AddResourcePath("toolbar.js", IDR_DOWNLOADS_TOOLBAR_JS); + for (size_t i = 0; i < kDownloadsResourcesSize; ++i) { + source->AddResourcePath(kDownloadsResources[i].name, + kDownloadsResources[i].value); + } source->SetDefaultResource(IDR_DOWNLOADS_DOWNLOADS_HTML); #endif
diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/webui/managed_ui_handler.cc index 234e7b6..5fd6841e 100644 --- a/chrome/browser/ui/webui/managed_ui_handler.cc +++ b/chrome/browser/ui/webui/managed_ui_handler.cc
@@ -7,7 +7,6 @@ #include <utility> #include "base/bind.h" -#include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/policy/profile_policy_connector.h" @@ -15,14 +14,8 @@ #include "chrome/browser/ui/managed_ui.h" #include "chrome/common/pref_names.h" #include "chrome/common/webui_url_constants.h" -#include "chrome/grit/generated_resources.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" -#include "ui/base/l10n/l10n_util.h" - -#if defined(OS_CHROMEOS) -#include "ui/chromeos/devicetype_utils.h" -#endif namespace { @@ -117,16 +110,8 @@ std::unique_ptr<base::DictionaryValue> ManagedUIHandler::GetDataSourceUpdate() const { auto update = std::make_unique<base::DictionaryValue>(); - update->SetKey("managedByOrg", - base::Value(l10n_util::GetStringFUTF16( - IDS_MANAGED_BY_ORG_WITH_HYPERLINK, - base::UTF8ToUTF16(chrome::kChromeUIManagementURL) -#if defined(OS_CHROMEOS) - , - ui::GetChromeOSDeviceName() -#endif - ))); + base::Value(chrome::GetManagedUiWebUILabel(profile_))); update->SetKey("isManaged", base::Value(managed_)); return update; }
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index 16e0616..21858f4 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1418,6 +1418,8 @@ {"spellCheckEnhancedDescription", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION}, #if !defined(OS_MACOSX) + {"spellCheckDisabledReason", + IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON}, {"spellCheckLanguagesListTitle", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_LANGUAGES_LIST_TITLE}, {"manageSpellCheck", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_MANAGE}, @@ -2215,17 +2217,24 @@ const bool is_assistant_allowed = assistant::IsAssistantAllowedForProfile(profile) == ash::mojom::AssistantAllowedState::ALLOWED; + // SplitSettings moves Assistant to the OS settings window. + const bool assistant_in_browser_settings = + is_assistant_allowed && !chromeos::features::IsSplitSettingsEnabled(); #endif LocalizedString localized_strings[] = { #if defined(OS_CHROMEOS) - {"searchPageTitle", is_assistant_allowed ? IDS_SETTINGS_SEARCH_AND_ASSISTANT - : IDS_SETTINGS_SEARCH}, + {"searchPageTitle", assistant_in_browser_settings + ? IDS_SETTINGS_SEARCH_AND_ASSISTANT + : IDS_SETTINGS_SEARCH}, #else {"searchPageTitle", IDS_SETTINGS_SEARCH}, #endif {"searchEnginesManage", IDS_SETTINGS_SEARCH_MANAGE_SEARCH_ENGINES}, #if defined(OS_CHROMEOS) + {"osSearchPageTitle", is_assistant_allowed + ? IDS_SETTINGS_SEARCH_AND_ASSISTANT + : IDS_SETTINGS_SEARCH}, {"searchGoogleAssistant", IDS_SETTINGS_SEARCH_GOOGLE_ASSISTANT}, {"searchGoogleAssistantEnabled", IDS_SETTINGS_SEARCH_GOOGLE_ASSISTANT_ENABLED},
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index aba6aad8..8ff44c72 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni
@@ -138,6 +138,7 @@ # New paks should be added here by default. sources += [ "$root_gen_dir/chrome/component_extension_resources.pak", + "$root_gen_dir/chrome/downloads_resources.pak", "$root_gen_dir/chrome/local_ntp_resources.pak", "$root_gen_dir/chrome/settings_resources.pak", "$root_gen_dir/content/browser/devtools/devtools_resources.pak", @@ -145,6 +146,7 @@ ] deps += [ "//chrome/browser/resources:component_extension_resources", + "//chrome/browser/resources:downloads_resources", "//chrome/browser/resources:local_ntp_resources", "//chrome/browser/resources:settings_resources", "//content/browser/devtools:devtools_resources",
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 7e09d16..74f7163 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc
@@ -168,6 +168,9 @@ // Tells the diagnostics mode to do the requested recovery step(s). const char kDiagnosticsRecovery[] = "diagnostics-recovery"; +// Disable auto-reload of error pages. +const char kDisableAutoReload[] = "disable-auto-reload"; + // Disable several subsystems which run network requests in the background. // This is for use when doing network performance testing to avoid noise in the // measurements. @@ -212,13 +215,6 @@ const char kDisableExtensionsFileAccessCheck[] = "disable-extensions-file-access-check"; -// Disable auto-reload of error pages if offline. -const char kDisableOfflineAutoReload[] = "disable-offline-auto-reload"; - -// Disable only auto-reloading error pages when the tab is visible. -const char kDisableOfflineAutoReloadVisibleOnly[] = - "disable-offline-auto-reload-visible-only"; - // Disable pop-up blocking. const char kDisablePopupBlocking[] = "disable-popup-blocking"; @@ -261,6 +257,9 @@ // Overrides the path of Easy Unlock component app. const char kEasyUnlockAppPath[] = "easy-unlock-app-path"; +// Enable auto-reload of error pages. +const char kEnableAutoReload[] = "enable-auto-reload"; + // If the WebRTC logging private API is active, enables audio debug recordings. const char kEnableAudioDebugRecordingsFromExtension[] = "enable-audio-debug-recordings-from-extension"; @@ -301,13 +300,6 @@ // Enables the network-related benchmarking extensions. const char kEnableNetBenchmarking[] = "enable-net-benchmarking"; -// Enable auto-reload of error pages if offline. -const char kEnableOfflineAutoReload[] = "enable-offline-auto-reload"; - -// Only auto-reload error pages when the tab is visible. -const char kEnableOfflineAutoReloadVisibleOnly[] = - "enable-offline-auto-reload-visible-only"; - // Enables a number of potentially annoying security features (strict mixed // content mode, powerful feature restrictions, etc.) const char kEnablePotentiallyAnnoyingSecurityFeatures[] =
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 25ed4a84..de75a32 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h
@@ -64,6 +64,7 @@ extern const char kDiagnostics[]; extern const char kDiagnosticsFormat[]; extern const char kDiagnosticsRecovery[]; +extern const char kDisableAutoReload[]; extern const char kDisableBackgroundNetworking[]; extern const char kDisableBundledPpapiFlash[]; extern const char kDisableClientSidePhishingDetection[]; @@ -75,8 +76,6 @@ extern const char kDisableExtensions[]; extern const char kDisableExtensionsExcept[]; extern const char kDisableExtensionsFileAccessCheck[]; -extern const char kDisableOfflineAutoReload[]; -extern const char kDisableOfflineAutoReloadVisibleOnly[]; extern const char kDisablePopupBlocking[]; extern const char kDisablePrintPreview[]; extern const char kDisablePromptOnRepost[]; @@ -88,6 +87,7 @@ extern const char kDumpBrowserHistograms[]; extern const char kEasyUnlockAppPath[]; extern const char kEnableAudioDebugRecordingsFromExtension[]; +extern const char kEnableAutoReload[]; extern const char kEnableBookmarkUndo[]; extern const char kEnableCloudPrintProxy[]; extern const char kEnableDeviceDiscoveryNotifications[]; @@ -98,8 +98,6 @@ extern const char kEnableNaCl[]; extern const char kEnableNavigationTracing[]; extern const char kEnableNetBenchmarking[]; -extern const char kEnableOfflineAutoReload[]; -extern const char kEnableOfflineAutoReloadVisibleOnly[]; extern const char kEnablePotentiallyAnnoyingSecurityFeatures[]; extern const char kExtensionContentVerification[]; extern const char kExtensionContentVerificationBootstrap[];
diff --git a/chrome/installer/mac/sign_chrome.py b/chrome/installer/mac/sign_chrome.py index 964cd09b..062457e7 100755 --- a/chrome/installer/mac/sign_chrome.py +++ b/chrome/installer/mac/sign_chrome.py
@@ -86,6 +86,9 @@ config = create_config(args.identity, args.keychain, args.development) paths = model.Paths(args.input, args.output, None) + if not os.path.exists(paths.output): + os.mkdir(paths.output) + pipeline.sign_all(paths, config, package_dmg=not args.no_dmg)
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc index cefa405..8fe751d 100644 --- a/chrome/renderer/net/net_error_helper.cc +++ b/chrome/renderer/net/net_error_helper.cc
@@ -161,14 +161,11 @@ RenderThread::Get()->AddObserver(this); base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); bool auto_reload_enabled = - command_line->HasSwitch(switches::kEnableOfflineAutoReload); - bool auto_reload_visible_only = - command_line->HasSwitch(switches::kEnableOfflineAutoReloadVisibleOnly); + command_line->HasSwitch(switches::kEnableAutoReload); // TODO(mmenke): Consider only creating a NetErrorHelperCore for main frames. // subframes don't need any of the NetErrorHelperCore's extra logic. core_.reset(new NetErrorHelperCore(this, auto_reload_enabled, - auto_reload_visible_only, !render_frame->IsHidden())); render_frame->GetAssociatedInterfaceRegistry()->AddInterface(
diff --git a/chrome/renderer/net/net_error_helper_core.cc b/chrome/renderer/net/net_error_helper_core.cc index 0efd368a..84bba943 100644 --- a/chrome/renderer/net/net_error_helper_core.cc +++ b/chrome/renderer/net/net_error_helper_core.cc
@@ -503,13 +503,11 @@ NetErrorHelperCore::NetErrorHelperCore(Delegate* delegate, bool auto_reload_enabled, - bool auto_reload_visible_only, bool is_visible) : delegate_(delegate), last_probe_status_(error_page::DNS_PROBE_POSSIBLE), can_show_network_diagnostics_dialog_(false), auto_reload_enabled_(auto_reload_enabled), - auto_reload_visible_only_(auto_reload_visible_only), auto_reload_timer_(new base::OneShotTimer()), auto_reload_paused_(false), auto_reload_in_flight_(false), @@ -561,16 +559,12 @@ void NetErrorHelperCore::OnWasShown() { visible_ = true; - if (!auto_reload_visible_only_) - return; if (auto_reload_paused_) MaybeStartAutoReloadTimer(); } void NetErrorHelperCore::OnWasHidden() { visible_ = false; - if (!auto_reload_visible_only_) - return; PauseAutoReloadTimer(); } @@ -935,7 +929,7 @@ committed_error_page_info_->auto_reload_triggered = true; - if (!online_ || (!visible_ && auto_reload_visible_only_)) { + if (!online_ || !visible_) { auto_reload_paused_ = true; return; }
diff --git a/chrome/renderer/net/net_error_helper_core.h b/chrome/renderer/net/net_error_helper_core.h index 4eb7d93..989e9c2f 100644 --- a/chrome/renderer/net/net_error_helper_core.h +++ b/chrome/renderer/net/net_error_helper_core.h
@@ -159,7 +159,6 @@ NetErrorHelperCore(Delegate* delegate, bool auto_reload_enabled, - bool auto_reload_visible_only, bool is_visible); ~NetErrorHelperCore(); @@ -307,9 +306,6 @@ // True if auto-reload is enabled at all. const bool auto_reload_enabled_; - // True if auto-reload should only run when the observed frame is visible. - const bool auto_reload_visible_only_; - // Timer used to wait for auto-reload attempts. std::unique_ptr<base::OneShotTimer> auto_reload_timer_;
diff --git a/chrome/renderer/net/net_error_helper_core_unittest.cc b/chrome/renderer/net/net_error_helper_core_unittest.cc index 5be03054..8ba0cc20 100644 --- a/chrome/renderer/net/net_error_helper_core_unittest.cc +++ b/chrome/renderer/net/net_error_helper_core_unittest.cc
@@ -177,7 +177,7 @@ default_url_(GURL(kFailedUrl)), error_url_(GURL(content::kUnreachableWebDataURL)), tracking_request_count_(0) { - SetUpCore(false, false, true); + SetUpCore(false, true); } ~NetErrorHelperCoreTest() override { @@ -186,13 +186,11 @@ } void SetUpCore(bool auto_reload_enabled, - bool auto_reload_visible_only, bool visible) { // The old value of timer_, if any, will be freed by the old core_ being // destructed, since core_ takes ownership of the timer. timer_ = new base::MockOneShotTimer(); - core_.reset(new NetErrorHelperCore(this, auto_reload_enabled, - auto_reload_visible_only, visible)); + core_.reset(new NetErrorHelperCore(this, auto_reload_enabled, visible)); core_->set_timer_for_testing(base::WrapUnique(timer_)); } @@ -2085,7 +2083,7 @@ public: void SetUp() override { NetErrorHelperCoreTest::SetUp(); - SetUpCore(true, false, true); + SetUpCore(true, true); } }; @@ -2407,7 +2405,7 @@ } TEST_F(NetErrorHelperCoreAutoReloadTest, HiddenAndShown) { - SetUpCore(true, true, true); + SetUpCore(true, true); DoErrorLoad(net::ERR_CONNECTION_RESET); EXPECT_TRUE(timer()->IsRunning()); core()->OnWasHidden(); @@ -2417,7 +2415,7 @@ } TEST_F(NetErrorHelperCoreAutoReloadTest, HiddenWhileOnline) { - SetUpCore(true, true, true); + SetUpCore(true, true); core()->NetworkStateChanged(false); DoErrorLoad(net::ERR_CONNECTION_RESET); EXPECT_FALSE(timer()->IsRunning()); @@ -2439,7 +2437,7 @@ } TEST_F(NetErrorHelperCoreAutoReloadTest, ShownWhileNotReloading) { - SetUpCore(true, true, false); + SetUpCore(true, false); DoErrorLoad(net::ERR_CONNECTION_RESET); EXPECT_FALSE(timer()->IsRunning()); core()->OnWasShown(); @@ -2447,7 +2445,7 @@ } TEST_F(NetErrorHelperCoreAutoReloadTest, ManualReloadShowsError) { - SetUpCore(true, true, true); + SetUpCore(true, true); DoErrorLoad(net::ERR_CONNECTION_RESET); core()->OnStartLoad(NetErrorHelperCore::MAIN_FRAME, NetErrorHelperCore::ERROR_PAGE);
diff --git a/chrome/services/isolated_xr_device/xr_runtime_provider.cc b/chrome/services/isolated_xr_device/xr_runtime_provider.cc index 57aba4d5..735e193 100644 --- a/chrome/services/isolated_xr_device/xr_runtime_provider.cc +++ b/chrome/services/isolated_xr_device/xr_runtime_provider.cc
@@ -40,10 +40,37 @@ } // namespace void IsolatedXRRuntimeProvider::PollForDeviceChanges() { + // If we have multiple devices attached, only return one. This typically will + // only happen if a device could be exposed through multiple APIs, such as + // OpenVR exposing a WMR or Oculus device. + bool disable_other_devices = false; + +#if BUILDFLAG(ENABLE_WINDOWS_MR) + if (check_wmr_) { + bool wmr_available = + !disable_other_devices && wmr_statics_->IsHardwareAvailable(); + disable_other_devices = disable_other_devices || wmr_available; + if (wmr_available && !wmr_device_) { + wmr_device_ = std::make_unique<device::MixedRealityDevice>(); + TraceHardwareAvailable(true, wmr_device_->GetId()); + client_->OnDeviceAdded( + wmr_device_->BindXRRuntimePtr(), wmr_device_->BindGamepadFactory(), + wmr_device_->BindCompositorHost(), wmr_device_->GetId()); + } else if (wmr_device_ && !wmr_available) { + TraceHardwareAvailable(false, wmr_device_->GetId()); + client_->OnDeviceRemoved(wmr_device_->GetId()); + wmr_device_ = nullptr; + } + } +#endif + #if BUILDFLAG(ENABLE_OCULUS_VR) if (check_oculus_) { - bool oculus_available = (oculus_device_ && oculus_device_->IsAvailable()) || - device::OculusDevice::IsHwAvailable(); + bool oculus_available = + !disable_other_devices && + ((oculus_device_ && oculus_device_->IsAvailable()) || + device::OculusDevice::IsHwAvailable()); + disable_other_devices = disable_other_devices || oculus_available; if (oculus_available && !oculus_device_) { oculus_device_ = std::make_unique<device::OculusDevice>(); TraceHardwareAvailable(true, oculus_device_->GetId()); @@ -61,8 +88,11 @@ #if BUILDFLAG(ENABLE_OPENVR) if (check_openvr_) { - bool openvr_available = (openvr_device_ && openvr_device_->IsAvailable()) || - device::OpenVRDevice::IsHwAvailable(); + bool openvr_available = + !disable_other_devices && + ((openvr_device_ && openvr_device_->IsAvailable()) || + device::OpenVRDevice::IsHwAvailable()); + disable_other_devices = disable_other_devices || openvr_available; if (openvr_available && !openvr_device_) { openvr_device_ = std::make_unique<device::OpenVRDevice>(); TraceHardwareAvailable(true, openvr_device_->GetId()); @@ -78,23 +108,6 @@ } #endif -#if BUILDFLAG(ENABLE_WINDOWS_MR) - if (check_wmr_) { - bool wmr_available = wmr_statics_->IsHardwareAvailable(); - if (wmr_available && !wmr_device_) { - wmr_device_ = std::make_unique<device::MixedRealityDevice>(); - TraceHardwareAvailable(true, wmr_device_->GetId()); - client_->OnDeviceAdded( - wmr_device_->BindXRRuntimePtr(), wmr_device_->BindGamepadFactory(), - wmr_device_->BindCompositorHost(), wmr_device_->GetId()); - } else if (wmr_device_ && !wmr_available) { - TraceHardwareAvailable(false, wmr_device_->GetId()); - client_->OnDeviceRemoved(wmr_device_->GetId()); - wmr_device_ = nullptr; - } - } -#endif - if (check_openvr_ || check_oculus_ || check_wmr_) { // Post a task to do this again later. base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 3162398..221f7ea 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3519,7 +3519,7 @@ "../browser/ui/toolbar/toolbar_actions_bar_unittest.cc", "../browser/ui/toolbar/toolbar_actions_bar_unittest.h", "../browser/ui/toolbar/toolbar_actions_model_unittest.cc", - "../browser/ui/web_app_browser_controller_unittest.cc", + "../browser/ui/web_applications/app_browser_controller_unittest.cc", "../browser/ui/webui/browsing_history_handler_unittest.cc", "../browser/ui/webui/dark_mode_handler_unittest.cc", "../browser/ui/webui/downloads/downloads_dom_handler_unittest.cc",
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc index f415cafe..8773337 100644 --- a/chrome/test/base/in_process_browser_test.cc +++ b/chrome/test/base/in_process_browser_test.cc
@@ -226,9 +226,8 @@ // Auto-reload breaks many browser tests, which assume error pages won't be // reloaded out from under them. Tests that expect or desire this behavior can - // append switches::kEnableOfflineAutoReload, which will override the disable - // here. - command_line->AppendSwitch(switches::kDisableOfflineAutoReload); + // append switches::kEnableAutoReload, which will override the disable here. + command_line->AppendSwitch(switches::kDisableAutoReload); // Allow subclasses to change the command line before running any tests. SetUpCommandLine(command_line);
diff --git a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_dominant_color.Nexus_5-19.png.sha1 b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_dominant_color.Nexus_5-19.png.sha1 index 207b17f4..a9c4347 100644 --- a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_dominant_color.Nexus_5-19.png.sha1 +++ b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_dominant_color.Nexus_5-19.png.sha1
@@ -1 +1 @@ -8bc7dfdcdbfc619d454dfa1769de42b202e752fd \ No newline at end of file +ef73f11637ec5cd03f8b6635397c917f0cd78adc \ No newline at end of file
diff --git a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_thumbnail.Nexus_5-19.png.sha1 b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_thumbnail.Nexus_5-19.png.sha1 index f54f4a67..f5edb20d 100644 --- a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_thumbnail.Nexus_5-19.png.sha1 +++ b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_dark_thumbnail.Nexus_5-19.png.sha1
@@ -1 +1 @@ -6a9031b377dc7e0007ba3455304405a7996cd398 \ No newline at end of file +4d62c938b7ecd9250f30a2ee1854812d9dff9c4e \ No newline at end of file
diff --git a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_dominant_color.Nexus_5-19.png.sha1 b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_dominant_color.Nexus_5-19.png.sha1 index bc50dd7..bc1cc40 100644 --- a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_dominant_color.Nexus_5-19.png.sha1 +++ b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_dominant_color.Nexus_5-19.png.sha1
@@ -1 +1 @@ -64244997cb1a91db14bee9021bc9deae3233dc16 \ No newline at end of file +d199e4f28aa526a334400e3326f09464f5e92bd3 \ No newline at end of file
diff --git a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_thumbnail.Nexus_5-19.png.sha1 b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_thumbnail.Nexus_5-19.png.sha1 index 318d2b1b..4eeff12 100644 --- a/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_thumbnail.Nexus_5-19.png.sha1 +++ b/chrome/test/data/android/render_tests/ArticleSnippetsTest.video_suggestion_with_light_thumbnail.Nexus_5-19.png.sha1
@@ -1 +1 @@ -d66e153937d0f4a4399c1b26837ac1942a7fe5a6 \ No newline at end of file +24cdf45e4687fc2d8a642f512dfde554661b7899 \ No newline at end of file
diff --git a/chrome/test/data/local_ntp/local_ntp_browsertest.html b/chrome/test/data/local_ntp/local_ntp_browsertest.html index 2ac65be..2ca3d40 100644 --- a/chrome/test/data/local_ntp/local_ntp_browsertest.html +++ b/chrome/test/data/local_ntp/local_ntp_browsertest.html
@@ -186,7 +186,10 @@ </div> <div id="menu-contents"> <div id="backgrounds-menu" class="menu-panel"> - <div id="backgrounds-upload" class="bg-sel-tile-bg">Upload an image</div> + <div id="backgrounds-upload" class="bg-sel-tile-bg"> + <div id="backgrounds-upload-icon"></div> + <div id="backgrounds-upload-text">$i18n{uploadImage}</div> + </div> <div id="backgrounds-default" class="bg-sel-tile-bg"> <div class="bg-sel-tile-title">Default</div> </div>
diff --git a/chrome/test/data/plugin_power_saver/small_cross_origin_expected.png b/chrome/test/data/plugin_power_saver/small_cross_origin_expected.png index 34f871c..4fdd4c8 100644 --- a/chrome/test/data/plugin_power_saver/small_cross_origin_expected.png +++ b/chrome/test/data/plugin_power_saver/small_cross_origin_expected.png Binary files differ
diff --git a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js index a6c29de..a8c87d3 100644 --- a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js +++ b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
@@ -524,6 +524,7 @@ /** @override */ get extraLibraries() { return super.extraLibraries.concat([ + '../settings/test_util.js', 'manager_test.js', ]); } @@ -570,6 +571,7 @@ /** @override */ get extraLibraries() { return super.extraLibraries.concat([ + '../settings/test_util.js', 'manager_test.js', ]); }
diff --git a/chrome/test/data/webui/extensions/manager_test.js b/chrome/test/data/webui/extensions/manager_test.js index 5479fcc..3e09001 100644 --- a/chrome/test/data/webui/extensions/manager_test.js +++ b/chrome/test/data/webui/extensions/manager_test.js
@@ -35,6 +35,12 @@ setup(function() { manager = document.querySelector('extensions-manager'); + // Wait for the first view to be active before starting tests, if one is + // not active already. Sometimes, on Mac with native HTML imports + // disabled, no views are active at this point. + return manager.$.viewManager.querySelector('.active') ? + Promise.resolve() : + test_util.eventToPromise('view-enter-start', manager); }); test(assert(TestNames.ItemListVisibility), function() {
diff --git a/chrome/test/data/webui/settings/google_assistant_page_test.js b/chrome/test/data/webui/settings/google_assistant_page_test.js index a10fe15..7fa2e4e 100644 --- a/chrome/test/data/webui/settings/google_assistant_page_test.js +++ b/chrome/test/data/webui/settings/google_assistant_page_test.js
@@ -130,7 +130,9 @@ test('hotwordToggleEnabled', function() { let button = page.$$('#google-assistant-hotword-enable'); + let indicator = page.$$('#hotword-policy-pref-indicator'); assertFalse(!!button); + assertFalse(!!indicator); page.setPrefValue('settings.voice_interaction.enabled', true); @@ -141,13 +143,17 @@ Polymer.dom.flush(); button = page.$$('#dsp-hotword-state'); + indicator = page.$$('#hotword-policy-pref-indicator'); assertTrue(!!button); + assertFalse(!!indicator); assertFalse(button.hasAttribute('disabled')); }); test('hotwordToggleDisabled', function() { let button = page.$$('#google-assistant-hotword-enable'); + let indicator = page.$$('#hotword-policy-pref-indicator'); assertFalse(!!button); + assertFalse(!!indicator); page.setPrefValue('settings.voice_interaction.enabled', true); @@ -158,7 +164,9 @@ Polymer.dom.flush(); button = page.$$('#dsp-hotword-state'); + indicator = page.$$('#hotword-policy-pref-indicator'); assertTrue(!!button); + assertTrue(!!indicator); assertTrue(button.hasAttribute('disabled')); });
diff --git a/chrome/test/data/webui/settings/languages_page_tests.js b/chrome/test/data/webui/settings/languages_page_tests.js index 9249f12..dbd0044 100644 --- a/chrome/test/data/webui/settings/languages_page_tests.js +++ b/chrome/test/data/webui/settings/languages_page_tests.js
@@ -659,9 +659,15 @@ return; } + loadTimeData.overrideValues({ + spellCheckDisabledReason: 'no languages!', + }); + assertFalse(languagesPage.$.enableSpellcheckingToggle.disabled); assertTrue( languageHelper.getPref('browser.enable_spellchecking').value); + assertEquals( + languagesPage.$.enableSpellcheckingToggle.subLabel, undefined); // Empty out supported languages languageHelper.setPrefValue('intl.accept_languages', ''); @@ -672,6 +678,9 @@ assertTrue(languagesPage.$.enableSpellcheckingToggle.disabled); assertFalse( languageHelper.getPref('browser.enable_spellchecking').value); + assertEquals( + languagesPage.$.enableSpellcheckingToggle.subLabel, + 'no languages!'); }); test('error handling', function() {
diff --git a/chrome/test/data/webui/settings/settings_ui_browsertest.js b/chrome/test/data/webui/settings/settings_ui_browsertest.js index 28f3848..42893d7 100644 --- a/chrome/test/data/webui/settings/settings_ui_browsertest.js +++ b/chrome/test/data/webui/settings/settings_ui_browsertest.js
@@ -48,13 +48,13 @@ Polymer.dom.flush(); }); - test('basic', function() { + test('showing menu in toolbar', function() { toolbar = assert(ui.$$('cr-toolbar')); - assertTrue(toolbar.showMenu); + assertFalse(toolbar.showMenu); }); test('app drawer', function() { - assertEquals(null, ui.$$('settings-menu')); + assertEquals(null, ui.$$('cr-drawer settings-menu')); const drawer = ui.$.drawer; assertFalse(!!drawer.open); @@ -64,7 +64,7 @@ // Validate that dialog is open and menu is shown so it will animate. assertTrue(drawer.open); - assertTrue(!!ui.$$('settings-menu')); + assertTrue(!!ui.$$('cr-drawer settings-menu')); return whenDone .then(function() { @@ -76,37 +76,43 @@ // Drawer is closed, but menu is still stamped so // its contents remain visible as the drawer slides // out. - assertTrue(!!ui.$$('settings-menu')); + assertTrue(!!ui.$$('cr-drawer settings-menu')); }); }); test('advanced UIs stay in sync', function() { const main = ui.$$('settings-main'); + const floatingMenu = ui.$$('#left settings-menu'); assertTrue(!!main); + assertTrue(!!floatingMenu); - assertFalse(!!ui.$$('settings-menu')); + assertFalse(!!ui.$$('cr-drawer settings-menu')); assertFalse(ui.advancedOpened_); + assertFalse(floatingMenu.advancedOpened); assertFalse(main.advancedToggleExpanded); main.advancedToggleExpanded = true; Polymer.dom.flush(); - assertFalse(!!ui.$$('settings-menu')); + assertFalse(!!ui.$$('cr-drawer settings-menu')); assertTrue(ui.advancedOpened_); + assertTrue(floatingMenu.advancedOpened); assertTrue(main.advancedToggleExpanded); ui.$.drawerTemplate.if = true; Polymer.dom.flush(); - const menu = ui.$$('settings-menu'); - assertTrue(!!menu); - assertTrue(menu.advancedOpened); + const drawerMenu = ui.$$('cr-drawer settings-menu'); + assertTrue(!!drawerMenu); + assertTrue(floatingMenu.advancedOpened); + assertTrue(drawerMenu.advancedOpened); - menu.$.advancedButton.click(); + drawerMenu.$.advancedButton.click(); Polymer.dom.flush(); // Check that all values are updated in unison. - assertFalse(menu.advancedOpened); + assertFalse(drawerMenu.advancedOpened); + assertFalse(floatingMenu.advancedOpened); assertFalse(ui.advancedOpened_); assertFalse(main.advancedToggleExpanded); });
diff --git a/chromecast/browser/extensions/cast_extensions_browser_client.cc b/chromecast/browser/extensions/cast_extensions_browser_client.cc index 3593cc6e..4c26ce22 100644 --- a/chromecast/browser/extensions/cast_extensions_browser_client.cc +++ b/chromecast/browser/extensions/cast_extensions_browser_client.cc
@@ -119,7 +119,7 @@ base::FilePath CastExtensionsBrowserClient::GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const { + int* resource_id) const { return base::FilePath(); } @@ -127,7 +127,7 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) {
diff --git a/chromecast/browser/extensions/cast_extensions_browser_client.h b/chromecast/browser/extensions/cast_extensions_browser_client.h index 923e518..f4f633f 100644 --- a/chromecast/browser/extensions/cast_extensions_browser_client.h +++ b/chromecast/browser/extensions/cast_extensions_browser_client.h
@@ -57,12 +57,12 @@ base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const override; + int* resource_id) const override; void LoadResourceFromResourceBundle( const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) override;
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index 72960ad..883e0dc 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -11,8 +11,6 @@ sources = [ "accessory_sheet_data.cc", "accessory_sheet_data.h", - "address.cc", - "address.h", "address_combobox_model.cc", "address_combobox_model.h", "address_contact_form_label_formatter.cc", @@ -42,8 +40,6 @@ "autofill_client.h", "autofill_country.cc", "autofill_country.h", - "autofill_data_model.cc", - "autofill_data_model.h", "autofill_data_util.cc", "autofill_data_util.h", "autofill_download_manager.cc", @@ -68,17 +64,11 @@ "autofill_manager.cc", "autofill_manager.h", "autofill_manager_test_delegate.h", - "autofill_metadata.cc", - "autofill_metadata.h", "autofill_metrics.cc", "autofill_metrics.h", "autofill_observer.cc", "autofill_observer.h", "autofill_popup_delegate.h", - "autofill_profile.cc", - "autofill_profile.h", - "autofill_profile_comparator.cc", - "autofill_profile_comparator.h", "autofill_profile_sync_util.cc", "autofill_profile_sync_util.h", "autofill_profile_validation_util.cc", @@ -93,23 +83,37 @@ "autofill_type.h", "contact_form_label_formatter.cc", "contact_form_label_formatter.h", - "contact_info.cc", - "contact_info.h", "country_combobox_model.cc", "country_combobox_model.h", "country_data.cc", "country_data.h", "country_names.cc", "country_names.h", - "credit_card.cc", - "credit_card.h", + "data_model/address.cc", + "data_model/address.h", + "data_model/autofill_data_model.cc", + "data_model/autofill_data_model.h", + "data_model/autofill_metadata.cc", + "data_model/autofill_metadata.h", + "data_model/autofill_profile.cc", + "data_model/autofill_profile.h", + "data_model/autofill_profile_comparator.cc", + "data_model/autofill_profile_comparator.h", + "data_model/contact_info.cc", + "data_model/contact_info.h", + "data_model/credit_card.cc", + "data_model/credit_card.h", + "data_model/form_group.cc", + "data_model/form_group.h", + "data_model/phone_number.cc", + "data_model/phone_number.h", + "data_model/test_data_creator.cc", + "data_model/test_data_creator.h", "field_filler.cc", "field_filler.h", "field_types.h", "form_data_importer.cc", "form_data_importer.h", - "form_group.cc", - "form_group.h", "form_parsing/address_field.cc", "form_parsing/address_field.h", "form_parsing/autofill_scanner.cc", @@ -186,8 +190,6 @@ "personal_data_manager.cc", "personal_data_manager.h", "personal_data_manager_observer.h", - "phone_number.cc", - "phone_number.h", "phone_number_i18n.cc", "phone_number_i18n.h", "popup_item_ids.h", @@ -210,8 +212,6 @@ "suggestion_selection.cc", "suggestion_selection.h", "sync_utils.h", - "test_data_creator.cc", - "test_data_creator.h", "ui/payments/card_unmask_prompt_controller.h", "ui/payments/card_unmask_prompt_controller_impl.cc", "ui/payments/card_unmask_prompt_controller_impl.h", @@ -491,10 +491,8 @@ "address_normalization_manager_unittest.cc", "address_normalizer_impl_unittest.cc", "address_rewriter_unittest.cc", - "address_unittest.cc", "autocomplete_history_manager_unittest.cc", "autofill_country_unittest.cc", - "autofill_data_model_unittest.cc", "autofill_data_util_unittest.cc", "autofill_download_manager_unittest.cc", "autofill_driver_factory_unittest.cc", @@ -504,17 +502,20 @@ "autofill_manager_unittest.cc", "autofill_merge_unittest.cc", "autofill_metrics_unittest.cc", - "autofill_profile_comparator_unittest.cc", "autofill_profile_sync_util_unittest.cc", - "autofill_profile_unittest.cc", "autofill_profile_validation_util_unittest.cc", "autofill_profile_validator_unittest.cc", "autofill_subject_unittest.cc", "autofill_type_unittest.cc", - "contact_info_unittest.cc", "country_combobox_model_unittest.cc", "country_names_unittest.cc", - "credit_card_unittest.cc", + "data_model/address_unittest.cc", + "data_model/autofill_data_model_unittest.cc", + "data_model/autofill_profile_comparator_unittest.cc", + "data_model/autofill_profile_unittest.cc", + "data_model/contact_info_unittest.cc", + "data_model/credit_card_unittest.cc", + "data_model/phone_number_unittest.cc", "field_filler_unittest.cc", "form_data_importer_unittest.cc", "form_parsing/address_field_unittest.cc", @@ -539,7 +540,6 @@ "payments/strike_database_unittest.cc", "personal_data_manager_unittest.cc", "phone_number_i18n_unittest.cc", - "phone_number_unittest.cc", "proto/legacy_proto_bridge_unittest.cc", "randomized_encoder_unittest.cc", "rationalization_util_unittest.cc",
diff --git a/components/autofill/core/browser/address_combobox_model.cc b/components/autofill/core/browser/address_combobox_model.cc index e7e6fdb3..8f872e1 100644 --- a/components/autofill/core/browser/address_combobox_model.cc +++ b/components/autofill/core/browser/address_combobox_model.cc
@@ -7,7 +7,7 @@ #include <memory> #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter.cc b/components/autofill/core/browser/address_contact_form_label_formatter.cc index 32b1a9de..7cee59e 100644 --- a/components/autofill/core/browser/address_contact_form_label_formatter.cc +++ b/components/autofill/core/browser/address_contact_form_label_formatter.cc
@@ -37,7 +37,8 @@ !IsStreetAddressPart(focused_field_type()); if (focused_group != NAME && !non_street_address_is_focused) { - AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()), &label_parts); + AddLabelPartIfNotEmpty(GetLabelFullName(profile, app_locale()), + &label_parts); } if (!street_address_is_focused) {
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter.h b/components/autofill/core/browser/address_contact_form_label_formatter.h index eb851ca..0890b3b7 100644 --- a/components/autofill/core/browser/address_contact_form_label_formatter.h +++ b/components/autofill/core/browser/address_contact_form_label_formatter.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter.h"
diff --git a/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc b/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc index b9508f2c..cc308ff 100644 --- a/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc +++ b/components/autofill/core/browser/address_contact_form_label_formatter_unittest.cc
@@ -11,8 +11,8 @@ #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/address_email_form_label_formatter.cc b/components/autofill/core/browser/address_email_form_label_formatter.cc index 675bf30..05ad6804 100644 --- a/components/autofill/core/browser/address_email_form_label_formatter.cc +++ b/components/autofill/core/browser/address_email_form_label_formatter.cc
@@ -41,7 +41,8 @@ std::vector<base::string16> label_parts; if (focused_group != NAME) { - AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()), &label_parts); + AddLabelPartIfNotEmpty(GetLabelFullName(profile, app_locale()), + &label_parts); } if (focused_group != ADDRESS_HOME) {
diff --git a/components/autofill/core/browser/address_email_form_label_formatter.h b/components/autofill/core/browser/address_email_form_label_formatter.h index 5c44dba5..ce39061 100644 --- a/components/autofill/core/browser/address_email_form_label_formatter.h +++ b/components/autofill/core/browser/address_email_form_label_formatter.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter.h"
diff --git a/components/autofill/core/browser/address_email_form_label_formatter_unittest.cc b/components/autofill/core/browser/address_email_form_label_formatter_unittest.cc index 34e2a2b..5028083 100644 --- a/components/autofill/core/browser/address_email_form_label_formatter_unittest.cc +++ b/components/autofill/core/browser/address_email_form_label_formatter_unittest.cc
@@ -11,8 +11,8 @@ #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/address_form_label_formatter.cc b/components/autofill/core/browser/address_form_label_formatter.cc index ec88eda..40de741a 100644 --- a/components/autofill/core/browser/address_form_label_formatter.cc +++ b/components/autofill/core/browser/address_form_label_formatter.cc
@@ -26,7 +26,8 @@ field_types_for_labels()); } else { std::vector<base::string16> label_parts; - AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()), &label_parts); + AddLabelPartIfNotEmpty(GetLabelFullName(profile, app_locale()), + &label_parts); AddLabelPartIfNotEmpty(GetLabelForFocusedAddress( focused_field_type(), form_has_street_address_, profile, app_locale(), field_types_for_labels()),
diff --git a/components/autofill/core/browser/address_form_label_formatter.h b/components/autofill/core/browser/address_form_label_formatter.h index e4a97dcd..06aaf6e 100644 --- a/components/autofill/core/browser/address_form_label_formatter.h +++ b/components/autofill/core/browser/address_form_label_formatter.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter.h"
diff --git a/components/autofill/core/browser/address_form_label_formatter_unittest.cc b/components/autofill/core/browser/address_form_label_formatter_unittest.cc index 4f7a554..78fb89d 100644 --- a/components/autofill/core/browser/address_form_label_formatter_unittest.cc +++ b/components/autofill/core/browser/address_form_label_formatter_unittest.cc
@@ -9,8 +9,8 @@ #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/address_i18n.cc b/components/autofill/core/browser/address_i18n.cc index 4eeac11c..36c2f11a 100644 --- a/components/autofill/core/browser/address_i18n.cc +++ b/components/autofill/core/browser/address_i18n.cc
@@ -9,8 +9,8 @@ #include "base/logging.h" #include "base/strings/string_split.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_metadata.h"
diff --git a/components/autofill/core/browser/address_i18n_unittest.cc b/components/autofill/core/browser/address_i18n_unittest.cc index 0f96565a..5c7a18ea 100644 --- a/components/autofill/core/browser/address_i18n_unittest.cc +++ b/components/autofill/core/browser/address_i18n_unittest.cc
@@ -12,8 +12,8 @@ #include "base/guid.h" #include "base/macros.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
diff --git a/components/autofill/core/browser/address_normalization_manager.cc b/components/autofill/core/browser/address_normalization_manager.cc index f9f27c05..a83ef90 100644 --- a/components/autofill/core/browser/address_normalization_manager.cc +++ b/components/autofill/core/browser/address_normalization_manager.cc
@@ -12,7 +12,7 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/address_normalizer.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" namespace autofill {
diff --git a/components/autofill/core/browser/address_normalizer_impl.cc b/components/autofill/core/browser/address_normalizer_impl.cc index 8c2e4f4..a28e5a1 100644 --- a/components/autofill/core/browser/address_normalizer_impl.cc +++ b/components/autofill/core/browser/address_normalizer_impl.cc
@@ -19,7 +19,7 @@ #include "base/time/time.h" #include "components/autofill/core/browser/address_i18n.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "third_party/libaddressinput/chromium/chrome_address_validator.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/address_data.h"
diff --git a/components/autofill/core/browser/address_normalizer_impl_unittest.cc b/components/autofill/core/browser/address_normalizer_impl_unittest.cc index 26d534e..37f0a97 100644 --- a/components/autofill/core/browser/address_normalizer_impl_unittest.cc +++ b/components/autofill/core/browser/address_normalizer_impl_unittest.cc
@@ -11,8 +11,8 @@ #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_task_environment.h" #include "components/autofill/core/browser/address_normalizer.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_storage.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/source.h"
diff --git a/components/autofill/core/browser/address_phone_form_label_formatter.cc b/components/autofill/core/browser/address_phone_form_label_formatter.cc index 97e374b..7954ab4 100644 --- a/components/autofill/core/browser/address_phone_form_label_formatter.cc +++ b/components/autofill/core/browser/address_phone_form_label_formatter.cc
@@ -40,7 +40,8 @@ FieldTypeGroup focused_group) const { std::vector<base::string16> label_parts; if (focused_group != NAME) { - AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()), &label_parts); + AddLabelPartIfNotEmpty(GetLabelFullName(profile, app_locale()), + &label_parts); } if (focused_group != PHONE_HOME) {
diff --git a/components/autofill/core/browser/address_phone_form_label_formatter.h b/components/autofill/core/browser/address_phone_form_label_formatter.h index 231ca9e..3c56a3d6 100644 --- a/components/autofill/core/browser/address_phone_form_label_formatter.h +++ b/components/autofill/core/browser/address_phone_form_label_formatter.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter.h"
diff --git a/components/autofill/core/browser/address_phone_form_label_formatter_unittest.cc b/components/autofill/core/browser/address_phone_form_label_formatter_unittest.cc index caf0e18..bb64ba0 100644 --- a/components/autofill/core/browser/address_phone_form_label_formatter_unittest.cc +++ b/components/autofill/core/browser/address_phone_form_label_formatter_unittest.cc
@@ -11,8 +11,8 @@ #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/autofill_assistant.cc b/components/autofill/core/browser/autofill_assistant.cc index 5cbbd241..7871113 100644 --- a/components/autofill/core/browser/autofill_assistant.cc +++ b/components/autofill/core/browser/autofill_assistant.cc
@@ -8,7 +8,7 @@ #include "base/containers/adapters.h" #include "base/strings/string16.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/components/autofill/core/browser/autofill_assistant_unittest.cc b/components/autofill/core/browser/autofill_assistant_unittest.cc index 365e2f8e..d0177b4 100644 --- a/components/autofill/core/browser/autofill_assistant_unittest.cc +++ b/components/autofill/core/browser/autofill_assistant_unittest.cc
@@ -15,7 +15,7 @@ #include "components/autofill/core/browser/autofill_driver.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/mock_autocomplete_history_manager.h" #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
diff --git a/components/autofill/core/browser/autofill_data_util.cc b/components/autofill/core/browser/autofill_data_util.cc index a13de4a..f697952 100644 --- a/components/autofill/core/browser/autofill_data_util.cc +++ b/components/autofill/core/browser/autofill_data_util.cc
@@ -14,9 +14,9 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/grit/components_scaled_resources.h"
diff --git a/components/autofill/core/browser/autofill_data_util_unittest.cc b/components/autofill/core/browser/autofill_data_util_unittest.cc index 6130ba8..7b1ea28 100644 --- a/components/autofill/core/browser/autofill_data_util_unittest.cc +++ b/components/autofill/core/browser/autofill_data_util_unittest.cc
@@ -5,8 +5,8 @@ #include "components/autofill/core/browser/autofill_data_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "testing/gtest/include/gtest/gtest.h" namespace autofill {
diff --git a/components/autofill/core/browser/autofill_field.h b/components/autofill/core/browser/autofill_field.h index b7f9069..eeb64b7 100644 --- a/components/autofill/core/browser/autofill_field.h +++ b/components/autofill/core/browser/autofill_field.h
@@ -15,8 +15,8 @@ #include "base/macros.h" #include "base/optional.h" #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/proto/password_requirements.pb.h" #include "components/autofill/core/browser/proto/server.pb.h"
diff --git a/components/autofill/core/browser/autofill_ie_toolbar_import_win.cc b/components/autofill/core/browser/autofill_ie_toolbar_import_win.cc index 1edd5bd..4e3f15e 100644 --- a/components/autofill/core/browser/autofill_ie_toolbar_import_win.cc +++ b/components/autofill/core/browser/autofill_ie_toolbar_import_win.cc
@@ -16,14 +16,14 @@ #include "base/strings/string16.h" #include "base/win/registry.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" #include "components/autofill/core/browser/crypto/rc4_decryptor.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/data_model/form_group.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/field_types.h" -#include "components/autofill/core/browser/form_group.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager_observer.h" -#include "components/autofill/core/browser/phone_number.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/os_crypt/os_crypt.h"
diff --git a/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc b/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc index 1d218fc..f8593ff 100644 --- a/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc +++ b/components/autofill/core/browser/autofill_ie_toolbar_import_win_unittest.cc
@@ -9,8 +9,8 @@ #include "base/stl_util.h" #include "base/strings/string16.h" #include "base/win/registry.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/os_crypt/os_crypt.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc index 76089a90..03db74cb 100644 --- a/components/autofill/core/browser/autofill_manager.cc +++ b/components/autofill/core/browser/autofill_manager.cc
@@ -37,17 +37,18 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autocomplete_history_manager.h" #include "components/autofill/core/browser/autofill_client.h" -#include "components/autofill/core/browser/autofill_data_model.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_external_delegate.h" #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_manager_test_delegate.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/form_data_importer.h" #include "components/autofill/core/browser/form_structure.h" @@ -56,7 +57,6 @@ #include "components/autofill/core/browser/metrics/form_events.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/personal_data_manager.h" -#include "components/autofill/core/browser/phone_number.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/popup_item_ids.h" #include "components/autofill/core/browser/randomized_encoder.h"
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc index e04a175..710e226 100644 --- a/components/autofill/core/browser/autofill_manager_unittest.cc +++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -31,9 +31,9 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autocomplete_history_manager.h" #include "components/autofill/core/browser/autofill_download_manager.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/metrics/form_events.h" #include "components/autofill/core/browser/mock_autocomplete_history_manager.h" #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc index 0515f96..8f8695c 100644 --- a/components/autofill/core/browser/autofill_metrics.cc +++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -17,7 +17,7 @@ #include "base/time/time.h" #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_prefs.h"
diff --git a/components/autofill/core/browser/autofill_metrics.h b/components/autofill/core/browser/autofill_metrics.h index 0e0d1d1..c7373a8a 100644 --- a/components/autofill/core/browser/autofill_metrics.h +++ b/components/autofill/core/browser/autofill_metrics.h
@@ -14,8 +14,8 @@ #include "base/macros.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_client.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/form_types.h" #include "components/autofill/core/browser/metrics/form_events.h"
diff --git a/components/autofill/core/browser/autofill_profile_sync_util.cc b/components/autofill/core/browser/autofill_profile_sync_util.cc index 0d6a67f..b960f5e 100644 --- a/components/autofill/core/browser/autofill_profile_sync_util.cc +++ b/components/autofill/core/browser/autofill_profile_sync_util.cc
@@ -10,10 +10,10 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" // TODO(crbug.com/904390): Remove when the investigation is over. -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/proto/autofill_sync.pb.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc b/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc index 3925a7e..350f936 100644 --- a/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc +++ b/components/autofill/core/browser/autofill_profile_sync_util_unittest.cc
@@ -5,8 +5,8 @@ #include "components/autofill/core/browser/autofill_profile_sync_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/core/browser/autofill_profile_validation_util.h b/components/autofill/core/browser/autofill_profile_validation_util.h index 9baf90a..9b19817 100644 --- a/components/autofill/core/browser/autofill_profile_validation_util.h +++ b/components/autofill/core/browser/autofill_profile_validation_util.h
@@ -5,7 +5,7 @@ #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_VALIDATION_UTIL_H_ #define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_VALIDATION_UTIL_H_ -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "third_party/libaddressinput/chromium/chrome_address_validator.h" namespace autofill {
diff --git a/components/autofill/core/browser/autofill_profile_validator.h b/components/autofill/core/browser/autofill_profile_validator.h index 2253b4d4..3f46b76 100644 --- a/components/autofill/core/browser/autofill_profile_validator.h +++ b/components/autofill/core/browser/autofill_profile_validator.h
@@ -14,7 +14,7 @@ #include "base/cancelable_callback.h" #include "base/macros.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "third_party/libaddressinput/chromium/chrome_address_validator.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/source.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/storage.h"
diff --git a/components/autofill/core/browser/autofill_profile_validator_unittest.cc b/components/autofill/core/browser/autofill_profile_validator_unittest.cc index 34203afe..e2cd547c 100644 --- a/components/autofill/core/browser/autofill_profile_validator_unittest.cc +++ b/components/autofill/core/browser/autofill_profile_validator_unittest.cc
@@ -14,8 +14,8 @@ #include "base/guid.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_task_environment.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/libaddressinput/src/cpp/include/libaddressinput/null_storage.h" #include "third_party/libaddressinput/src/cpp/test/testdata_source.h"
diff --git a/components/autofill/core/browser/autofill_test_utils.cc b/components/autofill/core/browser/autofill_test_utils.cc index 9c3e280..ad00a12 100644 --- a/components/autofill/core/browser/autofill_test_utils.cc +++ b/components/autofill/core/browser/autofill_test_utils.cc
@@ -13,8 +13,8 @@ #include "base/time/time.h" #include "build/build_config.h" #include "components/autofill/core/browser/autofill_external_delegate.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/core/browser/autofill_test_utils.h b/components/autofill/core/browser/autofill_test_utils.h index 9b74aab..f8e34221 100644 --- a/components/autofill/core/browser/autofill_test_utils.h +++ b/components/autofill/core/browser/autofill_test_utils.h
@@ -10,8 +10,8 @@ #include <vector> #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/proto/server.pb.h"
diff --git a/components/autofill/core/browser/contact_form_label_formatter.cc b/components/autofill/core/browser/contact_form_label_formatter.cc index 48feb02..aee524f2 100644 --- a/components/autofill/core/browser/contact_form_label_formatter.cc +++ b/components/autofill/core/browser/contact_form_label_formatter.cc
@@ -26,7 +26,8 @@ FieldTypeGroup focused_group) const { std::vector<base::string16> label_parts; if (focused_group != NAME) { - AddLabelPartIfNotEmpty(GetLabelName(profile, app_locale()), &label_parts); + AddLabelPartIfNotEmpty(GetLabelFullName(profile, app_locale()), + &label_parts); } if (focused_group != PHONE_HOME) {
diff --git a/components/autofill/core/browser/contact_form_label_formatter.h b/components/autofill/core/browser/contact_form_label_formatter.h index be4eb1ca..c26852d 100644 --- a/components/autofill/core/browser/contact_form_label_formatter.h +++ b/components/autofill/core/browser/contact_form_label_formatter.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter.h"
diff --git a/components/autofill/core/browser/contact_form_label_formatter_unittest.cc b/components/autofill/core/browser/contact_form_label_formatter_unittest.cc index d9f18e3..ecea6b8 100644 --- a/components/autofill/core/browser/contact_form_label_formatter_unittest.cc +++ b/components/autofill/core/browser/contact_form_label_formatter_unittest.cc
@@ -11,8 +11,8 @@ #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/address.cc b/components/autofill/core/browser/data_model/address.cc similarity index 95% rename from components/autofill/core/browser/address.cc rename to components/autofill/core/browser/data_model/address.cc index f3ab3a3..01686d1 100644 --- a/components/autofill/core/browser/address.cc +++ b/components/autofill/core/browser/data_model/address.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/address.h" +#include "components/autofill/core/browser/data_model/address.h" #include <stddef.h> #include <algorithm> @@ -16,10 +16,10 @@ #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/state_names.h" #include "components/autofill/core/common/autofill_l10n_util.h" @@ -150,9 +150,9 @@ break; case ADDRESS_HOME_STREET_ADDRESS: - street_address_ = base::SplitString( - value, base::ASCIIToUTF16("\n"), - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); + street_address_ = + base::SplitString(value, base::ASCIIToUTF16("\n"), + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); break; default:
diff --git a/components/autofill/core/browser/address.h b/components/autofill/core/browser/data_model/address.h similarity index 88% rename from components/autofill/core/browser/address.h rename to components/autofill/core/browser/data_model/address.h index 9c1721f9..9a71f04 100644 --- a/components/autofill/core/browser/address.h +++ b/components/autofill/core/browser/data_model/address.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_ADDRESS_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_ADDRESS_H_ #include <string> #include <vector> #include "base/compiler_specific.h" #include "base/strings/string16.h" -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" namespace autofill { @@ -63,4 +63,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_ADDRESS_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_ADDRESS_H_
diff --git a/components/autofill/core/browser/address_unittest.cc b/components/autofill/core/browser/data_model/address_unittest.cc similarity index 93% rename from components/autofill/core/browser/address_unittest.cc rename to components/autofill/core/browser/data_model/address_unittest.cc index d5e67b01..c9bb50a0 100644 --- a/components/autofill/core/browser/address_unittest.cc +++ b/components/autofill/core/browser/data_model/address_unittest.cc
@@ -9,9 +9,9 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/address.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/address.h" #include "testing/gtest/include/gtest/gtest.h" using base::ASCIIToUTF16; @@ -34,8 +34,8 @@ address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(base::string16(), country); - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("US"), "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("US"), + "en-US"); country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(ASCIIToUTF16("United States"), country); country = address.GetInfo( @@ -62,38 +62,37 @@ EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); // Test basic conversion. - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("United States"), - "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), + ASCIIToUTF16("United States"), "en-US"); base::string16 country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); EXPECT_EQ(ASCIIToUTF16("United States"), country); // Test basic synonym detection. - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"), "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("USA"), + "en-US"); country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(ASCIIToUTF16("US"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); EXPECT_EQ(ASCIIToUTF16("United States"), country); // Test case-insensitivity. - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("canADA"), "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("canADA"), + "en-US"); country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(ASCIIToUTF16("CA"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); EXPECT_EQ(ASCIIToUTF16("Canada"), country); // Test country code detection. - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("JP"), "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("JP"), + "en-US"); country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(ASCIIToUTF16("JP"), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); EXPECT_EQ(ASCIIToUTF16("Japan"), country); // Test that we ignore unknown countries. - address.SetInfo( - AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("Unknown"), "en-US"); + address.SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ASCIIToUTF16("Unknown"), + "en-US"); country = address.GetInfo(AutofillType(ADDRESS_HOME_COUNTRY), "en-US"); EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_COUNTRY)); EXPECT_EQ(base::string16(), country); @@ -125,13 +124,8 @@ Address address; address.SetRawInfo(ADDRESS_HOME_COUNTRY, ASCIIToUTF16("US")); - const char* const kValidMatches[] = { - "United States", - "USA", - "US", - "United states", - "us" - }; + const char* const kValidMatches[] = {"United States", "USA", "US", + "United states", "us"}; for (const char* valid_match : kValidMatches) { SCOPED_TRACE(valid_match); ServerFieldTypeSet matching_types; @@ -140,10 +134,7 @@ EXPECT_EQ(ADDRESS_HOME_COUNTRY, *matching_types.begin()); } - const char* const kInvalidMatches[] = { - "United", - "Garbage" - }; + const char* const kInvalidMatches[] = {"United", "Garbage"}; for (const char* invalid_match : kInvalidMatches) { ServerFieldTypeSet matching_types; address.GetMatchingTypes(ASCIIToUTF16(invalid_match), "US", @@ -240,10 +231,10 @@ TEST_F(AddressTest, SetRawStreetAddress) { const base::string16 empty_street_address; const base::string16 short_street_address = ASCIIToUTF16("456 Nowhere Ln."); - const base::string16 long_street_address = - ASCIIToUTF16("123 Example Ave.\n" - "Apt. 42\n" - "(The one with the blue door)"); + const base::string16 long_street_address = ASCIIToUTF16( + "123 Example Ave.\n" + "Apt. 42\n" + "(The one with the blue door)"); Address address; EXPECT_EQ(base::string16(), address.GetRawInfo(ADDRESS_HOME_LINE1)); @@ -272,10 +263,10 @@ // Street addresses should be set properly. TEST_F(AddressTest, SetStreetAddress) { const base::string16 empty_street_address; - const base::string16 multi_line_street_address = - ASCIIToUTF16("789 Fancy Pkwy.\n" - "Unit 3.14\n" - "Box 9"); + const base::string16 multi_line_street_address = ASCIIToUTF16( + "789 Fancy Pkwy.\n" + "Unit 3.14\n" + "Box 9"); const base::string16 single_line_street_address = ASCIIToUTF16("123 Main, Apt 7"); const AutofillType type = AutofillType(ADDRESS_HOME_STREET_ADDRESS);
diff --git a/components/autofill/core/browser/autofill_data_model.cc b/components/autofill/core/browser/data_model/autofill_data_model.cc similarity index 94% rename from components/autofill/core/browser/autofill_data_model.cc rename to components/autofill/core/browser/data_model/autofill_data_model.cc index bf0f73f..daf2f87 100644 --- a/components/autofill/core/browser/autofill_data_model.cc +++ b/components/autofill/core/browser/data_model/autofill_data_model.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" #include <math.h> -#include "components/autofill/core/browser/autofill_metadata.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_constants.h" #include "url/gurl.h"
diff --git a/components/autofill/core/browser/autofill_data_model.h b/components/autofill/core/browser/data_model/autofill_data_model.h similarity index 94% rename from components/autofill/core/browser/autofill_data_model.h rename to components/autofill/core/browser/data_model/autofill_data_model.h index 07fd92b..3a646545 100644 --- a/components/autofill/core/browser/autofill_data_model.h +++ b/components/autofill/core/browser/data_model/autofill_data_model.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_MODEL_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_MODEL_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_DATA_MODEL_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_DATA_MODEL_H_ #include <stddef.h> @@ -11,7 +11,7 @@ #include "base/strings/string16.h" #include "base/time/time.h" -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" namespace autofill { @@ -135,4 +135,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_DATA_MODEL_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_DATA_MODEL_H_
diff --git a/components/autofill/core/browser/autofill_data_model_unittest.cc b/components/autofill/core/browser/data_model/autofill_data_model_unittest.cc similarity index 97% rename from components/autofill/core/browser/autofill_data_model_unittest.cc rename to components/autofill/core/browser/data_model/autofill_data_model_unittest.cc index f719d9b..b8762af 100644 --- a/components/autofill/core/browser/autofill_data_model_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_data_model_unittest.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" #include <stddef.h> #include "base/compiler_specific.h" #include "base/macros.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/common/autofill_constants.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/core/browser/autofill_metadata.cc b/components/autofill/core/browser/data_model/autofill_metadata.cc similarity index 93% rename from components/autofill/core/browser/autofill_metadata.cc rename to components/autofill/core/browser/data_model/autofill_metadata.cc index cb2686f..6e48b3f 100644 --- a/components/autofill/core/browser/autofill_metadata.cc +++ b/components/autofill/core/browser/data_model/autofill_metadata.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/core/browser/autofill_metadata.h b/components/autofill/core/browser/data_model/autofill_metadata.h similarity index 86% rename from components/autofill/core/browser/autofill_metadata.h rename to components/autofill/core/browser/data_model/autofill_metadata.h index e8b62f1..ee50913 100644 --- a/components/autofill/core/browser/autofill_metadata.h +++ b/components/autofill/core/browser/data_model/autofill_metadata.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_METADATA_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_METADATA_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_METADATA_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_METADATA_H_ #include <string> @@ -49,4 +49,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_METADATA_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_METADATA_H_
diff --git a/components/autofill/core/browser/autofill_profile.cc b/components/autofill/core/browser/data_model/autofill_profile.cc similarity index 96% rename from components/autofill/core/browser/autofill_profile.cc rename to components/autofill/core/browser/data_model/autofill_profile.cc index 6322169e..d8c109e 100644 --- a/components/autofill/core/browser/autofill_profile.cc +++ b/components/autofill/core/browser/data_model/autofill_profile.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include <algorithm> #include <functional> @@ -22,16 +22,16 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversion_utils.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/address.h" #include "components/autofill/core/browser/address_i18n.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_metadata.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/contact_info.h" -#include "components/autofill/core/browser/phone_number.h" +#include "components/autofill/core/browser/data_model/address.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/contact_info.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/state_names.h" #include "components/autofill/core/browser/validation.h" @@ -135,18 +135,18 @@ ServerFieldType excluded_field, std::vector<ServerFieldType>* distinguishing_fields) { static const ServerFieldType kDefaultDistinguishingFields[] = { - NAME_FULL, - ADDRESS_HOME_LINE1, - ADDRESS_HOME_LINE2, - ADDRESS_HOME_DEPENDENT_LOCALITY, - ADDRESS_HOME_CITY, - ADDRESS_HOME_STATE, - ADDRESS_HOME_ZIP, - ADDRESS_HOME_SORTING_CODE, - ADDRESS_HOME_COUNTRY, - EMAIL_ADDRESS, - PHONE_HOME_WHOLE_NUMBER, - COMPANY_NAME, + NAME_FULL, + ADDRESS_HOME_LINE1, + ADDRESS_HOME_LINE2, + ADDRESS_HOME_DEPENDENT_LOCALITY, + ADDRESS_HOME_CITY, + ADDRESS_HOME_STATE, + ADDRESS_HOME_ZIP, + ADDRESS_HOME_SORTING_CODE, + ADDRESS_HOME_COUNTRY, + EMAIL_ADDRESS, + PHONE_HOME_WHOLE_NUMBER, + COMPANY_NAME, }; std::vector<ServerFieldType> default_fields; @@ -261,8 +261,7 @@ operator=(profile); } -AutofillProfile::~AutofillProfile() { -} +AutofillProfile::~AutofillProfile() {} AutofillProfile& AutofillProfile::operator=(const AutofillProfile& profile) { if (this == &profile) @@ -449,8 +448,8 @@ return 0; } -bool AutofillProfile::EqualsForSyncPurposes(const AutofillProfile& profile) - const { +bool AutofillProfile::EqualsForSyncPurposes( + const AutofillProfile& profile) const { return use_count() == profile.use_count() && UseDateEqualsInSeconds(&profile) && EqualsSansGuid(profile); } @@ -709,7 +708,7 @@ // Construct the default label for each profile. Also construct a map that // associates each label with the profiles that have this label. This map is // then used to detect which labels need further differentiating fields. - std::map<base::string16, std::list<size_t> > labels_to_profiles; + std::map<base::string16, std::list<size_t>> labels_to_profiles; for (size_t i = 0; i < profiles.size(); ++i) { base::string16 label = profiles[i]->ConstructInferredLabel( fields_to_use.data(), fields_to_use.size(), minimal_fields_shown, @@ -776,14 +775,13 @@ std::unique_ptr<AddressData> address_data = i18n::CreateAddressDataFromAutofillProfile(trimmed_profile, app_locale); std::string address_line; - ::i18n::addressinput::GetFormattedNationalAddressLine( - *address_data, &address_line); + ::i18n::addressinput::GetFormattedNationalAddressLine(*address_data, + &address_line); base::string16 label = base::UTF8ToUTF16(address_line); for (std::vector<ServerFieldType>::const_iterator it = remaining_fields.begin(); - it != remaining_fields.end() && num_fields_to_use > 0; - ++it) { + it != remaining_fields.end() && num_fields_to_use > 0; ++it) { base::string16 field_value; // Special case whole numbers: we want the user-formatted (raw) version, not // the canonicalized version we'll fill into the page. @@ -1060,8 +1058,8 @@ std::vector<base::string16>* labels) { // For efficiency, we first construct a map of fields to their text values and // each value's frequency. - std::map<ServerFieldType, - std::map<base::string16, size_t> > field_text_frequencies_by_field; + std::map<ServerFieldType, std::map<base::string16, size_t>> + field_text_frequencies_by_field; for (const ServerFieldType& field : fields) { std::map<base::string16, size_t>& field_text_frequencies = field_text_frequencies_by_field[field]; @@ -1176,8 +1174,7 @@ bool AutofillProfile::EqualsSansGuid(const AutofillProfile& profile) const { return origin() == profile.origin() && - language_code() == profile.language_code() && - Compare(profile) == 0; + language_code() == profile.language_code() && Compare(profile) == 0; } std::ostream& operator<<(std::ostream& os, const AutofillProfile& profile) {
diff --git a/components/autofill/core/browser/autofill_profile.h b/components/autofill/core/browser/data_model/autofill_profile.h similarity index 96% rename from components/autofill/core/browser/autofill_profile.h rename to components/autofill/core/browser/data_model/autofill_profile.h index 5dad1f4..65469df7 100644 --- a/components/autofill/core/browser/autofill_profile.h +++ b/components/autofill/core/browser/data_model/autofill_profile.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_H_ #include <stddef.h> @@ -17,11 +17,11 @@ #include "base/memory/weak_ptr.h" #include "base/strings/string16.h" #include "base/time/time.h" -#include "components/autofill/core/browser/address.h" -#include "components/autofill/core/browser/autofill_data_model.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/contact_info.h" -#include "components/autofill/core/browser/phone_number.h" +#include "components/autofill/core/browser/data_model/address.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/contact_info.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/proto/server.pb.h" namespace autofill { @@ -353,4 +353,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_H_
diff --git a/components/autofill/core/browser/autofill_profile_comparator.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc similarity index 98% rename from components/autofill/core/browser/autofill_profile_comparator.cc rename to components/autofill/core/browser/data_model/autofill_profile_comparator.cc index 3c360fb..109965bda 100644 --- a/components/autofill/core/browser/autofill_profile_comparator.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include <algorithm> #include <vector> @@ -20,9 +20,9 @@ #include "components/autofill/core/browser/state_names.h" #include "third_party/libphonenumber/phonenumber_api.h" -using i18n::phonenumbers::PhoneNumberUtil; using base::UTF16ToUTF8; using base::UTF8ToUTF16; +using i18n::phonenumbers::PhoneNumberUtil; namespace autofill { namespace { @@ -215,10 +215,9 @@ return true; } -bool AutofillProfileComparator::MergeCJKNames( - const AutofillProfile& p1, - const AutofillProfile& p2, - NameInfo* info) const { +bool AutofillProfileComparator::MergeCJKNames(const AutofillProfile& p1, + const AutofillProfile& p2, + NameInfo* info) const { DCHECK(data_util::IsCJKName(p1.GetInfo(NAME_FULL, app_locale_))); DCHECK(data_util::IsCJKName(p2.GetInfo(NAME_FULL, app_locale_))); @@ -228,16 +227,10 @@ base::string16 full; }; - Name name1 = { - p1.GetRawInfo(NAME_FIRST), - p1.GetRawInfo(NAME_LAST), - p1.GetRawInfo(NAME_FULL) - }; - Name name2 = { - p2.GetRawInfo(NAME_FIRST), - p2.GetRawInfo(NAME_LAST), - p2.GetRawInfo(NAME_FULL) - }; + Name name1 = {p1.GetRawInfo(NAME_FIRST), p1.GetRawInfo(NAME_LAST), + p1.GetRawInfo(NAME_FULL)}; + Name name2 = {p2.GetRawInfo(NAME_FIRST), p2.GetRawInfo(NAME_LAST), + p2.GetRawInfo(NAME_FULL)}; const Name* most_recent_name = p2.use_date() >= p1.use_date() ? &name2 : &name1;
diff --git a/components/autofill/core/browser/autofill_profile_comparator.h b/components/autofill/core/browser/data_model/autofill_profile_comparator.h similarity index 95% rename from components/autofill/core/browser/autofill_profile_comparator.h rename to components/autofill/core/browser/data_model/autofill_profile_comparator.h index a2be020..ad5e4c2 100644 --- a/components/autofill/core/browser/autofill_profile_comparator.h +++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.h
@@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_COMPARATOR_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_COMPARATOR_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_COMPARATOR_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_COMPARATOR_H_ #include <memory> #include <set> #include "base/strings/string16.h" #include "base/strings/string_piece.h" -#include "components/autofill/core/browser/address.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/contact_info.h" +#include "components/autofill/core/browser/data_model/address.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/contact_info.h" #include "components/autofill/core/common/autofill_l10n_util.h" #include "third_party/icu/source/i18n/unicode/translit.h" @@ -234,4 +234,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_AUTOFILL_PROFILE_COMPARATOR_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_PROFILE_COMPARATOR_H_
diff --git a/components/autofill/core/browser/autofill_profile_comparator_unittest.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator_unittest.cc similarity index 98% rename from components/autofill/core/browser/autofill_profile_comparator_unittest.cc rename to components/autofill/core/browser/data_model/autofill_profile_comparator_unittest.cc index 1ef920c..ae914d44 100644 --- a/components/autofill/core/browser/autofill_profile_comparator_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_comparator_unittest.cc
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "base/guid.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/contact_info.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/contact_info.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/common/autofill_features.h" #include "testing/gtest/include/gtest/gtest.h" @@ -32,12 +32,12 @@ using autofill::NAME_FULL; using autofill::NAME_LAST; using autofill::NAME_MIDDLE; -using autofill::PHONE_HOME_WHOLE_NUMBER; -using autofill::PHONE_HOME_EXTENSION; -using autofill::PHONE_HOME_NUMBER; +using autofill::PHONE_HOME_CITY_AND_NUMBER; using autofill::PHONE_HOME_CITY_CODE; using autofill::PHONE_HOME_COUNTRY_CODE; -using autofill::PHONE_HOME_CITY_AND_NUMBER; +using autofill::PHONE_HOME_EXTENSION; +using autofill::PHONE_HOME_NUMBER; +using autofill::PHONE_HOME_WHOLE_NUMBER; // Classes, Functions, and other Symbols using autofill::Address; @@ -62,21 +62,21 @@ : public ::autofill::AutofillProfileComparator { public: typedef ::autofill::AutofillProfileComparator Super; - using Super::Super; - using Super::UniqueTokens; using Super::CompareTokens; using Super::GetNamePartVariants; - using Super::IsNameVariantOf; - using Super::HaveMergeableNames; - using Super::HaveMergeableEmailAddresses; - using Super::HaveMergeableCompanyNames; - using Super::HaveMergeablePhoneNumbers; using Super::HaveMergeableAddresses; + using Super::HaveMergeableCompanyNames; + using Super::HaveMergeableEmailAddresses; + using Super::HaveMergeableNames; + using Super::HaveMergeablePhoneNumbers; + using Super::IsNameVariantOf; + using Super::Super; + using Super::UniqueTokens; using Super::DIFFERENT_TOKENS; - using Super::SAME_TOKENS; using Super::S1_CONTAINS_S2; using Super::S2_CONTAINS_S1; + using Super::SAME_TOKENS; }; AutofillProfileComparatorTest() { @@ -336,14 +336,16 @@ comparator_.NormalizeForComparison(UTF8ToUTF16("まéÖä정"))); // Spaces removed. - EXPECT_EQ(UTF8ToUTF16("유재석"), comparator_.NormalizeForComparison( - UTF8ToUTF16("유 재석"), - AutofillProfileComparator::DISCARD_WHITESPACE)); + EXPECT_EQ(UTF8ToUTF16("유재석"), + comparator_.NormalizeForComparison( + UTF8ToUTF16("유 재석"), + AutofillProfileComparator::DISCARD_WHITESPACE)); // Punctuation removed, Japanese kana normalized. - EXPECT_EQ(UTF8ToUTF16("ヒルケイツ"), comparator_.NormalizeForComparison( - UTF8ToUTF16("ビル・ゲイツ"), - AutofillProfileComparator::DISCARD_WHITESPACE)); + EXPECT_EQ(UTF8ToUTF16("ヒルケイツ"), + comparator_.NormalizeForComparison( + UTF8ToUTF16("ビル・ゲイツ"), + AutofillProfileComparator::DISCARD_WHITESPACE)); } TEST_F(AutofillProfileComparatorTest, MatchesAfterNormalization) { @@ -700,7 +702,6 @@ NameInfo name4 = CreateNameInfo("영호", "", "이", ""); NameInfo name5 = CreateNameInfo("영호", "", "이", "이 영호"); - // Mergeable foreign name in Japanese with a 'KATAKANA MIDDLE DOT'. NameInfo name6 = CreateNameInfo("", "", "", "ゲイツ・ビル"); NameInfo name7 = CreateNameInfo("ビル", "", "ゲイツ", "");
diff --git a/components/autofill/core/browser/autofill_profile_unittest.cc b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc similarity index 94% rename from components/autofill/core/browser/autofill_profile_unittest.cc rename to components/autofill/core/browser/data_model/autofill_profile_unittest.cc index cceee5bd5..96f2c52 100644 --- a/components/autofill/core/browser/autofill_profile_unittest.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include <stddef.h> @@ -16,10 +16,10 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/common/autofill_constants.h" @@ -74,84 +74,82 @@ // Case 0a/empty name and address, so the first two fields of the rest of the // data is used: "Hollywood, CA" AutofillProfile profile00(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile00, "", "", "", - "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", "91601", "US", - "16505678910"); + test::SetProfileInfo(&profile00, "", "", "", "johnwayne@me.xyz", "Fox", "", + "", "Hollywood", "CA", "91601", "US", "16505678910"); base::string16 summary00 = GetLabel(&profile00); EXPECT_EQ(ASCIIToUTF16("Hollywood, CA"), summary00); // Case 1: "<address>" without line 2. AutofillProfile profile1(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile1, "", "", "", - "johnwayne@me.xyz", "Fox", "123 Zoo St.", "", "Hollywood", "CA", - "91601", "US", "16505678910"); + test::SetProfileInfo(&profile1, "", "", "", "johnwayne@me.xyz", "Fox", + "123 Zoo St.", "", "Hollywood", "CA", "91601", "US", + "16505678910"); base::string16 summary1 = GetLabel(&profile1); EXPECT_EQ(ASCIIToUTF16("123 Zoo St., Hollywood"), summary1); // Case 1a: "<address>" with line 2. AutofillProfile profile1a(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile1a, "", "", "", - "johnwayne@me.xyz", "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA", - "91601", "US", "16505678910"); + test::SetProfileInfo(&profile1a, "", "", "", "johnwayne@me.xyz", "Fox", + "123 Zoo St.", "unit 5", "Hollywood", "CA", "91601", + "US", "16505678910"); base::string16 summary1a = GetLabel(&profile1a); EXPECT_EQ(ASCIIToUTF16("123 Zoo St., unit 5"), summary1a); // Case 2: "<lastname>" AutofillProfile profile2(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile2, "", "Mitchell", - "Morrison", "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", - "91601", "US", "16505678910"); + test::SetProfileInfo(&profile2, "", "Mitchell", "Morrison", + "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", + "91601", "US", "16505678910"); base::string16 summary2 = GetLabel(&profile2); // Summary includes full name, to the maximal extent available. EXPECT_EQ(ASCIIToUTF16("Mitchell Morrison, Hollywood"), summary2); // Case 3: "<lastname>, <address>" AutofillProfile profile3(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile3, "", "Mitchell", - "Morrison", "johnwayne@me.xyz", "Fox", "123 Zoo St.", "", - "Hollywood", "CA", "91601", "US", "16505678910"); + test::SetProfileInfo(&profile3, "", "Mitchell", "Morrison", + "johnwayne@me.xyz", "Fox", "123 Zoo St.", "", + "Hollywood", "CA", "91601", "US", "16505678910"); base::string16 summary3 = GetLabel(&profile3); EXPECT_EQ(ASCIIToUTF16("Mitchell Morrison, 123 Zoo St."), summary3); // Case 4: "<firstname>" AutofillProfile profile4(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile4, "Marion", "Mitchell", "", - "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", "91601", "US", - "16505678910"); + test::SetProfileInfo(&profile4, "Marion", "Mitchell", "", "johnwayne@me.xyz", + "Fox", "", "", "Hollywood", "CA", "91601", "US", + "16505678910"); base::string16 summary4 = GetLabel(&profile4); EXPECT_EQ(ASCIIToUTF16("Marion Mitchell, Hollywood"), summary4); // Case 5: "<firstname>, <address>" AutofillProfile profile5(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile5, "Marion", "Mitchell", "", - "johnwayne@me.xyz", "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA", - "91601", "US", "16505678910"); + test::SetProfileInfo(&profile5, "Marion", "Mitchell", "", "johnwayne@me.xyz", + "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA", + "91601", "US", "16505678910"); base::string16 summary5 = GetLabel(&profile5); EXPECT_EQ(ASCIIToUTF16("Marion Mitchell, 123 Zoo St."), summary5); // Case 6: "<firstname> <lastname>" AutofillProfile profile6(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile6, "Marion", "Mitchell", - "Morrison", "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", - "91601", "US", "16505678910"); + test::SetProfileInfo(&profile6, "Marion", "Mitchell", "Morrison", + "johnwayne@me.xyz", "Fox", "", "", "Hollywood", "CA", + "91601", "US", "16505678910"); base::string16 summary6 = GetLabel(&profile6); - EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison, Hollywood"), - summary6); + EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison, Hollywood"), summary6); // Case 7: "<firstname> <lastname>, <address>" AutofillProfile profile7(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile7, "Marion", "Mitchell", - "Morrison", "johnwayne@me.xyz", "Fox", "123 Zoo St.", "unit 5", - "Hollywood", "CA", "91601", "US", "16505678910"); + test::SetProfileInfo(&profile7, "Marion", "Mitchell", "Morrison", + "johnwayne@me.xyz", "Fox", "123 Zoo St.", "unit 5", + "Hollywood", "CA", "91601", "US", "16505678910"); base::string16 summary7 = GetLabel(&profile7); EXPECT_EQ(ASCIIToUTF16("Marion Mitchell Morrison, 123 Zoo St."), summary7); // Case 7a: "<firstname> <lastname>, <address>" - same as #7, except for // e-mail. AutofillProfile profile7a(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&profile7a, "Marion", "Mitchell", - "Morrison", "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", - "Hollywood", "CA", "91601", "US", "16505678910"); + test::SetProfileInfo(&profile7a, "Marion", "Mitchell", "Morrison", + "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", + "Hollywood", "CA", "91601", "US", "16505678910"); std::vector<AutofillProfile*> profiles; profiles.push_back(&profile7); profiles.push_back(&profile7a); @@ -160,10 +158,12 @@ ASSERT_EQ(profiles.size(), labels.size()); summary7 = labels[0]; base::string16 summary7a = labels[1]; - EXPECT_EQ(ASCIIToUTF16( - "Marion Mitchell Morrison, 123 Zoo St., johnwayne@me.xyz"), summary7); - EXPECT_EQ(ASCIIToUTF16( - "Marion Mitchell Morrison, 123 Zoo St., marion@me.xyz"), summary7a); + EXPECT_EQ( + ASCIIToUTF16("Marion Mitchell Morrison, 123 Zoo St., johnwayne@me.xyz"), + summary7); + EXPECT_EQ( + ASCIIToUTF16("Marion Mitchell Morrison, 123 Zoo St., marion@me.xyz"), + summary7a); } TEST(AutofillProfileTest, AdjustInferredLabels) { @@ -258,9 +258,11 @@ EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CA"), labels[0]); EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore."), labels[1]); EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com," - " 16502111111"), labels[2]); + " 16502111111"), + labels[2]); EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@hades.com," - " 16504444444"), labels[3]); + " 16504444444"), + labels[3]); // This one differs from other ones by unique e-mail, so no need for extra // information. EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., CO, johndoe@styx.com"), @@ -277,18 +279,18 @@ "CH", "+41 44-668-1800"); profiles.back()->set_language_code("de_CH"); static const char* kExpectedLabels[] = { - "", - "H. R. Giger", - "H. R. Giger, Brandschenkestrasse 110", - "H. R. Giger, Brandschenkestrasse 110, Zurich", - "H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich", - "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich", - "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " - "Switzerland", - "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " - "Switzerland, hrgiger@beispiel.com", - "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " - "Switzerland, hrgiger@beispiel.com, +41 44-668-1800", + "", + "H. R. Giger", + "H. R. Giger, Brandschenkestrasse 110", + "H. R. Giger, Brandschenkestrasse 110, Zurich", + "H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich", + "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich", + "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " + "Switzerland", + "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " + "Switzerland, hrgiger@beispiel.com", + "Beispiel Inc, H. R. Giger, Brandschenkestrasse 110, CH-8002 Zurich, " + "Switzerland, hrgiger@beispiel.com, +41 44-668-1800", }; std::vector<base::string16> labels; @@ -300,7 +302,6 @@ } } - TEST(AutofillProfileTest, CreateInferredLabelsI18n_FR) { std::vector<std::unique_ptr<AutofillProfile>> profiles; profiles.push_back(std::make_unique<AutofillProfile>(base::GenerateGUID(), @@ -353,21 +354,21 @@ "Park Jae-sang, Gangnam Finance Center, 152 Teheran-ro", "Park Jae-sang, Gangnam Finance Center, 152 Teheran-ro, Yeoksam-Dong", "Park Jae-sang, Gangnam Finance Center, 152 Teheran-ro, Yeoksam-Dong, " - "Gangnam-Gu", + "Gangnam-Gu", "Park Jae-sang, Gangnam Finance Center, 152 Teheran-ro, Yeoksam-Dong, " - "Gangnam-Gu, Seoul", + "Gangnam-Gu, Seoul", "Park Jae-sang, Gangnam Finance Center, 152 Teheran-ro, Yeoksam-Dong, " - "Gangnam-Gu, Seoul, 135-984", + "Gangnam-Gu, Seoul, 135-984", "Park Jae-sang, Yeleul Inc, Gangnam Finance Center, 152 Teheran-ro, " - "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984", + "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984", "Park Jae-sang, Yeleul Inc, Gangnam Finance Center, 152 Teheran-ro, " - "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea", + "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea", "Park Jae-sang, Yeleul Inc, Gangnam Finance Center, 152 Teheran-ro, " - "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea, " - "park@yeleul.com", + "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea, " + "park@yeleul.com", "Park Jae-sang, Yeleul Inc, Gangnam Finance Center, 152 Teheran-ro, " - "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea, " - "park@yeleul.com, +82-2-531-9000", + "Yeoksam-Dong, Gangnam-Gu, Seoul, 135-984, South Korea, " + "park@yeleul.com, +82-2-531-9000", }; std::vector<base::string16> labels; @@ -389,22 +390,22 @@ "JP", "+81-3-6384-9000"); profiles.back()->set_language_code("ja_Latn"); static const char* kExpectedLabels[] = { - "", - "Miku Hatsune", - "Miku Hatsune, Roppongi Hills Mori Tower", - "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku", - "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku, " - "Tokyo", - "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku, " - "Tokyo, 106-6126", - "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " - "Minato-ku, Tokyo, 106-6126", - "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " - "Minato-ku, Tokyo, 106-6126, Japan", - "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " - "Minato-ku, Tokyo, 106-6126, Japan, miku@rei.com", - "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " - "Minato-ku, Tokyo, 106-6126, Japan, miku@rei.com, +81-3-6384-9000", + "", + "Miku Hatsune", + "Miku Hatsune, Roppongi Hills Mori Tower", + "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku", + "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku, " + "Tokyo", + "Miku Hatsune, Roppongi Hills Mori Tower, 6-10-1 Roppongi, Minato-ku, " + "Tokyo, 106-6126", + "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " + "Minato-ku, Tokyo, 106-6126", + "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " + "Minato-ku, Tokyo, 106-6126, Japan", + "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " + "Minato-ku, Tokyo, 106-6126, Japan, miku@rei.com", + "Miku Hatsune, Rei Inc, Roppongi Hills Mori Tower, 6-10-1 Roppongi, " + "Minato-ku, Tokyo, 106-6126, Japan, miku@rei.com, +81-3-6384-9000", }; std::vector<base::string16> labels; @@ -471,10 +472,8 @@ // Three fields at least - no filter. AutofillProfile::CreateInferredLabels(ToRawPointerVector(profiles), nullptr, UNKNOWN_TYPE, 3, "en-US", &labels); - EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"), - labels[0]); - EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"), - labels[1]); + EXPECT_EQ(ASCIIToUTF16("John Doe, 666 Erebus St., Elysium"), labels[0]); + EXPECT_EQ(ASCIIToUTF16("Jane Doe, 123 Letha Shore., Dis"), labels[1]); std::vector<ServerFieldType> suggested_fields; suggested_fields.push_back(ADDRESS_HOME_CITY); @@ -648,7 +647,8 @@ ASSERT_EQ(3U, labels.size()); EXPECT_EQ(ASCIIToUTF16("John Doe, doe@example.com, Gogole"), labels[0]); EXPECT_EQ(ASCIIToUTF16("John Doe, 88 Nowhere Ave., doe@example.com, Ggoole"), - labels[1]) << labels[1]; + labels[1]) + << labels[1]; EXPECT_EQ(ASCIIToUTF16("John Doe, john.doe@example.com"), labels[2]); } @@ -1091,10 +1091,9 @@ TEST(AutofillProfileTest, AssignmentOperator) { AutofillProfile a(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", - "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", - "Hollywood", "CA", "91601", "US", - "12345678910"); + test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", "marion@me.xyz", + "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA", + "91601", "US", "12345678910"); // Result of assignment should be logically equal to the original profile. AutofillProfile b(base::GenerateGUID(), test::kEmptyOrigin); @@ -1108,10 +1107,9 @@ TEST(AutofillProfileTest, Copy) { AutofillProfile a(base::GenerateGUID(), test::kEmptyOrigin); - test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", - "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", - "Hollywood", "CA", "91601", "US", - "12345678910"); + test::SetProfileInfo(&a, "Marion", "Mitchell", "Morrison", "marion@me.xyz", + "Fox", "123 Zoo St.", "unit 5", "Hollywood", "CA", + "91601", "US", "12345678910"); // Clone should be logically equal to the original. AutofillProfile b(a); @@ -1157,8 +1155,7 @@ // Addresses are compared in full. Regression test for http://crbug.com/375545 test::SetProfileInfo(&a, "John", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); - a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, - ASCIIToUTF16("line one\nline two")); + a.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, ASCIIToUTF16("line one\nline two")); test::SetProfileInfo(&b, "John", nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); b.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, @@ -1200,9 +1197,8 @@ TEST(AutofillProfileTest, SetRawInfoPreservesLineBreaks) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); - profile.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, - ASCIIToUTF16("123 Super St.\n" - "Apt. #42")); + profile.SetRawInfo(ADDRESS_HOME_STREET_ADDRESS, ASCIIToUTF16("123 Super St.\n" + "Apt. #42")); EXPECT_EQ(ASCIIToUTF16("123 Super St.\n" "Apt. #42"), profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)); @@ -1241,16 +1237,15 @@ AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Marion", "Mitchell", "Morrison", "marion@me.xyz", "Fox", "123 Zoo St.", "unit 5", - "Hollywood", "CA", "91601", "US", - "12345678910"); + "Hollywood", "CA", "91601", "US", "12345678910"); AutofillType full_address(HTML_TYPE_FULL_ADDRESS, HTML_MODE_NONE); - base::string16 formatted_address(ASCIIToUTF16( - "Marion Mitchell Morrison\n" - "Fox\n" - "123 Zoo St.\n" - "unit 5\n" - "Hollywood, CA 91601")); + base::string16 formatted_address( + ASCIIToUTF16("Marion Mitchell Morrison\n" + "Fox\n" + "123 Zoo St.\n" + "unit 5\n" + "Hollywood, CA 91601")); EXPECT_EQ(formatted_address, profile.GetInfo(full_address, "en-US")); // This should fail and leave the profile unchanged. EXPECT_FALSE(profile.SetInfo(full_address, ASCIIToUTF16("foobar"), "en-US")); @@ -1339,8 +1334,7 @@ EXPECT_EQ(UTF8ToUTF16("Märion"), a.GetRawInfo(NAME_FIRST)); EXPECT_EQ(UTF8ToUTF16("Mitchéll"), a.GetRawInfo(NAME_MIDDLE)); EXPECT_EQ(UTF8ToUTF16("Morrison"), a.GetRawInfo(NAME_LAST)); - EXPECT_EQ(UTF8ToUTF16("Märion Mitchéll Morrison"), - a.GetRawInfo(NAME_FULL)); + EXPECT_EQ(UTF8ToUTF16("Märion Mitchéll Morrison"), a.GetRawInfo(NAME_FULL)); } // Tests that no loss of information happens when SavingAdditionalInfo with a
diff --git a/components/autofill/core/browser/contact_info.cc b/components/autofill/core/browser/data_model/contact_info.cc similarity index 97% rename from components/autofill/core/browser/contact_info.cc rename to components/autofill/core/browser/data_model/contact_info.cc index 3f8dc70..2f3b4a6 100644 --- a/components/autofill/core/browser/contact_info.cc +++ b/components/autofill/core/browser/data_model/contact_info.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/contact_info.h" +#include "components/autofill/core/browser/data_model/contact_info.h" #include <stddef.h> #include <ostream> @@ -13,8 +13,8 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_l10n_util.h" #include "components/autofill/core/common/autofill_regexes.h"
diff --git a/components/autofill/core/browser/contact_info.h b/components/autofill/core/browser/data_model/contact_info.h similarity index 92% rename from components/autofill/core/browser/contact_info.h rename to components/autofill/core/browser/data_model/contact_info.h index 3bb79c4..b838253 100644 --- a/components/autofill/core/browser/contact_info.h +++ b/components/autofill/core/browser/data_model/contact_info.h
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CONTACT_INFO_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CONTACT_INFO_H_ #include <vector> #include "base/compiler_specific.h" #include "base/strings/string16.h" -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" namespace autofill { @@ -116,4 +116,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_CONTACT_INFO_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CONTACT_INFO_H_
diff --git a/components/autofill/core/browser/contact_info_unittest.cc b/components/autofill/core/browser/data_model/contact_info_unittest.cc similarity index 71% rename from components/autofill/core/browser/contact_info_unittest.cc rename to components/autofill/core/browser/data_model/contact_info_unittest.cc index cac7c92..a5e64b41 100644 --- a/components/autofill/core/browser/contact_info_unittest.cc +++ b/components/autofill/core/browser/data_model/contact_info_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/contact_info.h" +#include "components/autofill/core/browser/data_model/contact_info.h" #include <stddef.h> @@ -12,8 +12,8 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/common/autofill_features.h" #include "testing/gtest/include/gtest/gtest.h" @@ -187,128 +187,124 @@ std::string starting_names[3]; std::string additional_names[3]; bool expected_result; - }; +}; - class ParsedNamesAreEqualTest - : public testing::TestWithParam<ParsedNamesAreEqualTestCase> {}; +class ParsedNamesAreEqualTest + : public testing::TestWithParam<ParsedNamesAreEqualTestCase> {}; - TEST_P(ParsedNamesAreEqualTest, ParsedNamesAreEqual) { - auto test_case = GetParam(); +TEST_P(ParsedNamesAreEqualTest, ParsedNamesAreEqual) { + auto test_case = GetParam(); - // Construct the starting_profile. - NameInfo starting_profile; - starting_profile.SetRawInfo(NAME_FIRST, - UTF8ToUTF16(test_case.starting_names[0])); - starting_profile.SetRawInfo(NAME_MIDDLE, - UTF8ToUTF16(test_case.starting_names[1])); - starting_profile.SetRawInfo(NAME_LAST, - UTF8ToUTF16(test_case.starting_names[2])); + // Construct the starting_profile. + NameInfo starting_profile; + starting_profile.SetRawInfo(NAME_FIRST, + UTF8ToUTF16(test_case.starting_names[0])); + starting_profile.SetRawInfo(NAME_MIDDLE, + UTF8ToUTF16(test_case.starting_names[1])); + starting_profile.SetRawInfo(NAME_LAST, + UTF8ToUTF16(test_case.starting_names[2])); - // Construct the additional_profile. - NameInfo additional_profile; - additional_profile.SetRawInfo(NAME_FIRST, - UTF8ToUTF16(test_case.additional_names[0])); - additional_profile.SetRawInfo(NAME_MIDDLE, - UTF8ToUTF16(test_case.additional_names[1])); - additional_profile.SetRawInfo(NAME_LAST, - UTF8ToUTF16(test_case.additional_names[2])); + // Construct the additional_profile. + NameInfo additional_profile; + additional_profile.SetRawInfo(NAME_FIRST, + UTF8ToUTF16(test_case.additional_names[0])); + additional_profile.SetRawInfo(NAME_MIDDLE, + UTF8ToUTF16(test_case.additional_names[1])); + additional_profile.SetRawInfo(NAME_LAST, + UTF8ToUTF16(test_case.additional_names[2])); - // Verify the test expectations. - EXPECT_EQ(test_case.expected_result, - starting_profile.ParsedNamesAreEqual(additional_profile)); - } + // Verify the test expectations. + EXPECT_EQ(test_case.expected_result, + starting_profile.ParsedNamesAreEqual(additional_profile)); +} - INSTANTIATE_TEST_SUITE_P( - ContactInfoTest, - ParsedNamesAreEqualTest, - testing::Values( - // Identical name comparison. - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"Marion", "Mitchell", "Morrison"}, - true}, +INSTANTIATE_TEST_SUITE_P( + ContactInfoTest, + ParsedNamesAreEqualTest, + testing::Values( + // Identical name comparison. + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"Marion", "Mitchell", "Morrison"}, + true}, - // Case-sensitive comparisons. - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"Marion", "Mitchell", "MORRISON"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"MARION", "Mitchell", "MORRISON"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"MARION", "MITCHELL", "MORRISON"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "", "Mitchell Morrison"}, - {"MARION", "", "MITCHELL MORRISON"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion Mitchell", "", "Morrison"}, - {"MARION MITCHELL", "", "MORRISON"}, - false}, + // Case-sensitive comparisons. + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"Marion", "Mitchell", "MORRISON"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"MARION", "Mitchell", "MORRISON"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"MARION", "MITCHELL", "MORRISON"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "", "Mitchell Morrison"}, + {"MARION", "", "MITCHELL MORRISON"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion Mitchell", "", "Morrison"}, + {"MARION MITCHELL", "", "MORRISON"}, + false}, - // Identical full names but different canonical forms. - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"Marion", "", "Mitchell Morrison"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"Marion Mitchell", "", "MORRISON"}, - false}, + // Identical full names but different canonical forms. + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"Marion", "", "Mitchell Morrison"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"Marion Mitchell", "", "MORRISON"}, + false}, - // Different names. - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"Marion", "M.", "Morrison"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"MARION", "M.", "MORRISON"}, - false}, - ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, - {"David", "Mitchell", "Morrison"}, - false}, + // Different names. + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"Marion", "M.", "Morrison"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"MARION", "M.", "MORRISON"}, + false}, + ParsedNamesAreEqualTestCase{{"Marion", "Mitchell", "Morrison"}, + {"David", "Mitchell", "Morrison"}, + false}, - // Non-ASCII characters. - ParsedNamesAreEqualTestCase{ - {"M\xc3\xa1rion Mitchell", "", "Morrison"}, - {"M\xc3\xa1rion Mitchell", "", "Morrison"}, - true})); + // Non-ASCII characters. + ParsedNamesAreEqualTestCase{{"M\xc3\xa1rion Mitchell", "", "Morrison"}, + {"M\xc3\xa1rion Mitchell", "", "Morrison"}, + true})); - struct OverwriteNameTestCase { - std::string existing_name[4]; - std::string new_name[4]; - std::string expected_name[4]; - }; +struct OverwriteNameTestCase { + std::string existing_name[4]; + std::string new_name[4]; + std::string expected_name[4]; +}; - class OverwriteNameTest - : public testing::TestWithParam<OverwriteNameTestCase> {}; +class OverwriteNameTest : public testing::TestWithParam<OverwriteNameTestCase> { +}; - TEST_P(OverwriteNameTest, OverwriteName) { - auto test_case = GetParam(); - // Construct the starting_profile. - NameInfo existing_name; - existing_name.SetRawInfo(NAME_FIRST, - UTF8ToUTF16(test_case.existing_name[0])); - existing_name.SetRawInfo(NAME_MIDDLE, - UTF8ToUTF16(test_case.existing_name[1])); - existing_name.SetRawInfo(NAME_LAST, - UTF8ToUTF16(test_case.existing_name[2])); - existing_name.SetRawInfo(NAME_FULL, - UTF8ToUTF16(test_case.existing_name[3])); +TEST_P(OverwriteNameTest, OverwriteName) { + auto test_case = GetParam(); + // Construct the starting_profile. + NameInfo existing_name; + existing_name.SetRawInfo(NAME_FIRST, UTF8ToUTF16(test_case.existing_name[0])); + existing_name.SetRawInfo(NAME_MIDDLE, + UTF8ToUTF16(test_case.existing_name[1])); + existing_name.SetRawInfo(NAME_LAST, UTF8ToUTF16(test_case.existing_name[2])); + existing_name.SetRawInfo(NAME_FULL, UTF8ToUTF16(test_case.existing_name[3])); - // Construct the additional_profile. - NameInfo new_name; - new_name.SetRawInfo(NAME_FIRST, UTF8ToUTF16(test_case.new_name[0])); - new_name.SetRawInfo(NAME_MIDDLE, UTF8ToUTF16(test_case.new_name[1])); - new_name.SetRawInfo(NAME_LAST, UTF8ToUTF16(test_case.new_name[2])); - new_name.SetRawInfo(NAME_FULL, UTF8ToUTF16(test_case.new_name[3])); + // Construct the additional_profile. + NameInfo new_name; + new_name.SetRawInfo(NAME_FIRST, UTF8ToUTF16(test_case.new_name[0])); + new_name.SetRawInfo(NAME_MIDDLE, UTF8ToUTF16(test_case.new_name[1])); + new_name.SetRawInfo(NAME_LAST, UTF8ToUTF16(test_case.new_name[2])); + new_name.SetRawInfo(NAME_FULL, UTF8ToUTF16(test_case.new_name[3])); - existing_name.OverwriteName(new_name); + existing_name.OverwriteName(new_name); - // Verify the test expectations. - EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[0]), - existing_name.GetRawInfo(NAME_FIRST)); - EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[1]), - existing_name.GetRawInfo(NAME_MIDDLE)); - EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[2]), - existing_name.GetRawInfo(NAME_LAST)); - EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[3]), - existing_name.GetRawInfo(NAME_FULL)); + // Verify the test expectations. + EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[0]), + existing_name.GetRawInfo(NAME_FIRST)); + EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[1]), + existing_name.GetRawInfo(NAME_MIDDLE)); + EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[2]), + existing_name.GetRawInfo(NAME_LAST)); + EXPECT_EQ(UTF8ToUTF16(test_case.expected_name[3]), + existing_name.GetRawInfo(NAME_FULL)); } INSTANTIATE_TEST_SUITE_P( @@ -372,22 +368,22 @@ std::string last; std::string full; bool expected_result; - }; +}; - class NamePartsAreEmptyTest - : public testing::TestWithParam<NamePartsAreEmptyTestCase> {}; +class NamePartsAreEmptyTest + : public testing::TestWithParam<NamePartsAreEmptyTestCase> {}; - TEST_P(NamePartsAreEmptyTest, NamePartsAreEmpty) { - auto test_case = GetParam(); - // Construct the NameInfo. - NameInfo name; - name.SetRawInfo(NAME_FIRST, UTF8ToUTF16(test_case.first)); - name.SetRawInfo(NAME_MIDDLE, UTF8ToUTF16(test_case.middle)); - name.SetRawInfo(NAME_LAST, UTF8ToUTF16(test_case.last)); - name.SetRawInfo(NAME_FULL, UTF8ToUTF16(test_case.full)); +TEST_P(NamePartsAreEmptyTest, NamePartsAreEmpty) { + auto test_case = GetParam(); + // Construct the NameInfo. + NameInfo name; + name.SetRawInfo(NAME_FIRST, UTF8ToUTF16(test_case.first)); + name.SetRawInfo(NAME_MIDDLE, UTF8ToUTF16(test_case.middle)); + name.SetRawInfo(NAME_LAST, UTF8ToUTF16(test_case.last)); + name.SetRawInfo(NAME_FULL, UTF8ToUTF16(test_case.full)); - // Verify the test expectations. - EXPECT_EQ(test_case.expected_result, name.NamePartsAreEmpty()); + // Verify the test expectations. + EXPECT_EQ(test_case.expected_result, name.NamePartsAreEmpty()); } INSTANTIATE_TEST_SUITE_P(
diff --git a/components/autofill/core/browser/credit_card.cc b/components/autofill/core/browser/data_model/credit_card.cc similarity index 98% rename from components/autofill/core/browser/credit_card.cc rename to components/autofill/core/browser/data_model/credit_card.cc index 5d0273d..4235a1b0 100644 --- a/components/autofill/core/browser/credit_card.cc +++ b/components/autofill/core/browser/data_model/credit_card.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include <stddef.h> #include <stdint.h> @@ -29,9 +29,9 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_metadata.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_constants.h" @@ -391,8 +391,7 @@ } } -void CreditCard::SetRawInfo(ServerFieldType type, - const base::string16& value) { +void CreditCard::SetRawInfo(ServerFieldType type, const base::string16& value) { DCHECK_EQ(CREDIT_CARD, AutofillType(type).group()); switch (type) { case CREDIT_CARD_NAME_FULL: @@ -472,8 +471,7 @@ } int month; - if (ConvertMonth(text, app_locale, &month) && - month == expiration_month_) { + if (ConvertMonth(text, app_locale, &month) && month == expiration_month_) { matching_types->insert(CREDIT_CARD_EXP_MONTH); } } @@ -549,7 +547,7 @@ bool CreditCard::UpdateFromImportedCard(const CreditCard& imported_card, const std::string& app_locale) { if (this->GetInfo(AutofillType(CREDIT_CARD_NUMBER), app_locale) != - imported_card.GetInfo(AutofillType(CREDIT_CARD_NUMBER), app_locale)) { + imported_card.GetInfo(AutofillType(CREDIT_CARD_NUMBER), app_locale)) { return false; }
diff --git a/components/autofill/core/browser/credit_card.h b/components/autofill/core/browser/data_model/credit_card.h similarity index 97% rename from components/autofill/core/browser/credit_card.h rename to components/autofill/core/browser/data_model/credit_card.h index 397ac1bd..0a4c3d6 100644 --- a/components/autofill/core/browser/credit_card.h +++ b/components/autofill/core/browser/data_model/credit_card.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_H_ #include <iosfwd> #include <string> @@ -15,7 +15,7 @@ #include "base/strings/string16.h" #include "base/strings/string_piece_forward.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" namespace autofill { @@ -370,4 +370,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_CREDIT_CARD_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_H_
diff --git a/components/autofill/core/browser/credit_card_unittest.cc b/components/autofill/core/browser/data_model/credit_card_unittest.cc similarity index 97% rename from components/autofill/core/browser/credit_card_unittest.cc rename to components/autofill/core/browser/data_model/credit_card_unittest.cc index 71153c6..0841bf5 100644 --- a/components/autofill/core/browser/credit_card_unittest.cc +++ b/components/autofill/core/browser/data_model/credit_card_unittest.cc
@@ -12,10 +12,10 @@ #include "base/time/time.h" #include "build/build_config.h" #include "components/autofill/core/browser/autofill_experiments.h" -#include "components/autofill/core/browser/autofill_metadata.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_clock.h" @@ -37,35 +37,23 @@ namespace { -// From https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm +// From +// https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm const char* const kValidNumbers[] = { - "378282246310005", - "3714 4963 5398 431", - "3787-3449-3671-000", - "5610591081018250", - "3056 9309 0259 04", - "3852-0000-0232-37", - "6011111111111117", - "6011 0009 9013 9424", - "3530-1113-3330-0000", - "3566002020360505", - "5555 5555 5555 4444", - "5105-1051-0510-5100", - "4111111111111111", - "4012 8888 8888 1881", - "4222-2222-2222-2", - "5019717010103742", - "6331101999990016", - "6247130048162403", - "4532261615476013542", - "6362970000457013", + "378282246310005", "3714 4963 5398 431", "3787-3449-3671-000", + "5610591081018250", "3056 9309 0259 04", "3852-0000-0232-37", + "6011111111111117", "6011 0009 9013 9424", "3530-1113-3330-0000", + "3566002020360505", "5555 5555 5555 4444", "5105-1051-0510-5100", + "4111111111111111", "4012 8888 8888 1881", "4222-2222-2222-2", + "5019717010103742", "6331101999990016", "6247130048162403", + "4532261615476013542", "6362970000457013", }; const char* const kInvalidNumbers[] = { - "4111 1111 112", /* too short */ - "41111111111111111115", /* too long */ - "4111-1111-1111-1110", /* wrong Luhn checksum */ - "3056 9309 0259 04aa", /* non-digit characters */ + "4111 1111 112", /* too short */ + "41111111111111111115", /* too long */ + "4111-1111-1111-1110", /* wrong Luhn checksum */ + "3056 9309 0259 04aa", /* non-digit characters */ }; } // namespace @@ -694,22 +682,16 @@ TEST(CreditCardTest, IconResourceId) { EXPECT_EQ(IDR_AUTOFILL_CC_AMEX, CreditCard::IconResourceId(kAmericanExpressCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_DINERS, - CreditCard::IconResourceId(kDinersCard)); + EXPECT_EQ(IDR_AUTOFILL_CC_DINERS, CreditCard::IconResourceId(kDinersCard)); EXPECT_EQ(IDR_AUTOFILL_CC_DISCOVER, CreditCard::IconResourceId(kDiscoverCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_ELO, - CreditCard::IconResourceId(kEloCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_JCB, - CreditCard::IconResourceId(kJCBCard)); + EXPECT_EQ(IDR_AUTOFILL_CC_ELO, CreditCard::IconResourceId(kEloCard)); + EXPECT_EQ(IDR_AUTOFILL_CC_JCB, CreditCard::IconResourceId(kJCBCard)); EXPECT_EQ(IDR_AUTOFILL_CC_MASTERCARD, CreditCard::IconResourceId(kMasterCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_MIR, - CreditCard::IconResourceId(kMirCard)); - EXPECT_EQ(IDR_AUTOFILL_CC_UNIONPAY, - CreditCard::IconResourceId(kUnionPay)); - EXPECT_EQ(IDR_AUTOFILL_CC_VISA, - CreditCard::IconResourceId(kVisaCard)); + EXPECT_EQ(IDR_AUTOFILL_CC_MIR, CreditCard::IconResourceId(kMirCard)); + EXPECT_EQ(IDR_AUTOFILL_CC_UNIONPAY, CreditCard::IconResourceId(kUnionPay)); + EXPECT_EQ(IDR_AUTOFILL_CC_VISA, CreditCard::IconResourceId(kVisaCard)); } TEST(CreditCardTest, UpdateFromImportedCard_UpdatedWithNameAndExpirationDate) { @@ -1078,18 +1060,18 @@ EXPECT_EQ(ASCIIToUTF16("07"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); EXPECT_EQ(7, card.expiration_month()); - card.SetInfo( - AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("January"), "en-US"); + card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("January"), + "en-US"); EXPECT_EQ(ASCIIToUTF16("01"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); EXPECT_EQ(1, card.expiration_month()); - card.SetInfo( - AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("Apr"), "en-US"); + card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), ASCIIToUTF16("Apr"), + "en-US"); EXPECT_EQ(ASCIIToUTF16("04"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); EXPECT_EQ(4, card.expiration_month()); - card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), - UTF8ToUTF16("FÉVRIER"), "fr-FR"); + card.SetInfo(AutofillType(CREDIT_CARD_EXP_MONTH), UTF8ToUTF16("FÉVRIER"), + "fr-FR"); EXPECT_EQ(ASCIIToUTF16("02"), card.GetRawInfo(CREDIT_CARD_EXP_MONTH)); EXPECT_EQ(2, card.expiration_month()); }
diff --git a/components/autofill/core/browser/form_group.cc b/components/autofill/core/browser/data_model/form_group.cc similarity index 92% rename from components/autofill/core/browser/form_group.cc rename to components/autofill/core/browser/data_model/form_group.cc index 4645c24..e6f500b 100644 --- a/components/autofill/core/browser/form_group.cc +++ b/components/autofill/core/browser/data_model/form_group.cc
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/common/autofill_l10n_util.h" namespace autofill {
diff --git a/components/autofill/core/browser/form_group.h b/components/autofill/core/browser/data_model/form_group.h similarity index 94% rename from components/autofill/core/browser/form_group.h rename to components/autofill/core/browser/data_model/form_group.h index b4f75500..290d7bb 100644 --- a/components/autofill/core/browser/form_group.h +++ b/components/autofill/core/browser/data_model/form_group.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_GROUP_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_GROUP_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_FORM_GROUP_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_FORM_GROUP_H_ #include <string> @@ -89,4 +89,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_FORM_GROUP_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_FORM_GROUP_H_
diff --git a/components/autofill/core/browser/phone_number.cc b/components/autofill/core/browser/data_model/phone_number.cc similarity index 98% rename from components/autofill/core/browser/phone_number.cc rename to components/autofill/core/browser/data_model/phone_number.cc index 7498365f..de9cf70 100644 --- a/components/autofill/core/browser/phone_number.cc +++ b/components/autofill/core/browser/data_model/phone_number.cc
@@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/phone_number.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/phone_number_i18n.h"
diff --git a/components/autofill/core/browser/phone_number.h b/components/autofill/core/browser/data_model/phone_number.h similarity index 92% rename from components/autofill/core/browser/phone_number.h rename to components/autofill/core/browser/data_model/phone_number.h index ab350f3..f2c96bc 100644 --- a/components/autofill/core/browser/phone_number.h +++ b/components/autofill/core/browser/data_model/phone_number.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_PHONE_NUMBER_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_PHONE_NUMBER_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_PHONE_NUMBER_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_PHONE_NUMBER_H_ #include <stddef.h> @@ -11,7 +11,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" #include "components/autofill/core/browser/phone_number_i18n.h" namespace autofill { @@ -96,4 +96,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PHONE_NUMBER_H_ +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_PHONE_NUMBER_H_
diff --git a/components/autofill/core/browser/phone_number_unittest.cc b/components/autofill/core/browser/data_model/phone_number_unittest.cc similarity index 98% rename from components/autofill/core/browser/phone_number_unittest.cc rename to components/autofill/core/browser/data_model/phone_number_unittest.cc index 806f5e5c..0d1a665 100644 --- a/components/autofill/core/browser/phone_number_unittest.cc +++ b/components/autofill/core/browser/data_model/phone_number_unittest.cc
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/phone_number.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/core/browser/test_data_creator.cc b/components/autofill/core/browser/data_model/test_data_creator.cc similarity index 94% rename from components/autofill/core/browser/test_data_creator.cc rename to components/autofill/core/browser/data_model/test_data_creator.cc index 5ef8892..41bdcd75 100644 --- a/components/autofill/core/browser/test_data_creator.cc +++ b/components/autofill/core/browser/data_model/test_data_creator.cc
@@ -2,12 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/test_data_creator.h" +#include "components/autofill/core/browser/data_model/test_data_creator.h" + +#include <inttypes.h> #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_features.h" @@ -106,7 +108,8 @@ profile.SetInfo(NAME_FULL, base::UTF8ToUTF16("Polly Disused"), app_locale_); profile.SetInfo(COMPANY_NAME, base::UTF8ToUTF16(base::StringPrintf( - "%lld Inc.", static_cast<long long>(use_date.ToTimeT()))), + "%" PRIu64 " Inc.", + use_date.ToDeltaSinceWindowsEpoch().InMicroseconds())), app_locale_); profile.SetInfo(EMAIL_ADDRESS, base::UTF8ToUTF16("polly.disused@fake.chromium.org"), @@ -131,7 +134,8 @@ profile.SetInfo(NAME_FULL, base::UTF8ToUTF16("Polly Deletable"), app_locale_); profile.SetInfo(COMPANY_NAME, base::UTF8ToUTF16(base::StringPrintf( - "%lld Inc.", static_cast<long long>(use_date.ToTimeT()))), + "%" PRIu64 " Inc.", + use_date.ToDeltaSinceWindowsEpoch().InMicroseconds())), app_locale_); profile.SetInfo(EMAIL_ADDRESS, base::UTF8ToUTF16("polly.deletable@fake.chromium.org"),
diff --git a/components/autofill/core/browser/test_data_creator.h b/components/autofill/core/browser/data_model/test_data_creator.h similarity index 78% rename from components/autofill/core/browser/test_data_creator.h rename to components/autofill/core/browser/data_model/test_data_creator.h index 5a34c16..bdbfed3 100644 --- a/components/autofill/core/browser/test_data_creator.h +++ b/components/autofill/core/browser/data_model/test_data_creator.h
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_DATA_CREATOR_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_DATA_CREATOR_H_ +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TEST_DATA_CREATOR_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TEST_DATA_CREATOR_H_ #include <string> #include <vector> #include "base/callback.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill { @@ -49,4 +49,4 @@ } // namespace autofill -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_TEST_DATA_CREATOR_H_ \ No newline at end of file +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TEST_DATA_CREATOR_H_ \ No newline at end of file
diff --git a/components/autofill/core/browser/field_filler.cc b/components/autofill/core/browser/field_filler.cc index 736b6684b..eeaecde 100644 --- a/components/autofill/core/browser/field_filler.cc +++ b/components/autofill/core/browser/field_filler.cc
@@ -15,15 +15,15 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/address_normalizer.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_data_model.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/field_types.h" -#include "components/autofill/core/browser/phone_number.h" #include "components/autofill/core/browser/state_names.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_l10n_util.h"
diff --git a/components/autofill/core/browser/field_filler_unittest.cc b/components/autofill/core/browser/field_filler_unittest.cc index 82728e71..11f7630 100644 --- a/components/autofill/core/browser/field_filler_unittest.cc +++ b/components/autofill/core/browser/field_filler_unittest.cc
@@ -20,11 +20,11 @@ #include "components/autofill/core/browser/address_normalizer.h" #include "components/autofill/core/browser/address_normalizer_impl.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/common/autofill_features.h" #include "components/autofill/core/common/autofill_util.h"
diff --git a/components/autofill/core/browser/form_data_importer.cc b/components/autofill/core/browser/form_data_importer.cc index 93a16220..c66aae3 100644 --- a/components/autofill/core/browser/form_data_importer.cc +++ b/components/autofill/core/browser/form_data_importer.cc
@@ -22,12 +22,12 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/personal_data_manager.h" -#include "components/autofill/core/browser/phone_number.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/components/autofill/core/browser/form_data_importer_unittest.cc b/components/autofill/core/browser/form_data_importer_unittest.cc index e1d3e18b..b599a485 100644 --- a/components/autofill/core/browser/form_data_importer_unittest.cc +++ b/components/autofill/core/browser/form_data_importer_unittest.cc
@@ -27,9 +27,9 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/personal_data_manager_observer.h"
diff --git a/components/autofill/core/browser/form_parsing/phone_field.h b/components/autofill/core/browser/form_parsing/phone_field.h index 9df792b..59f3380 100644 --- a/components/autofill/core/browser/form_parsing/phone_field.h +++ b/components/autofill/core/browser/form_parsing/phone_field.h
@@ -14,8 +14,8 @@ #include "base/gtest_prod_util.h" #include "base/macros.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/form_parsing/form_field.h" -#include "components/autofill/core/browser/phone_number.h" namespace autofill {
diff --git a/components/autofill/core/browser/label_formatter.h b/components/autofill/core/browser/label_formatter.h index 48172fcb..759837e 100644 --- a/components/autofill/core/browser/label_formatter.h +++ b/components/autofill/core/browser/label_formatter.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" namespace autofill {
diff --git a/components/autofill/core/browser/label_formatter_unittest.cc b/components/autofill/core/browser/label_formatter_unittest.cc index fc66da06..ee933db 100644 --- a/components/autofill/core/browser/label_formatter_unittest.cc +++ b/components/autofill/core/browser/label_formatter_unittest.cc
@@ -6,7 +6,7 @@ #include <vector> -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/core/browser/label_formatter_utils.cc b/components/autofill/core/browser/label_formatter_utils.cc index d51212b..bf559d5b2 100644 --- a/components/autofill/core/browser/label_formatter_utils.cc +++ b/components/autofill/core/browser/label_formatter_utils.cc
@@ -8,6 +8,8 @@ #include <iterator> #include <memory> +#include "base/bind.h" +#include "base/callback.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/address_i18n.h" @@ -21,6 +23,38 @@ #include "ui/base/l10n/l10n_util.h" namespace autofill { +namespace { + +// Returns true if all |profiles| have the same value for the data retrieved by +// |get_data|. +bool HaveSameData( + const std::vector<AutofillProfile*>& profiles, + const std::string& app_locale, + base::RepeatingCallback<base::string16(const AutofillProfile&, + const std::string&)> get_data, + base::RepeatingCallback<bool(const base::string16& str1, + const base::string16& str2)> matches) { + if (profiles.size() <= 1) { + return true; + } + + const base::string16 first_profile_data = + get_data.Run(*profiles[0], app_locale); + for (size_t i = 1; i < profiles.size(); ++i) { + const base::string16 current_profile_data = + get_data.Run(*profiles[i], app_locale); + if (!matches.Run(first_profile_data, current_profile_data)) { + return false; + } + } + return true; +} + +bool Equals(const base::string16& str1, const base::string16& str2) { + return str1 == str2; +} + +} // namespace const int kStreetAddressFieldTypes[] = { ADDRESS_HOME_LINE1, ADDRESS_HOME_LINE2, @@ -126,11 +160,6 @@ return trimmed_profile; } -base::string16 GetLabelName(const AutofillProfile& profile, - const std::string& app_locale) { - return profile.GetInfo(AutofillType(NAME_FULL), app_locale); -} - base::string16 GetLabelForFocusedAddress( ServerFieldType focused_field_type, bool form_has_street_address, @@ -197,6 +226,16 @@ return ConstructLabelLine(label_parts); } +base::string16 GetLabelFullName(const AutofillProfile& profile, + const std::string& app_locale) { + return profile.GetInfo(AutofillType(NAME_FULL), app_locale); +} + +base::string16 GetLabelFirstName(const AutofillProfile& profile, + const std::string& app_locale) { + return profile.GetInfo(AutofillType(NAME_FIRST), app_locale); +} + base::string16 GetLabelEmail(const AutofillProfile& profile, const std::string& app_locale) { const base::string16 email = @@ -217,46 +256,35 @@ bool HaveSameEmailAddresses(const std::vector<AutofillProfile*>& profiles, const std::string& app_locale) { - bool first_email_found = false; - base::string16 first_email; + return HaveSameData(profiles, app_locale, base::BindRepeating(&GetLabelEmail), + base::BindRepeating(&Equals)); +} - for (const AutofillProfile* profile : profiles) { - base::string16 email_from_profile = GetLabelEmail(*profile, app_locale); - - if (!first_email_found) { - // Store the first email address whether it's empty or not because we - // consider "" and "hao.le@aol.com" to be different email addresses. - first_email_found = true; - first_email = email_from_profile; - } else if (email_from_profile != first_email) { - return false; - } - } - return true; +bool HaveSameFirstNames(const std::vector<AutofillProfile*>& profiles, + const std::string& app_locale) { + return HaveSameData(profiles, app_locale, + base::BindRepeating(&GetLabelFirstName), + base::BindRepeating(&Equals)); } bool HaveSamePhoneNumbers(const std::vector<AutofillProfile*>& profiles, const std::string& app_locale) { - bool first_phone_found = false; - base::string16 first_phone; + // Note that the same country code is used in all comparisons. + auto equals = [](const std::string& country_code, + const std::string& app_locale, const base::string16& phone1, + const base::string16& phone2) -> bool { + return (phone1.empty() && phone2.empty()) || + i18n::PhoneNumbersMatch(phone1, phone2, country_code, app_locale); + }; - for (const AutofillProfile* profile : profiles) { - base::string16 phone_from_profile = GetLabelPhone(*profile, app_locale); - - if (!first_phone_found) { - // Store the first phone number whether it's empty or not because we - // consider "" and "(514) 873-1100" to be different phone numbers. - first_phone_found = true; - first_phone = phone_from_profile; - } else if (!(first_phone.empty() && phone_from_profile.empty()) && - !i18n::PhoneNumbersMatch(first_phone, phone_from_profile, - base::UTF16ToASCII(profile->GetInfo( - ADDRESS_HOME_COUNTRY, app_locale)), - app_locale)) { - return false; - } - } - return true; + return profiles.size() <= 1 + ? true + : HaveSameData( + profiles, app_locale, base::BindRepeating(&GetLabelPhone), + base::BindRepeating(equals, + base::UTF16ToASCII(profiles[0]->GetInfo( + ADDRESS_HOME_COUNTRY, app_locale)), + app_locale)); } } // namespace autofill
diff --git a/components/autofill/core/browser/label_formatter_utils.h b/components/autofill/core/browser/label_formatter_utils.h index 4232d74..e4e5c007 100644 --- a/components/autofill/core/browser/label_formatter_utils.h +++ b/components/autofill/core/browser/label_formatter_utils.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" namespace autofill { @@ -64,10 +64,6 @@ const std::string& app_locale, const std::vector<ServerFieldType>& types); -// Returns the full name associated with |profile|. -base::string16 GetLabelName(const AutofillProfile& profile, - const std::string& app_locale); - // Returns either street-address data or non-street-address data found in // |profile|. If |focused_field_type| is a street address field, then returns // non-street-address data, e.g. Lowell, MA 01852. @@ -122,6 +118,16 @@ const std::vector<ServerFieldType>& types, const base::string16& contact_info); +// Returns the full name associated with |profile|, if any; otherwise, returns +// an empty string. +base::string16 GetLabelFullName(const AutofillProfile& profile, + const std::string& app_locale); + +// Returns the first name associated with |profile|, if any; otherwise, returns +// an empty string. +base::string16 GetLabelFirstName(const AutofillProfile& profile, + const std::string& app_locale); + // Returns the email address associated with |profile|, if any; otherwise, // returns an empty string. base::string16 GetLabelEmail(const AutofillProfile& profile, @@ -139,12 +145,17 @@ bool HaveSameEmailAddresses(const std::vector<AutofillProfile*>& profiles, const std::string& app_locale); +// Returns true if all |profiles| have the same first name. Note that names are +// compared without normalization, so José and Jose are considered different +// names. +bool HaveSameFirstNames(const std::vector<AutofillProfile*>& profiles, + const std::string& app_locale); + // Returns true if all |profiles| have the same phone number after // normalization. Note that the absence of a phone number and an actual phone // number, e.g. (401) 847-8720, are considered different phone numbers. bool HaveSamePhoneNumbers(const std::vector<AutofillProfile*>& profiles, const std::string& app_locale); - } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_LABEL_FORMATTER_UTILS_H_
diff --git a/components/autofill/core/browser/label_formatter_utils_unittest.cc b/components/autofill/core/browser/label_formatter_utils_unittest.cc index 308e943..e3b0e63 100644 --- a/components/autofill/core/browser/label_formatter_utils_unittest.cc +++ b/components/autofill/core/browser/label_formatter_utils_unittest.cc
@@ -4,13 +4,14 @@ #include "components/autofill/core/browser/label_formatter_utils.h" +#include "base/bind.h" #include "base/guid.h" #include "base/strings/string16.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/grit/components_scaled_resources.h" #include "components/strings/grit/components_strings.h" #include "testing/gtest/include/gtest/gtest.h" @@ -19,24 +20,73 @@ namespace autofill { namespace { -TEST(LabelFormatterUtilsTest, ConstructLabelLine) { - EXPECT_EQ(base::string16(), ConstructLabelLine({})); +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_OneProfileAndNoFirstName) { + AutofillProfile profile = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile, "", "", "", "", "", "", "", "", "", "", "DE", + ""); + EXPECT_TRUE(HaveSameFirstNames({&profile}, "de")); +} - base::string16 name = base::ASCIIToUTF16("Blaise Pascal"); - base::string16 phone = base::ASCIIToUTF16("01 53 01 82 00"); - base::string16 email = base::ASCIIToUTF16("b.pascal@orange.fr"); +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_OneProfileAndFirstName) { + AutofillProfile profile = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile, "Maria", "", "", "", "", "", "", "", "", "", + "DE", ""); + EXPECT_TRUE(HaveSameFirstNames({&profile}, "de")); +} - base::string16 separator = - l10n_util::GetStringUTF16(IDS_AUTOFILL_SUGGESTION_LABEL_SEPARATOR); +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_NoFirstNames) { + AutofillProfile profile1 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile1, "", "", "Kirch", "", "", "", "", "", "", "", + "DE", ""); + AutofillProfile profile2 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile2, "", "", "Winckelmann", "", "", "", "", "", "", + "", "DE", ""); + EXPECT_TRUE(HaveSameFirstNames({&profile1, &profile2}, "de")); +} - EXPECT_EQ(name, ConstructLabelLine({name})); - EXPECT_EQ(base::JoinString({name, separator, phone, separator, email}, - base::string16()), - ConstructLabelLine({name, phone, email})); +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_SameFirstNames) { + AutofillProfile profile1 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile1, "Maria", "", "Kirch", "", "", "", "", "", "", + "", "DE", ""); + AutofillProfile profile2 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile2, "Maria", "", "Winckelmann", "", "", "", "", + "", "", "", "DE", ""); + EXPECT_TRUE(HaveSameFirstNames({&profile1, &profile2}, "de")); +} + +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_DifferentNonEmptyFirstNames) { + AutofillProfile profile1 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile1, "Maria", "", "Kirch", "", "", "", "", "", "", + "", "DE", ""); + AutofillProfile profile2 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile2, "Mary", "", "Kirch", "", "", "", "", "", "", + "", "DE", ""); + EXPECT_FALSE(HaveSameFirstNames({&profile1, &profile2}, "de")); +} + +TEST(LabelFormatterUtilsTest, HaveSameFirstNames_NonEmptyAndEmptyFirstNames) { + AutofillProfile profile1 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "", + "", "", "", "", "DE", ""); + AutofillProfile profile2 = + AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile2, "", "Margaretha", "Winckelmann", "", "", "", + "", "", "", "", "DE", ""); + EXPECT_FALSE(HaveSameFirstNames({&profile1, &profile2}, "de")); + EXPECT_FALSE(HaveSameFirstNames({&profile2, &profile1}, "de")); } TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithOneProfileAndNoEmailAddress) { + HaveSameEmailAddresses_OneProfileAndNoEmailAddress) { AutofillProfile profile = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Maria", "Margaretha", "Kirch", @@ -45,7 +95,7 @@ } TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithOneProfileAndEmailAddress) { + HaveSameEmailAddresses_OneProfileAndEmailAddress) { AutofillProfile profile = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Maria", "Margaretha", "Kirch", "", "", "", "", @@ -53,8 +103,7 @@ EXPECT_TRUE(HaveSameEmailAddresses({&profile}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithProfilesAndNoEmailAddresses) { +TEST(LabelFormatterUtilsTest, HaveSameEmailAddresses_NoEmailAddresses) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "", @@ -66,8 +115,7 @@ EXPECT_TRUE(HaveSameEmailAddresses({&profile1, &profile2}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithProfilesAndSameEmailAddresses) { +TEST(LabelFormatterUtilsTest, HaveSameEmailAddresses_SameEmailAddresses) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", @@ -80,7 +128,7 @@ } TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithProfilesAndDifferentNonEmptyEmailAddresses) { + HaveSameEmailAddresses_DifferentNonEmptyEmailAddresses) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", @@ -93,7 +141,7 @@ } TEST(LabelFormatterUtilsTest, - HaveSameEmailAddressesWithProfilesAndNonEmptyAndEmptyEmailAddresses) { + HaveSameEmailAddresses_NonEmptyAndEmptyEmailAddresses) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", @@ -106,8 +154,7 @@ EXPECT_FALSE(HaveSameEmailAddresses({&profile2, &profile1}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithOneProfileAndNoPhoneNumber) { +TEST(LabelFormatterUtilsTest, HaveSamePhoneNumbers_OneProfileAndNoPhoneNumber) { AutofillProfile profile = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Maria", "Margaretha", "Kirch", "", "", "", "", @@ -115,8 +162,7 @@ EXPECT_TRUE(HaveSamePhoneNumbers({&profile}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithOneProfileAndPhoneNumber) { +TEST(LabelFormatterUtilsTest, HaveSamePhoneNumbers_OneProfileAndPhoneNumber) { AutofillProfile profile = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Maria", "Margaretha", "Kirch", "", "", "", "", @@ -124,8 +170,7 @@ EXPECT_TRUE(HaveSamePhoneNumbers({&profile}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithProfilesAndNoPhoneNumber) { +TEST(LabelFormatterUtilsTest, HaveSamePhoneNumbers_NoPhoneNumber) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "", @@ -137,8 +182,7 @@ EXPECT_TRUE(HaveSamePhoneNumbers({&profile1, &profile2}, "de")); } -TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithProfilesAndSamePhoneNumbers) { +TEST(LabelFormatterUtilsTest, HaveSamePhoneNumbers_SamePhoneNumbers) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "", @@ -155,7 +199,7 @@ } TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithProfilesAndDifferentNonEmptyPhoneNumbers) { + HaveSamePhoneNumbers_DifferentNonEmptyPhoneNumbers) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "", @@ -168,7 +212,7 @@ } TEST(LabelFormatterUtilsTest, - HaveSamePhoneNumbersWithProfilesAndNonEmptyAndEmptyPhoneNumbers) { + HaveSamePhoneNumbers_NonEmptyAndEmptyPhoneNumbers) { AutofillProfile profile1 = AutofillProfile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Maria", "Margaretha", "Kirch", "", "", "",
diff --git a/components/autofill/core/browser/metrics/address_form_event_logger.h b/components/autofill/core/browser/metrics/address_form_event_logger.h index 52d467d..072f7c4 100644 --- a/components/autofill/core/browser/metrics/address_form_event_logger.h +++ b/components/autofill/core/browser/metrics/address_form_event_logger.h
@@ -9,7 +9,7 @@ #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/metrics/form_event_logger_base.h" #include "components/autofill/core/browser/metrics/form_events.h"
diff --git a/components/autofill/core/browser/metrics/credit_card_form_event_logger.h b/components/autofill/core/browser/metrics/credit_card_form_event_logger.h index 05c64a9..aaf867dc 100644 --- a/components/autofill/core/browser/metrics/credit_card_form_event_logger.h +++ b/components/autofill/core/browser/metrics/credit_card_form_event_logger.h
@@ -10,7 +10,7 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/metrics/form_event_logger_base.h" #include "components/autofill/core/browser/metrics/form_events.h"
diff --git a/components/autofill/core/browser/payments/autofill_credit_card_filling_infobar_delegate_mobile.cc b/components/autofill/core/browser/payments/autofill_credit_card_filling_infobar_delegate_mobile.cc index 87895b3..c75dc8dc 100644 --- a/components/autofill/core/browser/payments/autofill_credit_card_filling_infobar_delegate_mobile.cc +++ b/components/autofill/core/browser/payments/autofill_credit_card_filling_infobar_delegate_mobile.cc
@@ -5,7 +5,7 @@ #include "components/autofill/core/browser/payments/autofill_credit_card_filling_infobar_delegate_mobile.h" #include "build/build_config.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_features.h" #include "components/grit/components_scaled_resources.h"
diff --git a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc index 24e2a81..77c2b44 100644 --- a/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc +++ b/components/autofill/core/browser/payments/autofill_save_card_infobar_delegate_mobile.cc
@@ -10,7 +10,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "components/autofill/core/browser/autofill_experiments.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/legal_message_line.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/autofill_features.h"
diff --git a/components/autofill/core/browser/payments/credit_card_save_manager.cc b/components/autofill/core/browser/payments/credit_card_save_manager.cc index 73b029a..0cb71b0 100644 --- a/components/autofill/core/browser/payments/credit_card_save_manager.cc +++ b/components/autofill/core/browser/payments/credit_card_save_manager.cc
@@ -29,9 +29,9 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/payments/legacy_strike_database.h" #include "components/autofill/core/browser/payments/payments_client.h" @@ -57,9 +57,9 @@ // Otherwise, returns |name|. // // Note that a better way to do this would be to use SplitName from -// src/components/autofill/core/browser/contact_info.cc. However, for now we -// want the logic of which variations of names are considered to be the same to -// exactly match the logic applied on the Payments server. +// src/components/autofill/core/browser/data_model/contact_info.cc. However, for +// now we want the logic of which variations of names are considered to be the +// same to exactly match the logic applied on the Payments server. base::string16 RemoveMiddleInitial(const base::string16& name) { std::vector<base::StringPiece16> parts = base::SplitStringPiece(name, base::kWhitespaceUTF16,
diff --git a/components/autofill/core/browser/payments/credit_card_save_manager.h b/components/autofill/core/browser/payments/credit_card_save_manager.h index 9e51fa0..f28c34a 100644 --- a/components/autofill/core/browser/payments/credit_card_save_manager.h +++ b/components/autofill/core/browser/payments/credit_card_save_manager.h
@@ -16,7 +16,7 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/payments/credit_card_save_strike_database.h" #include "components/autofill/core/browser/payments/local_card_migration_strike_database.h"
diff --git a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc index f750808f..0c29f58 100644 --- a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc +++ b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc
@@ -25,9 +25,9 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/mock_autocomplete_history_manager.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
diff --git a/components/autofill/core/browser/payments/full_card_request.cc b/components/autofill/core/browser/payments/full_card_request.cc index 746db66..d3a489a 100644 --- a/components/autofill/core/browser/payments/full_card_request.cc +++ b/components/autofill/core/browser/payments/full_card_request.cc
@@ -9,7 +9,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_util.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/common/autofill_clock.h"
diff --git a/components/autofill/core/browser/payments/full_card_request_unittest.cc b/components/autofill/core/browser/payments/full_card_request_unittest.cc index a1177a2b..e3c33f9 100644 --- a/components/autofill/core/browser/payments/full_card_request_unittest.cc +++ b/components/autofill/core/browser/payments/full_card_request_unittest.cc
@@ -12,7 +12,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/test_autofill_client.h"
diff --git a/components/autofill/core/browser/payments/local_card_migration_manager.cc b/components/autofill/core/browser/payments/local_card_migration_manager.cc index 14eb58e..8797fcad8 100644 --- a/components/autofill/core/browser/payments/local_card_migration_manager.cc +++ b/components/autofill/core/browser/payments/local_card_migration_manager.cc
@@ -16,7 +16,7 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_data_importer.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/payments/payments_util.h"
diff --git a/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc b/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc index 7ca5804..f95daf3 100644 --- a/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc +++ b/components/autofill/core/browser/payments/local_card_migration_manager_unittest.cc
@@ -23,9 +23,9 @@ #include "base/time/time.h" #include "build/build_config.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/mock_autocomplete_history_manager.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/payments/test_credit_card_save_manager.h"
diff --git a/components/autofill/core/browser/payments/payments_client.cc b/components/autofill/core/browser/payments/payments_client.cc index 58a9614..bf03a2d9 100644 --- a/components/autofill/core/browser/payments/payments_client.cc +++ b/components/autofill/core/browser/payments/payments_client.cc
@@ -19,10 +19,10 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_data_model.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/account_info_getter.h" #include "components/autofill/core/browser/payments/local_card_migration_manager.h" #include "components/autofill/core/browser/payments/payments_request.h"
diff --git a/components/autofill/core/browser/payments/payments_client.h b/components/autofill/core/browser/payments/payments_client.h index 9f6d624..048b077 100644 --- a/components/autofill/core/browser/payments/payments_client.h +++ b/components/autofill/core/browser/payments/payments_client.h
@@ -12,8 +12,8 @@ #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" #include "components/autofill/core/browser/autofill_client.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/card_unmask_delegate.h" #include "google_apis/gaia/google_service_auth_error.h" #include "services/identity/public/cpp/access_token_fetcher.h"
diff --git a/components/autofill/core/browser/payments/payments_util.h b/components/autofill/core/browser/payments/payments_util.h index 8390b77..95a45af 100644 --- a/components/autofill/core/browser/payments/payments_util.h +++ b/components/autofill/core/browser/payments/payments_util.h
@@ -8,7 +8,7 @@ #include <stdint.h> #include <vector> -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill {
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc index a89e682..ef4c213 100644 --- a/components/autofill/core/browser/personal_data_manager.cc +++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -33,14 +33,14 @@ #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/country_data.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/phone_number.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/label_formatter.h" #include "components/autofill/core/browser/label_formatter_utils.h" #include "components/autofill/core/browser/personal_data_manager_observer.h" -#include "components/autofill/core/browser/phone_number.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/suggestion_selection.h" #include "components/autofill/core/browser/validation.h" @@ -1170,12 +1170,13 @@ std::unique_ptr<LabelFormatter> formatter; #if !defined(OS_ANDROID) && !defined(OS_IOS) - formatter = base::FeatureList::IsEnabled( - autofill::features::kAutofillUseImprovedLabelDisambiguation) + bool use_improved_label_disambiguation = base::FeatureList::IsEnabled( + autofill::features::kAutofillUseImprovedLabelDisambiguation); + formatter = use_improved_label_disambiguation ? LabelFormatter::Create(app_locale_, type.GetStorableType(), field_types, unique_matched_profiles) : nullptr; -#endif +#endif // !defined(OS_ANDROID) && !defined(OS_IOS) // Generate disambiguating labels based on the list of matches. std::vector<base::string16> labels; @@ -1187,9 +1188,8 @@ app_locale_, &labels); } - suggestion_selection::PrepareSuggestions( - formatter && data_util::ContainsAddress(formatter->groups()), labels, - &unique_suggestions); + suggestion_selection::PrepareSuggestions(formatter != nullptr, labels, + &unique_suggestions); return unique_suggestions; }
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h index 24e2e010..8bc45dd6 100644 --- a/components/autofill/core/browser/personal_data_manager.h +++ b/components/autofill/core/browser/personal_data_manager.h
@@ -19,16 +19,16 @@ #include "base/observer_list.h" #include "base/strings/string16.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_profile_validator.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/browser/data_model/test_data_creator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/account_info_getter.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/proto/server.pb.h" #include "components/autofill/core/browser/suggestion.h" #include "components/autofill/core/browser/sync_utils.h" -#include "components/autofill/core/browser/test_data_creator.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service_observer.h"
diff --git a/components/autofill/core/browser/personal_data_manager_unittest.cc b/components/autofill/core/browser/personal_data_manager_unittest.cc index 304793f2..36336170 100644 --- a/components/autofill/core/browser/personal_data_manager_unittest.cc +++ b/components/autofill/core/browser/personal_data_manager_unittest.cc
@@ -33,9 +33,9 @@ #include "build/build_config.h" #include "components/autofill/core/browser/autofill_experiments.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/label_formatter_utils.h" @@ -2577,7 +2577,7 @@ } #if !defined(OS_ANDROID) && !defined(OS_IOS) -TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ForContactForm) { +TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ContactForm) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", "401 Merrimack St", "", "Lowell", "MA", "01852", "US", @@ -2607,7 +2607,7 @@ #endif // #if !defined(OS_ANDROID) && !defined(OS_IOS) #if !defined(OS_ANDROID) && !defined(OS_IOS) -TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ForAddressForm) { +TEST_F(PersonalDataManagerTest, GetProfileSuggestions_AddressForm) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", "401 Merrimack St", "", "Lowell", "MA", "01852", "US", @@ -2635,7 +2635,7 @@ #endif // #if !defined(OS_ANDROID) && !defined(OS_IOS) #if !defined(OS_ANDROID) && !defined(OS_IOS) -TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ForAddressPhoneForm) { +TEST_F(PersonalDataManagerTest, GetProfileSuggestions_AddressPhoneForm) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", "401 Merrimack St", "", "Lowell", "MA", "01852", "US", @@ -2665,7 +2665,7 @@ #endif // #if !defined(OS_ANDROID) && !defined(OS_IOS) #if !defined(OS_ANDROID) && !defined(OS_IOS) -TEST_F(PersonalDataManagerTest, GetProfileSuggestions_ForAddressEmailForm) { +TEST_F(PersonalDataManagerTest, GetProfileSuggestions_AddressEmailForm) { AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", "401 Merrimack St", "", "Lowell", "MA", "01852", "US", @@ -2724,7 +2724,7 @@ #if !defined(OS_ANDROID) && !defined(OS_IOS) TEST_F(PersonalDataManagerTest, - GetProfileSuggestions_ForAddressContactFormWithProfiles) { + GetProfileSuggestions_AddressContactFormWithProfiles) { AutofillProfile profile1(base::GenerateGUID(), test::kEmptyOrigin); test::SetProfileInfo(&profile1, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", "401 Merrimack St", "", "Lowell", "MA", "01852", "US", @@ -2786,6 +2786,30 @@ } #endif // #if !defined(OS_ANDROID) && !defined(OS_IOS) +#if !defined(OS_ANDROID) && !defined(OS_IOS) +TEST_F(PersonalDataManagerTest, GetProfileSuggestions_FormWithoutNameField) { + AutofillProfile profile(base::GenerateGUID(), test::kEmptyOrigin); + test::SetProfileInfo(&profile, "Hoa", "", "Pham", "hoa.pham@comcast.net", "", + "", "", "", "", "01852", "US", ""); + AddProfileToPersonalDataManager(profile); + + base::test::ScopedFeatureList scoped_features; + scoped_features.InitAndEnableFeature( + features::kAutofillUseImprovedLabelDisambiguation); + + EXPECT_THAT(personal_data_->GetProfileSuggestions( + AutofillType(ADDRESS_HOME_ZIP), base::string16(), false, + std::vector<ServerFieldType>{ADDRESS_HOME_ZIP, EMAIL_ADDRESS, + PHONE_HOME_WHOLE_NUMBER}), + ElementsAre(AllOf( + testing::Field(&Suggestion::label, + base::ASCIIToUTF16("hoa.pham@comcast.net")), + testing::Field(&Suggestion::additional_label, + base::ASCIIToUTF16("hoa.pham@comcast.net")), + testing::Field(&Suggestion::icon, "")))); +} +#endif // #if !defined(OS_ANDROID) && !defined(OS_IOS) + TEST_F(PersonalDataManagerTest, IsKnownCard_MatchesMaskedServerCard) { // Add a masked server card. std::vector<CreditCard> server_cards;
diff --git a/components/autofill/core/browser/phone_number_i18n.cc b/components/autofill/core/browser/phone_number_i18n.cc index ecfbe9a..36ce875 100644 --- a/components/autofill/core/browser/phone_number_i18n.cc +++ b/components/autofill/core/browser/phone_number_i18n.cc
@@ -13,7 +13,7 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "third_party/libphonenumber/phonenumber_api.h" namespace autofill {
diff --git a/components/autofill/core/browser/phone_number_i18n_unittest.cc b/components/autofill/core/browser/phone_number_i18n_unittest.cc index a65481ec..aca67c5 100644 --- a/components/autofill/core/browser/phone_number_i18n_unittest.cc +++ b/components/autofill/core/browser/phone_number_i18n_unittest.cc
@@ -9,7 +9,7 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/libphonenumber/phonenumber_api.h"
diff --git a/components/autofill/core/browser/suggestion_selection.cc b/components/autofill/core/browser/suggestion_selection.cc index 2ffd495f..1640024 100644 --- a/components/autofill/core/browser/suggestion_selection.cc +++ b/components/autofill/core/browser/suggestion_selection.cc
@@ -13,9 +13,9 @@ #include "components/autofill/core/browser/address_i18n.h" #include "components/autofill/core/browser/autofill_data_util.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/suggestion.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_features.h" @@ -245,7 +245,7 @@ num_profiles_supressed); } -void PrepareSuggestions(bool contains_address, +void PrepareSuggestions(bool add_profile_icon, const std::vector<base::string16>& labels, std::vector<Suggestion>* suggestions) { DCHECK_EQ(suggestions->size(), labels.size()); @@ -255,11 +255,10 @@ (*suggestions)[i].label = labels[i]; #if !defined(OS_ANDROID) && !defined(OS_IOS) - if (base::FeatureList::IsEnabled( - autofill::features::kAutofillUseImprovedLabelDisambiguation)) { + if (add_profile_icon) { (*suggestions)[i].icon = "accountBoxIcon"; } -#endif +#endif // !defined(OS_ANDROID) && !defined(OS_IOS) } }
diff --git a/components/autofill/core/browser/suggestion_selection.h b/components/autofill/core/browser/suggestion_selection.h index 319c38e..8ab0c1a 100644 --- a/components/autofill/core/browser/suggestion_selection.h +++ b/components/autofill/core/browser/suggestion_selection.h
@@ -66,10 +66,9 @@ // Prepares a collection of Suggestions to show to the user. Adds |labels| to // their corresponding |suggestions|. A label corresponds to the suggestion with -// the same index. -// |contains_address| determines which icon to add to suggestions in the -// autofill-use-improved-label-disambiguation experiment. -void PrepareSuggestions(bool contains_address, +// the same index. Adds an icon on desktop platforms when |add_profile_icon| is +// true. +void PrepareSuggestions(bool add_profile_icon, const std::vector<base::string16>& labels, std::vector<Suggestion>* suggestions);
diff --git a/components/autofill/core/browser/suggestion_selection_unittest.cc b/components/autofill/core/browser/suggestion_selection_unittest.cc index 4d35f953..219fcfc 100644 --- a/components/autofill/core/browser/suggestion_selection_unittest.cc +++ b/components/autofill/core/browser/suggestion_selection_unittest.cc
@@ -13,8 +13,8 @@ #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/common/autofill_clock.h" #include "components/autofill/core/common/autofill_features.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill/core/browser/test_address_normalizer.h b/components/autofill/core/browser/test_address_normalizer.h index bda898d7a..6af6359 100644 --- a/components/autofill/core/browser/test_address_normalizer.h +++ b/components/autofill/core/browser/test_address_normalizer.h
@@ -9,7 +9,7 @@ #include "base/callback.h" #include "components/autofill/core/browser/address_normalizer.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" namespace autofill {
diff --git a/components/autofill/core/browser/test_personal_data_manager.h b/components/autofill/core/browser/test_personal_data_manager.h index 0dd399b0..6f7be17 100644 --- a/components/autofill/core/browser/test_personal_data_manager.h +++ b/components/autofill/core/browser/test_personal_data_manager.h
@@ -8,8 +8,8 @@ #include <vector> #include "base/optional.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/signin/core/browser/account_info.h"
diff --git a/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.cc b/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.cc index 7a3550a8..692d285 100644 --- a/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.cc +++ b/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.cc
@@ -9,7 +9,7 @@ #include "base/logging.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/grit/components_scaled_resources.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.h b/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.h index fcc6e3af..389bdd1b 100644 --- a/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.h +++ b/components/autofill/core/browser/ui/payments/card_expiration_date_fix_flow_view_delegate_mobile.h
@@ -11,7 +11,7 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill {
diff --git a/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl.h b/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl.h index 6a920e8e..97fb2f9 100644 --- a/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl.h +++ b/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl.h
@@ -11,7 +11,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/card_unmask_delegate.h" #include "components/autofill/core/browser/ui/payments/card_unmask_prompt_controller.h"
diff --git a/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl_unittest.cc b/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl_unittest.cc index c916a47..f068bd83 100644 --- a/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl_unittest.cc +++ b/components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl_unittest.cc
@@ -15,7 +15,7 @@ #include "components/autofill/core/browser/autofill_client.h" #include "components/autofill/core/browser/autofill_metrics.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/ui/payments/card_unmask_prompt_view.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_prefs.h"
diff --git a/components/autofill/core/browser/validation.cc b/components/autofill/core/browser/validation.cc index 3b4bf96..d69938e2 100644 --- a/components/autofill/core/browser/validation.cc +++ b/components/autofill/core/browser/validation.cc
@@ -13,7 +13,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/state_names.h"
diff --git a/components/autofill/core/browser/validation_unittest.cc b/components/autofill/core/browser/validation_unittest.cc index 2604226..dbaa1e8 100644 --- a/components/autofill/core/browser/validation_unittest.cc +++ b/components/autofill/core/browser/validation_unittest.cc
@@ -10,7 +10,7 @@ #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/strings/grit/components_strings.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/autofill/core/browser/webdata/autofill_change.h b/components/autofill/core/browser/webdata/autofill_change.h index f23695ad..605ff81 100644 --- a/components/autofill/core/browser/webdata/autofill_change.h +++ b/components/autofill/core/browser/webdata/autofill_change.h
@@ -9,7 +9,7 @@ #include <vector> #include "base/logging.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" namespace autofill {
diff --git a/components/autofill/core/browser/webdata/autofill_profile_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_profile_sync_bridge.cc index 0e91e96b..6a944a0 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_sync_bridge.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_sync_bridge.cc
@@ -12,9 +12,9 @@ #include "base/guid.h" #include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_profile_sync_util.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/proto/autofill_sync.pb.h" #include "components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.h"
diff --git a/components/autofill/core/browser/webdata/autofill_profile_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autofill_profile_sync_bridge_unittest.cc index 4b1986b..53a6a08e 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_sync_bridge_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_sync_bridge_unittest.cc
@@ -20,9 +20,9 @@ #include "base/test/bind_test_util.h" #include "base/test/scoped_task_environment.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_profile_sync_util.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.cc b/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.cc index c5d3a8ee..8f96bb8 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.cc
@@ -5,9 +5,9 @@ #include "components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" #include "components/autofill/core/browser/autofill_profile_sync_util.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/webdata/autofill_profile_sync_bridge.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker_unittest.cc b/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker_unittest.cc index 779ad92..36dc48f5 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_sync_difference_tracker_unittest.cc
@@ -10,9 +10,9 @@ #include "base/test/mock_callback.h" #include "base/test/scoped_task_environment.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_profile_sync_util.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc b/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc index 1a6b461..99efc6a4 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_syncable_service.cc
@@ -15,12 +15,12 @@ #include "base/memory/ptr_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" // TODO(crbug.com/904390): Remove when the investigation is over. #include "components/autofill/core/browser/autofill_profile_sync_util.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/form_group.h" +#include "components/autofill/core/browser/data_model/form_group.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc b/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc index 6291ce17..33446c9 100644 --- a/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_profile_syncable_service_unittest.cc
@@ -13,8 +13,8 @@ #include "base/memory/ptr_util.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_task_environment.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/sync/model/sync_change_processor.h"
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h index a3119a1..892835c 100644 --- a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h +++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h
@@ -7,8 +7,8 @@ #include <string> -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/sync/protocol/sync.pb.h" namespace autofill {
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc index d7a59194..105805d 100644 --- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc +++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
@@ -9,8 +9,8 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/common/autofill_util.h"
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc index a7650358..0ca087c 100644 --- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
@@ -7,8 +7,8 @@ #include <vector> #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h"
diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc index c174b5a4..0754c2e3 100644 --- a/components/autofill/core/browser/webdata/autofill_table.cc +++ b/components/autofill/core/browser/webdata/autofill_table.cc
@@ -23,10 +23,10 @@ #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/webdata/autofill_change.h"
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc index b2f8812..cada2e22 100644 --- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -20,11 +20,11 @@ #include "base/test/scoped_feature_list.h" #include "base/time/time.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.cc index cf44869..a86604de 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge.cc
@@ -14,9 +14,9 @@ #include "base/metrics/histogram_macros.h" #include "base/optional.h" #include "base/pickle.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_util.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/browser/webdata/autofill_webdata_backend.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge_unittest.cc index c887bde4..e5e5db3 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_metadata_sync_bridge_unittest.cc
@@ -19,10 +19,10 @@ #include "base/test/bind_test_util.h" #include "base/test/scoped_task_environment.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_util.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service.cc b/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service.cc index e577d95..b9aa447 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service.cc
@@ -17,9 +17,9 @@ #include "base/metrics/histogram_macros.h" #include "base/numerics/safe_conversions.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_data_model.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_data_model.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_table.h" #include "components/autofill/core/browser/webdata/autofill_webdata_backend.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service_unittest.cc index 39b72ca..eda11ce 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_metadata_syncable_service_unittest.cc
@@ -16,8 +16,8 @@ #include "base/macros.h" #include "base/numerics/safe_conversions.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_webdata_backend.h" #include "components/autofill/core/browser/webdata/mock_autofill_webdata_backend.h" #include "components/sync/model/sync_change.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc index aa51b2f..bc8177f 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
@@ -12,9 +12,9 @@ #include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_profile_sync_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_util.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc index c595c29b..c17da3c7 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc
@@ -19,11 +19,11 @@ #include "base/test/scoped_feature_list.h" #include "base/test/scoped_task_environment.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_metadata.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/country_names.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_metadata.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_syncable_service.h b/components/autofill/core/browser/webdata/autofill_wallet_syncable_service.h index 9d3ff000..d9e8065 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_syncable_service.h +++ b/components/autofill/core/browser/webdata/autofill_wallet_syncable_service.h
@@ -12,8 +12,8 @@ #include "base/macros.h" #include "base/supports_user_data.h" #include "base/threading/thread_checker.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/sync/model/syncable_service.h"
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_syncable_service_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_syncable_service_unittest.cc index 2530bfc..a3b71ef 100644 --- a/components/autofill/core/browser/webdata/autofill_wallet_syncable_service_unittest.cc +++ b/components/autofill/core/browser/webdata/autofill_wallet_syncable_service_unittest.cc
@@ -8,8 +8,8 @@ #include <vector> #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc index 3d1c708..68fbc53 100644 --- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc +++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
@@ -9,8 +9,8 @@ #include "base/logging.h" #include "base/single_thread_task_runner.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h"
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc b/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc index 0af8ed2..f8e85cb 100644 --- a/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc +++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_util.cc
@@ -11,9 +11,9 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/autofill_profile_comparator.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/payments_customer_data.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h"
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_service.cc b/components/autofill/core/browser/webdata/autofill_webdata_service.cc index 007d48f..08439a5 100644 --- a/components/autofill/core/browser/webdata/autofill_webdata_service.cc +++ b/components/autofill/core/browser/webdata/autofill_webdata_service.cc
@@ -10,8 +10,8 @@ #include "base/single_thread_task_runner.h" #include "base/stl_util.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/browser/webdata/web_data_service_unittest.cc b/components/autofill/core/browser/webdata/web_data_service_unittest.cc index b7503bc..44d51668 100644 --- a/components/autofill/core/browser/webdata/web_data_service_unittest.cc +++ b/components/autofill/core/browser/webdata/web_data_service_unittest.cc
@@ -22,8 +22,8 @@ #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/components/autofill/core/common/password_form.cc b/components/autofill/core/common/password_form.cc index fc592740..580c494 100644 --- a/components/autofill/core/common/password_form.cc +++ b/components/autofill/core/common/password_form.cc
@@ -181,8 +181,8 @@ return !operator==(form); } -bool ArePasswordFormUniqueKeyEqual(const PasswordForm& left, - const PasswordForm& right) { +bool ArePasswordFormUniqueKeysEqual(const PasswordForm& left, + const PasswordForm& right) { return (left.signon_realm == right.signon_realm && left.origin == right.origin && left.username_element == right.username_element &&
diff --git a/components/autofill/core/common/password_form.h b/components/autofill/core/common/password_form.h index db531ee..9ef420e3 100644 --- a/components/autofill/core/common/password_form.h +++ b/components/autofill/core/common/password_form.h
@@ -355,8 +355,8 @@ // True if the unique keys for the forms are the same. The unique key is // (origin, username_element, username_value, password_element, signon_realm). -bool ArePasswordFormUniqueKeyEqual(const PasswordForm& left, - const PasswordForm& right); +bool ArePasswordFormUniqueKeysEqual(const PasswordForm& left, + const PasswordForm& right); // A comparator for the unique key. struct LessThanUniqueKey {
diff --git a/components/autofill/ios/browser/autofill_agent.mm b/components/autofill/ios/browser/autofill_agent.mm index 16978e8..04eba5f 100644 --- a/components/autofill/ios/browser/autofill_agent.mm +++ b/components/autofill/ios/browser/autofill_agent.mm
@@ -23,8 +23,8 @@ #include "components/autofill/core/browser/autofill_field.h" #include "components/autofill/core/browser/autofill_manager.h" #include "components/autofill/core/browser/autofill_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/keyboard_accessory_metrics_logger.h" #include "components/autofill/core/browser/popup_item_ids.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/components/autofill/ios/browser/credit_card_util.mm b/components/autofill/ios/browser/credit_card_util.mm index 53880672..e7632c9 100644 --- a/components/autofill/ios/browser/credit_card_util.mm +++ b/components/autofill/ios/browser/credit_card_util.mm
@@ -6,7 +6,7 @@ #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/components/autofill_assistant/browser/actions/autofill_action.cc b/components/autofill_assistant/browser/actions/autofill_action.cc index dc62d46..81b14718 100644 --- a/components/autofill_assistant/browser/actions/autofill_action.cc +++ b/components/autofill_assistant/browser/actions/autofill_action.cc
@@ -11,8 +11,8 @@ #include "base/callback.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill_assistant/browser/actions/action_delegate.h" #include "components/autofill_assistant/browser/batch_element_checker.h" #include "components/autofill_assistant/browser/client_memory.h"
diff --git a/components/autofill_assistant/browser/actions/autofill_action_unittest.cc b/components/autofill_assistant/browser/actions/autofill_action_unittest.cc index 3462299a..420cad5e2e 100644 --- a/components/autofill_assistant/browser/actions/autofill_action_unittest.cc +++ b/components/autofill_assistant/browser/actions/autofill_action_unittest.cc
@@ -9,8 +9,8 @@ #include "base/bind.h" #include "base/guid.h" #include "build/build_config.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill_assistant/browser/actions/mock_action_delegate.h" #include "components/autofill_assistant/browser/client_memory.h"
diff --git a/components/autofill_assistant/browser/actions/get_payment_information_action.cc b/components/autofill_assistant/browser/actions/get_payment_information_action.cc index 7960da8..c8fac728 100644 --- a/components/autofill_assistant/browser/actions/get_payment_information_action.cc +++ b/components/autofill_assistant/browser/actions/get_payment_information_action.cc
@@ -11,8 +11,8 @@ #include "base/callback.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill_assistant/browser/actions/action_delegate.h" #include "components/autofill_assistant/browser/client_memory.h" @@ -52,6 +52,8 @@ !get_payment_information.shipping_address_name().empty(); payment_options->request_payment_method = get_payment_information.ask_for_payment(); + payment_options->confirm_button_text = + get_payment_information.confirm_button_text(); payment_options->callback = base::BindOnce(&GetPaymentInformationAction::OnGetPaymentInformation,
diff --git a/components/autofill_assistant/browser/actions/mock_action_delegate.h b/components/autofill_assistant/browser/actions/mock_action_delegate.h index 47d585ad..5caf36b 100644 --- a/components/autofill_assistant/browser/actions/mock_action_delegate.h +++ b/components/autofill_assistant/browser/actions/mock_action_delegate.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/callback.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill_assistant/browser/actions/action_delegate.h" #include "components/autofill_assistant/browser/service.pb.h" #include "testing/gmock/include/gmock/gmock.h"
diff --git a/components/autofill_assistant/browser/client_memory.h b/components/autofill_assistant/browser/client_memory.h index acac4c2f..08036d50 100644 --- a/components/autofill_assistant/browser/client_memory.h +++ b/components/autofill_assistant/browser/client_memory.h
@@ -9,8 +9,8 @@ #include <string> #include "base/optional.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill_assistant { // Data shared between scripts and actions.
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc index e9f9d353..7f1c9c8 100644 --- a/components/autofill_assistant/browser/controller.cc +++ b/components/autofill_assistant/browser/controller.cc
@@ -741,8 +741,12 @@ auto chips = std::make_unique<std::vector<Chip>>(); chips->emplace_back(); - chips->back().text = - l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_PAYMENT_INFO_CONFIRM); + if (!payment_request_options_->confirm_button_text.empty()) { + chips->back().text = payment_request_options_->confirm_button_text; + } else { + chips->back().text = + l10n_util::GetStringUTF8(IDS_AUTOFILL_ASSISTANT_PAYMENT_INFO_CONFIRM); + } chips->back().type = HIGHLIGHTED_ACTION; chips->back().disabled = !continue_button_enabled; if (continue_button_enabled) {
diff --git a/components/autofill_assistant/browser/payment_request.cc b/components/autofill_assistant/browser/payment_request.cc index 8fb37f6..88ed062 100644 --- a/components/autofill_assistant/browser/payment_request.cc +++ b/components/autofill_assistant/browser/payment_request.cc
@@ -4,8 +4,8 @@ #include "components/autofill_assistant/browser/payment_request.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill_assistant {
diff --git a/components/autofill_assistant/browser/payment_request.h b/components/autofill_assistant/browser/payment_request.h index feed28a..8162c3d0 100644 --- a/components/autofill_assistant/browser/payment_request.h +++ b/components/autofill_assistant/browser/payment_request.h
@@ -54,6 +54,7 @@ bool request_payment_method = false; std::vector<std::string> supported_basic_card_networks; std::string default_email; + std::string confirm_button_text; base::OnceCallback<void(std::unique_ptr<PaymentInformation>)> callback; };
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc index 31340b7b..d3157b2 100644 --- a/components/autofill_assistant/browser/script_executor.cc +++ b/components/autofill_assistant/browser/script_executor.cc
@@ -14,7 +14,7 @@ #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill_assistant/browser/actions/action.h" #include "components/autofill_assistant/browser/batch_element_checker.h" #include "components/autofill_assistant/browser/client_memory.h"
diff --git a/components/autofill_assistant/browser/self_delete_full_card_requester.cc b/components/autofill_assistant/browser/self_delete_full_card_requester.cc index 05a6637..b21d90c 100644 --- a/components/autofill_assistant/browser/self_delete_full_card_requester.cc +++ b/components/autofill_assistant/browser/self_delete_full_card_requester.cc
@@ -9,8 +9,8 @@ #include "components/autofill/content/browser/content_autofill_driver.h" #include "components/autofill/content/browser/content_autofill_driver_factory.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/full_card_request.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto index d1df06f..aea67cca 100644 --- a/components/autofill_assistant/browser/service.proto +++ b/components/autofill_assistant/browser/service.proto
@@ -879,6 +879,8 @@ repeated string supported_basic_card_networks = 6; // Contact details that should be gathered. optional ContactDetailsProto contact_details = 5; + // Override for the text of the confirm button in the payment request. + optional string confirm_button_text = 7; } // Resets Autofill Assistant: clears any state and server payload.
diff --git a/components/autofill_assistant/browser/ui_controller.cc b/components/autofill_assistant/browser/ui_controller.cc index f47db221..3b63564c 100644 --- a/components/autofill_assistant/browser/ui_controller.cc +++ b/components/autofill_assistant/browser/ui_controller.cc
@@ -4,8 +4,8 @@ #include "components/autofill_assistant/browser/ui_controller.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace autofill_assistant {
diff --git a/components/autofill_assistant/browser/web_controller.cc b/components/autofill_assistant/browser/web_controller.cc index 632124a..f968eaae 100644 --- a/components/autofill_assistant/browser/web_controller.cc +++ b/components/autofill_assistant/browser/web_controller.cc
@@ -19,7 +19,7 @@ #include "build/build_config.h" #include "components/autofill/content/browser/content_autofill_driver.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/common/autofill_constants.h" #include "components/autofill/core/common/form_data.h" #include "components/autofill_assistant/browser/rectf.h"
diff --git a/components/browsing_data/core/counters/autofill_counter.cc b/components/browsing_data/core/counters/autofill_counter.cc index 87d7f268..f77ab50 100644 --- a/components/browsing_data/core/counters/autofill_counter.cc +++ b/components/browsing_data/core/counters/autofill_counter.cc
@@ -10,8 +10,8 @@ #include <vector> #include "base/bind.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" #include "components/browsing_data/core/pref_names.h" #include "components/sync/driver/sync_service.h"
diff --git a/components/password_manager/content/browser/content_password_manager_driver.cc b/components/password_manager/content/browser/content_password_manager_driver.cc index 05d65c2..c1bc8b1 100644 --- a/components/password_manager/content/browser/content_password_manager_driver.cc +++ b/components/password_manager/content/browser/content_password_manager_driver.cc
@@ -300,8 +300,7 @@ void ContentPasswordManagerDriver::FocusedInputChanged(bool is_fillable, bool is_password_field) { - client_->FocusedInputChanged(render_frame_host_->GetLastCommittedOrigin(), - is_fillable, is_password_field); + client_->FocusedInputChanged(this, is_fillable, is_password_field); } void ContentPasswordManagerDriver::LogFirstFillingResult(
diff --git a/components/password_manager/content/common/credential_manager_mojom_traits.cc b/components/password_manager/content/common/credential_manager_mojom_traits.cc index 97a463e8..09a87af00 100644 --- a/components/password_manager/content/common/credential_manager_mojom_traits.cc +++ b/components/password_manager/content/common/credential_manager_mojom_traits.cc
@@ -97,6 +97,7 @@ case blink::mojom::CredentialManagerError::NOT_FOCUSED: case blink::mojom::CredentialManagerError::RESIDENT_CREDENTIALS_UNSUPPORTED: case blink::mojom::CredentialManagerError::PROTECTION_POLICY_INCONSISTENT: + case blink::mojom::CredentialManagerError::ABORT: case blink::mojom::CredentialManagerError::UNKNOWN: *output = password_manager::CredentialManagerError::UNKNOWN; return true;
diff --git a/components/password_manager/core/browser/blacklisted_credentials_cleaner.cc b/components/password_manager/core/browser/blacklisted_credentials_cleaner.cc index ece8b21f..818c300 100644 --- a/components/password_manager/core/browser/blacklisted_credentials_cleaner.cc +++ b/components/password_manager/core/browser/blacklisted_credentials_cleaner.cc
@@ -54,7 +54,7 @@ PasswordStore::FormDigest(*result)); blacklisted.date_created = result->date_created; // In case |blacklisted| and |result| differ, update the store. - if (!ArePasswordFormUniqueKeyEqual(blacklisted, *result)) + if (!ArePasswordFormUniqueKeysEqual(blacklisted, *result)) store_->UpdateLoginWithPrimaryKey(blacklisted, *result); else if (blacklisted != *result) store_->UpdateLogin(blacklisted);
diff --git a/components/password_manager/core/browser/form_saver_impl.cc b/components/password_manager/core/browser/form_saver_impl.cc index ecfe1ed..a2cbc58d 100644 --- a/components/password_manager/core/browser/form_saver_impl.cc +++ b/components/password_manager/core/browser/form_saver_impl.cc
@@ -53,7 +53,7 @@ for (const auto* match : matches) { DCHECK(pending.preferred); if (match->IsFederatedCredential() || - ArePasswordFormUniqueKeyEqual(pending, *match)) + ArePasswordFormUniqueKeysEqual(pending, *match)) continue; // Delete obsolete empty username credentials. const bool same_password = match->password_value == pending.password_value;
diff --git a/components/password_manager/core/browser/new_password_form_manager_unittest.cc b/components/password_manager/core/browser/new_password_form_manager_unittest.cc index bf4ccff9..303e1c5 100644 --- a/components/password_manager/core/browser/new_password_form_manager_unittest.cc +++ b/components/password_manager/core/browser/new_password_form_manager_unittest.cc
@@ -61,7 +61,7 @@ const int kPasswordFieldIndex = 2; MATCHER_P(FormHasUniqueKey, key, "") { - return ArePasswordFormUniqueKeyEqual(arg, key); + return ArePasswordFormUniqueKeysEqual(arg, key); } class MockPasswordManagerDriver : public StubPasswordManagerDriver { @@ -946,7 +946,7 @@ form_manager_->Save(); - EXPECT_TRUE(ArePasswordFormUniqueKeyEqual(saved_match_, updated_form)); + EXPECT_TRUE(ArePasswordFormUniqueKeysEqual(saved_match_, updated_form)); EXPECT_TRUE(updated_form.preferred); EXPECT_EQ(new_password, updated_form.password_value); } @@ -986,7 +986,7 @@ form_manager_->Save(); - EXPECT_TRUE(ArePasswordFormUniqueKeyEqual(saved_match_, updated_form)); + EXPECT_TRUE(ArePasswordFormUniqueKeysEqual(saved_match_, updated_form)); EXPECT_TRUE(updated_form.preferred); EXPECT_EQ(new_password, updated_form.password_value); } @@ -1723,7 +1723,7 @@ form_manager_->Update(saved_match_); - EXPECT_TRUE(ArePasswordFormUniqueKeyEqual(saved_match_, updated_form)); + EXPECT_TRUE(ArePasswordFormUniqueKeysEqual(saved_match_, updated_form)); EXPECT_TRUE(updated_form.preferred); EXPECT_EQ(new_password, updated_form.password_value); } @@ -1928,7 +1928,7 @@ form_manager_->Save(); EXPECT_TRUE( - ArePasswordFormUniqueKeyEqual(saved_http_auth_form, updated_form)); + ArePasswordFormUniqueKeysEqual(saved_http_auth_form, updated_form)); EXPECT_EQ(new_password, updated_form.password_value); }
diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc index 17604522..6985048 100644 --- a/components/password_manager/core/browser/password_form_manager.cc +++ b/components/password_manager/core/browser/password_form_manager.cc
@@ -1049,8 +1049,8 @@ if (!pending_credentials_.IsFederatedCredential()) { auto updated_password_it = best_matches_.find(pending_credentials_.username_value); - DCHECK(best_matches_.end() != updated_password_it); - old_password = updated_password_it->second->password_value; + if (updated_password_it != best_matches_.end()) + old_password = updated_password_it->second->password_value; } form_saver_->Update(pending_credentials_, matches, old_password);
diff --git a/components/password_manager/core/browser/password_generation_state_unittest.cc b/components/password_manager/core/browser/password_generation_state_unittest.cc index 685bbfe9..42e69e32 100644 --- a/components/password_manager/core/browser/password_generation_state_unittest.cc +++ b/components/password_manager/core/browser/password_generation_state_unittest.cc
@@ -62,7 +62,7 @@ } MATCHER_P(FormHasUniqueKey, key, "") { - return ArePasswordFormUniqueKeyEqual(arg, key); + return ArePasswordFormUniqueKeysEqual(arg, key); } class PasswordGenerationStateTest : public testing::Test {
diff --git a/components/password_manager/core/browser/password_manager_client.cc b/components/password_manager/core/browser/password_manager_client.cc index 9148b1c..d1160411 100644 --- a/components/password_manager/core/browser/password_manager_client.cc +++ b/components/password_manager/core/browser/password_manager_client.cc
@@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/macros.h" #include "components/password_manager/core/browser/password_manager_client.h" namespace password_manager {
diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h index 791d341f..45f6c831 100644 --- a/components/password_manager/core/browser/password_manager_client.h +++ b/components/password_manager/core/browser/password_manager_client.h
@@ -42,6 +42,7 @@ class LogManager; class PasswordFormManagerForUI; class PasswordManager; +class PasswordManagerDriver; class PasswordManagerMetricsRecorder; class PasswordRequirementsService; class PasswordStore; @@ -126,9 +127,10 @@ // Informs the embedder that the focus changed to a different input in the // same frame (e.g. tabbed from email to password field). - virtual void FocusedInputChanged(const url::Origin& last_committed_origin, - bool is_fillable, - bool is_password_field) = 0; + virtual void FocusedInputChanged( + password_manager::PasswordManagerDriver* driver, + bool is_fillable, + bool is_password_field) = 0; // Informs the embedder of a password forms that the user should choose from. // Returns true if the prompt is indeed displayed. If the prompt is not
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc index 34deb4b..ca062fa9 100644 --- a/components/password_manager/core/browser/password_manager_unittest.cc +++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -67,7 +67,7 @@ } MATCHER_P(FormHasUniqueKey, key, "") { - return ArePasswordFormUniqueKeyEqual(arg, key); + return ArePasswordFormUniqueKeysEqual(arg, key); } MATCHER_P(FormIgnoreDate, expected, "") {
diff --git a/components/password_manager/core/browser/password_manager_util.cc b/components/password_manager/core/browser/password_manager_util.cc index 82907a0c..3076281e 100644 --- a/components/password_manager/core/browser/password_manager_util.cc +++ b/components/password_manager/core/browser/password_manager_util.cc
@@ -95,7 +95,7 @@ tag_groups->front().push_back(unique_forms.front().get()); } for (auto it = forms->begin() + 1; it != forms->end(); ++it) { - if (ArePasswordFormUniqueKeyEqual(**it, *unique_forms.back())) { + if (ArePasswordFormUniqueKeysEqual(**it, *unique_forms.back())) { if (tag_groups) tag_groups->back().push_back(it->get()); duplicates->push_back(std::move(*it)); @@ -132,6 +132,11 @@ bool ManualPasswordGenerationEnabled( password_manager::PasswordManagerDriver* driver) { +#if defined(OS_ANDROID) + if (!base::FeatureList::IsEnabled( + password_manager::features::kManualPasswordGenerationAndroid)) + return false; +#endif // defined(OS_ANDROID) password_manager::PasswordGenerationFrameHelper* password_generation_manager = driver ? driver->GetPasswordGenerationHelper() : nullptr; if (!password_generation_manager ||
diff --git a/components/password_manager/core/browser/password_store.cc b/components/password_manager/core/browser/password_store.cc index 7f4e0a8..2ef4bdc 100644 --- a/components/password_manager/core/browser/password_store.cc +++ b/components/password_manager/core/browser/password_store.cc
@@ -875,7 +875,7 @@ std::vector<std::unique_ptr<PasswordForm>> candidates( FillMatchingLogins(FormDigest(primary_key))); for (auto& candidate : candidates) { - if (ArePasswordFormUniqueKeyEqual(*candidate, primary_key) && + if (ArePasswordFormUniqueKeysEqual(*candidate, primary_key) && !candidate->is_public_suffix_match) { return std::move(candidate); }
diff --git a/components/password_manager/core/browser/stub_password_manager_client.cc b/components/password_manager/core/browser/stub_password_manager_client.cc index 1c278108..00d25a6 100644 --- a/components/password_manager/core/browser/stub_password_manager_client.cc +++ b/components/password_manager/core/browser/stub_password_manager_client.cc
@@ -30,7 +30,7 @@ void StubPasswordManagerClient::HideManualFallbackForSaving() {} void StubPasswordManagerClient::FocusedInputChanged( - const url::Origin& last_committed_origin, + password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) {}
diff --git a/components/password_manager/core/browser/stub_password_manager_client.h b/components/password_manager/core/browser/stub_password_manager_client.h index 01a31817..4bd5c19 100644 --- a/components/password_manager/core/browser/stub_password_manager_client.h +++ b/components/password_manager/core/browser/stub_password_manager_client.h
@@ -32,7 +32,7 @@ bool has_generated_password, bool update_password) override; void HideManualFallbackForSaving() override; - void FocusedInputChanged(const url::Origin& last_committed_origin, + void FocusedInputChanged(password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) override; bool PromptUserToChooseCredentials(
diff --git a/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc b/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc index 407cefe3..4866f06 100644 --- a/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc +++ b/components/password_manager/core/browser/sync/password_sync_bridge_unittest.cc
@@ -150,7 +150,7 @@ private: int GetPrimaryKey(const autofill::PasswordForm& form) const { for (const auto& pair : data_) { - if (ArePasswordFormUniqueKeyEqual(*pair.second, form)) { + if (ArePasswordFormUniqueKeysEqual(*pair.second, form)) { return pair.first; } }
diff --git a/components/password_manager/core/browser/test_password_store.cc b/components/password_manager/core/browser/test_password_store.cc index b73ec985..ef9385d 100644 --- a/components/password_manager/core/browser/test_password_store.cc +++ b/components/password_manager/core/browser/test_password_store.cc
@@ -54,7 +54,7 @@ auto iter = std::find_if( passwords_for_signon_realm.begin(), passwords_for_signon_realm.end(), [&form](const auto& password) { - return ArePasswordFormUniqueKeyEqual(form, password); + return ArePasswordFormUniqueKeysEqual(form, password); }); if (iter != passwords_for_signon_realm.end()) { @@ -75,7 +75,7 @@ std::vector<autofill::PasswordForm>& forms = stored_passwords_[form.signon_realm]; for (auto it = forms.begin(); it != forms.end(); ++it) { - if (ArePasswordFormUniqueKeyEqual(form, *it)) { + if (ArePasswordFormUniqueKeysEqual(form, *it)) { *it = form; changes.push_back(PasswordStoreChange(PasswordStoreChange::UPDATE, form)); } @@ -90,7 +90,7 @@ stored_passwords_[form.signon_realm]; auto it = forms.begin(); while (it != forms.end()) { - if (ArePasswordFormUniqueKeyEqual(form, *it)) { + if (ArePasswordFormUniqueKeysEqual(form, *it)) { it = forms.erase(it); changes.push_back(PasswordStoreChange(PasswordStoreChange::REMOVE, form)); } else {
diff --git a/components/payments/content/BUILD.gn b/components/payments/content/BUILD.gn index 51555e0..e39a8b1e 100644 --- a/components/payments/content/BUILD.gn +++ b/components/payments/content/BUILD.gn
@@ -11,6 +11,8 @@ "content_payment_request_delegate.h", "initialization_task.cc", "initialization_task.h", + "payment_handler_host.cc", + "payment_handler_host.h", "payment_request.cc", "payment_request.h", "payment_request_converter.cc",
diff --git a/components/payments/content/payment_handler_host.cc b/components/payments/content/payment_handler_host.cc new file mode 100644 index 0000000..3c82c815 --- /dev/null +++ b/components/payments/content/payment_handler_host.cc
@@ -0,0 +1,128 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/payments/content/payment_handler_host.h" + +#include <utility> + +#include "base/callback.h" +#include "components/payments/core/error_strings.h" +#include "content/public/browser/browser_thread.h" + +namespace payments { +namespace { + +mojom::PaymentMethodChangeResponsePtr ConvertToPaymentMethodChangeResponse( + const mojom::PaymentDetailsPtr& details, + const PaymentHandlerHost::MethodChecker& method_checker) { + mojom::PaymentMethodChangeResponsePtr response = + mojom::PaymentMethodChangeResponse::New(); + response->error = details->error; + response->stringified_payment_method_errors = + details->stringified_payment_method_errors; + + if (details->total) + response->total = details->total->amount.Clone(); + + if (!details->modifiers) + return response; + + response->modifiers = std::vector<mojom::PaymentHandlerModifierPtr>(); + + for (const auto& merchant : *details->modifiers) { + if (!method_checker.Run(merchant->method_data->supported_method)) { + continue; + } + + mojom::PaymentHandlerModifierPtr mod = mojom::PaymentHandlerModifier::New(); + mod->method_data = mojom::PaymentHandlerMethodData::New(); + mod->method_data->method_name = merchant->method_data->supported_method; + mod->method_data->stringified_data = + merchant->method_data->stringified_data; + + if (merchant->total) + mod->total = merchant->total->amount.Clone(); + + response->modifiers->emplace_back(std::move(mod)); + } + + return response; +} + +} // namespace + +PaymentHandlerHost::PaymentHandlerHost(Delegate* delegate) + : binding_(this), delegate_(delegate), weak_ptr_factory_(this) { + DCHECK(delegate_); +} + +PaymentHandlerHost::~PaymentHandlerHost() {} + +void PaymentHandlerHost::UpdateWith(const mojom::PaymentDetailsPtr& details, + const MethodChecker& method_checker) { + if (!change_payment_method_callback_) + return; + + std::move(change_payment_method_callback_) + .Run(ConvertToPaymentMethodChangeResponse(details, method_checker)); +} + +void PaymentHandlerHost::NoUpdatedPaymentDetails() { + if (!change_payment_method_callback_) + return; + + std::move(change_payment_method_callback_) + .Run(mojom::PaymentMethodChangeResponse::New()); +} + +void PaymentHandlerHost::Disconnect() { + binding_.Close(); +} + +void PaymentHandlerHost::ChangePaymentMethod( + mojom::PaymentHandlerMethodDataPtr method_data, + mojom::PaymentHandlerHost::ChangePaymentMethodCallback callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + if (!method_data) { + mojom::PaymentMethodChangeResponsePtr response = + mojom::PaymentMethodChangeResponse::New(); + response->error = errors::kMethodDataRequired; + std::move(callback).Run(std::move(response)); + return; + } + + if (method_data->method_name.empty()) { + mojom::PaymentMethodChangeResponsePtr response = + mojom::PaymentMethodChangeResponse::New(); + response->error = errors::kMethodNameRequired; + std::move(callback).Run(std::move(response)); + return; + } + + if (!delegate_->ChangePaymentMethod(method_data->method_name, + method_data->stringified_data)) { + mojom::PaymentMethodChangeResponsePtr response = + mojom::PaymentMethodChangeResponse::New(); + response->error = errors::kInvalidState; + std::move(callback).Run(std::move(response)); + return; + } + + change_payment_method_callback_ = std::move(callback); +} + +mojom::PaymentHandlerHostPtrInfo PaymentHandlerHost::Bind() { + mojom::PaymentHandlerHostPtrInfo host_ptr_info; + binding_.Close(); + binding_.Bind(mojo::MakeRequest(&host_ptr_info)); + + // Connection error handler can be set only after the Bind() call. + binding_.set_connection_error_handler(base::BindOnce( + &PaymentHandlerHost::Disconnect, weak_ptr_factory_.GetWeakPtr())); + + return host_ptr_info; +} + +} // namespace payments
diff --git a/components/payments/content/payment_handler_host.h b/components/payments/content/payment_handler_host.h new file mode 100644 index 0000000..3ab02a8 --- /dev/null +++ b/components/payments/content/payment_handler_host.h
@@ -0,0 +1,81 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PAYMENTS_CONTENT_PAYMENT_HANDLER_HOST_H_ +#define COMPONENTS_PAYMENTS_CONTENT_PAYMENT_HANDLER_HOST_H_ + +#include <string> + +#include "base/callback_forward.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "mojo/public/cpp/bindings/binding.h" +#include "third_party/blink/public/mojom/payments/payment_handler_host.mojom.h" +#include "third_party/blink/public/mojom/payments/payment_request.mojom.h" + +namespace payments { + +// Handles the communication from the payment handler renderer process to the +// merchant renderer process. +class PaymentHandlerHost : public mojom::PaymentHandlerHost { + public: + // The interfce to be implemented by the object that can communicate to the + // merchant's renderer process. + class Delegate { + public: + // Notifies the merchant that the payment method has changed. Returns + // "false" if the state is invalid. + virtual bool ChangePaymentMethod(const std::string& method_name, + const std::string& stringified_data) = 0; + }; + + using MethodChecker = base::RepeatingCallback<bool(const std::string&)>; + + // The |delegate| cannot be null and must outlive this object. Typically this + // is accomplished by the |delegate| owning this object. + explicit PaymentHandlerHost(Delegate* delegate); + ~PaymentHandlerHost() override; + + // Binds the payment handler host Mojo IPC connection to an endpoint and + // returns it. + mojom::PaymentHandlerHostPtrInfo Bind(); + + // Notifies the payment handler of the updated details, such as updated total, + // in response to the change of the payment method. + void UpdateWith(const mojom::PaymentDetailsPtr& details, + const MethodChecker& method_checker); + + // Notifies the payment handler that the merchant did not handle the payment + // method change event, so the payment details are unchanged. + void NoUpdatedPaymentDetails(); + + // Disconnects from the payment handler host. + void Disconnect(); + + private: + // mojom::PaymentHandlerHost + void ChangePaymentMethod( + mojom::PaymentHandlerMethodDataPtr method_data, + mojom::PaymentHandlerHost::ChangePaymentMethodCallback callback) override; + + // The end-point for the payment handler renderer process to call into the + // browser process. + mojo::Binding<mojom::PaymentHandlerHost> binding_; + + // Payment handler's callback to invoke after merchant responds to the + // "payment method change" event. + mojom::PaymentHandlerHost::ChangePaymentMethodCallback + change_payment_method_callback_; + + // Not null and outlives this object. Owns this object. + Delegate* delegate_; + + base::WeakPtrFactory<PaymentHandlerHost> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(PaymentHandlerHost); +}; + +} // namespace payments + +#endif // COMPONENTS_PAYMENTS_CONTENT_PAYMENT_HANDLER_HOST_H_
diff --git a/components/payments/content/payment_request.cc b/components/payments/content/payment_request.cc index a1129cd..53686063 100644 --- a/components/payments/content/payment_request.cc +++ b/components/payments/content/payment_request.cc
@@ -44,44 +44,6 @@ method_name == kAndroidPayMethodName; } -mojom::PaymentMethodChangeResponsePtr ConvertToPaymentMethodChangeResponse( - const mojom::PaymentDetailsPtr& details, - const PaymentInstrument& invoked_app) { - mojom::PaymentMethodChangeResponsePtr response = - mojom::PaymentMethodChangeResponse::New(); - response->error = details->error; - response->stringified_payment_method_errors = - details->stringified_payment_method_errors; - - if (details->total) - response->total = details->total->amount.Clone(); - - if (!details->modifiers) - return response; - - response->modifiers = std::vector<mojom::PaymentHandlerModifierPtr>(); - - for (const auto& merchant : *details->modifiers) { - if (!invoked_app.IsValidForPaymentMethodIdentifier( - merchant->method_data->supported_method)) { - continue; - } - - mojom::PaymentHandlerModifierPtr mod = mojom::PaymentHandlerModifier::New(); - mod->method_data = mojom::PaymentHandlerMethodData::New(); - mod->method_data->method_name = merchant->method_data->supported_method; - mod->method_data->stringified_data = - merchant->method_data->stringified_data; - - if (merchant->total) - mod->total = merchant->total->amount.Clone(); - - response->modifiers->emplace_back(std::move(mod)); - } - - return response; -} - } // namespace PaymentRequest::PaymentRequest( @@ -99,7 +61,7 @@ display_manager_(display_manager), display_handle_(nullptr), binding_(this, std::move(request)), - payment_handler_host_binding_(this), + payment_handler_host_(this), top_level_origin_(url_formatter::FormatUrlForSecurityDisplay( web_contents_->GetLastCommittedURL())), frame_origin_(url_formatter::FormatUrlForSecurityDisplay( @@ -317,11 +279,11 @@ return; } - if (change_payment_method_callback_) { - DCHECK(state()->selected_instrument()); - std::move(change_payment_method_callback_) - .Run(ConvertToPaymentMethodChangeResponse( - details, *state()->selected_instrument())); + if (state()->selected_instrument() && state()->IsPaymentAppInvoked()) { + payment_handler_host_.UpdateWith( + details, base::BindRepeating( + &PaymentInstrument::IsValidForPaymentMethodIdentifier, + base::Unretained(state()->selected_instrument()))); } bool is_resolving_promise_passed_into_show_method = !spec_->IsInitialized(); @@ -356,10 +318,8 @@ spec_->RecomputeSpecForDetails(); - if (change_payment_method_callback_) { - std::move(change_payment_method_callback_) - .Run(mojom::PaymentMethodChangeResponse::New()); - } + if (state()->IsPaymentAppInvoked()) + payment_handler_host_.NoUpdatedPaymentDetails(); } void PaymentRequest::Abort() { @@ -470,37 +430,16 @@ } } -void PaymentRequest::ChangePaymentMethod( - mojom::PaymentHandlerMethodDataPtr method_data, - mojom::PaymentHandlerHost::ChangePaymentMethodCallback callback) { +bool PaymentRequest::ChangePaymentMethod(const std::string& method_name, + const std::string& stringified_data) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - if (!state_ || !state_->IsPaymentAppInvoked() || !client_) { - mojom::PaymentMethodChangeResponsePtr response = - mojom::PaymentMethodChangeResponse::New(); - response->error = errors::kInvalidState; - std::move(callback).Run(std::move(response)); - return; - } + DCHECK(!method_name.empty()); - if (!method_data) { - mojom::PaymentMethodChangeResponsePtr response = - mojom::PaymentMethodChangeResponse::New(); - response->error = errors::kMethodDataRequired; - std::move(callback).Run(std::move(response)); - return; - } + if (!state_ || !state_->IsPaymentAppInvoked() || !client_) + return false; - if (method_data->method_name.empty()) { - mojom::PaymentMethodChangeResponsePtr response = - mojom::PaymentMethodChangeResponse::New(); - response->error = errors::kMethodNameRequired; - std::move(callback).Run(std::move(response)); - return; - } - - change_payment_method_callback_ = std::move(callback); - client_->OnPaymentMethodChange(method_data->method_name, - method_data->stringified_data); + client_->OnPaymentMethodChange(method_name, stringified_data); + return true; } void PaymentRequest::AreRequestedMethodsSupportedCallback( @@ -626,7 +565,7 @@ // We close all bindings and ask to be destroyed. client_.reset(); binding_.Close(); - payment_handler_host_binding_.Close(); + payment_handler_host_.Disconnect(); if (observer_for_testing_) observer_for_testing_->OnConnectionTerminated(); manager_->DestroyRequest(this); @@ -647,7 +586,7 @@ // the binding and the dialog, and ask to be deleted. client_.reset(); binding_.Close(); - payment_handler_host_binding_.Close(); + payment_handler_host_.Disconnect(); delegate_->CloseDialog(); if (observer_for_testing_) observer_for_testing_->OnConnectionTerminated(); @@ -661,7 +600,8 @@ DCHECK(state_->selected_instrument()); if (state_->selected_instrument()->type() == PaymentInstrument::Type::SERVICE_WORKER_APP) { - BindPaymentHandlerHost(); + static_cast<ServiceWorkerPaymentInstrument*>(state_->selected_instrument()) + ->set_payment_handler_host(payment_handler_host_.Bind()); } state_->GeneratePaymentResponse(); } @@ -678,24 +618,6 @@ return delegate_->IsIncognito(); } -void PaymentRequest::BindPaymentHandlerHost() { - mojom::PaymentHandlerHostPtrInfo payment_handler_host; - payment_handler_host_binding_.Close(); - payment_handler_host_binding_.Bind(mojo::MakeRequest(&payment_handler_host)); - - // Connection error handler can be set only after the Bind() call. - payment_handler_host_binding_.set_connection_error_handler( - base::BindOnce(&PaymentRequest::OnPaymentHandlerConnectionTerminated, - weak_ptr_factory_.GetWeakPtr())); - - static_cast<ServiceWorkerPaymentInstrument*>(state()->selected_instrument()) - ->set_payment_handler_host(std::move(payment_handler_host)); -} - -void PaymentRequest::OnPaymentHandlerConnectionTerminated() { - payment_handler_host_binding_.Close(); -} - void PaymentRequest::RecordFirstAbortReason( JourneyLogger::AbortReason abort_reason) { if (!has_recorded_completion_) {
diff --git a/components/payments/content/payment_request.h b/components/payments/content/payment_request.h index 381b8b22..03eb010 100644 --- a/components/payments/content/payment_request.h +++ b/components/payments/content/payment_request.h
@@ -11,13 +11,13 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "components/payments/content/developer_console_logger.h" +#include "components/payments/content/payment_handler_host.h" #include "components/payments/content/payment_request_display_manager.h" #include "components/payments/content/payment_request_spec.h" #include "components/payments/content/payment_request_state.h" #include "components/payments/core/journey_logger.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/interface_request.h" -#include "third_party/blink/public/mojom/payments/payment_handler_host.mojom.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h" #include "url/gurl.h" @@ -38,7 +38,7 @@ // PaymentRequestSpec, and the current user selection state (and related data) // is stored in PaymentRequestSpec. class PaymentRequest : public mojom::PaymentRequest, - public mojom::PaymentHandlerHost, + public PaymentHandlerHost::Delegate, public PaymentRequestSpec::Observer, public PaymentRequestState::Delegate { public: @@ -79,10 +79,9 @@ void CanMakePayment(bool legacy_mode) override; void HasEnrolledInstrument(bool per_method_quota) override; - // mojom::PaymentHandlerHost - void ChangePaymentMethod( - mojom::PaymentHandlerMethodDataPtr method_data, - mojom::PaymentHandlerHost::ChangePaymentMethodCallback callback) override; + // PaymentHandlerHost::Delegate + bool ChangePaymentMethod(const std::string& method_name, + const std::string& stringified_data) override; // PaymentRequestSpec::Observer: void OnSpecUpdated() override {} @@ -136,13 +135,6 @@ } private: - // Binds itself as the payment handler host for the selected service worker - // payment instrument. - void BindPaymentHandlerHost(); - - // Called when the mojo pipe to the payment handler closed. - void OnPaymentHandlerConnectionTerminated(); - // Returns true after init() has been called and the mojo connection has been // established. If the mojo connection gets later disconnected, this will // returns false. @@ -198,12 +190,7 @@ // The end-point for the payment handler renderer process to call into the // browser process. - mojo::Binding<mojom::PaymentHandlerHost> payment_handler_host_binding_; - - // Payment handler's callback to invoke after merchant responds to the - // "payment method change" event. - mojom::PaymentHandlerHost::ChangePaymentMethodCallback - change_payment_method_callback_; + PaymentHandlerHost payment_handler_host_; // The RFC 6454 origin of the top level frame that has invoked PaymentRequest // API. This is what the user sees in the address bar.
diff --git a/components/payments/content/payment_request_converter.h b/components/payments/content/payment_request_converter.h index 1e6472c..3ad65c9 100644 --- a/components/payments/content/payment_request_converter.h +++ b/components/payments/content/payment_request_converter.h
@@ -5,7 +5,7 @@ #ifndef COMPONENTS_PAYMENTS_CONTENT_PAYMENT_REQUEST_CONVERTER_H_ #define COMPONENTS_PAYMENTS_CONTENT_PAYMENT_REQUEST_CONVERTER_H_ -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h" // TODO(crbug.com/760945): Write unit tests for these functions.
diff --git a/components/payments/content/payment_request_spec.h b/components/payments/content/payment_request_spec.h index a81d0ce..693de31e 100644 --- a/components/payments/content/payment_request_spec.h +++ b/components/payments/content/payment_request_spec.h
@@ -13,7 +13,7 @@ #include "base/macros.h" #include "base/observer_list.h" #include "base/strings/string16.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/payments/content/initialization_task.h" #include "components/payments/core/currency_formatter.h"
diff --git a/components/payments/content/payment_request_state.cc b/components/payments/content/payment_request_state.cc index 0f5d84ac..c383757 100644 --- a/components/payments/content/payment_request_state.cc +++ b/components/payments/content/payment_request_state.cc
@@ -13,8 +13,8 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/payments/content/content_payment_request_delegate.h" #include "components/payments/content/payment_manifest_web_data_service.h"
diff --git a/components/payments/content/payment_request_state_unittest.cc b/components/payments/content/payment_request_state_unittest.cc index fb02a9e..0480f440 100644 --- a/components/payments/content/payment_request_state_unittest.cc +++ b/components/payments/content/payment_request_state_unittest.cc
@@ -11,9 +11,9 @@ #include "base/memory/weak_ptr.h" #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/payments/content/payment_request_spec.h" #include "components/payments/content/test_content_payment_request_delegate.h"
diff --git a/components/payments/content/payment_response_helper.h b/components/payments/content/payment_response_helper.h index 4ca2c12..f0046f1 100644 --- a/components/payments/content/payment_response_helper.h +++ b/components/payments/content/payment_response_helper.h
@@ -8,7 +8,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "components/autofill/core/browser/address_normalizer.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/payment_instrument.h" #include "third_party/blink/public/mojom/payments/payment_request.mojom.h"
diff --git a/components/payments/content/payment_response_helper_unittest.cc b/components/payments/content/payment_response_helper_unittest.cc index c28795f9..7a462a7 100644 --- a/components/payments/content/payment_response_helper_unittest.cc +++ b/components/payments/content/payment_response_helper_unittest.cc
@@ -11,9 +11,9 @@ #include "base/memory/weak_ptr.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/payments/content/payment_request_spec.h" #include "components/payments/core/autofill_payment_instrument.h"
diff --git a/components/payments/core/autofill_payment_instrument.h b/components/payments/core/autofill_payment_instrument.h index c2dbd1a..b73b560 100644 --- a/components/payments/core/autofill_payment_instrument.h +++ b/components/payments/core/autofill_payment_instrument.h
@@ -13,8 +13,8 @@ #include "base/strings/string16.h" #include "build/build_config.h" #include "components/autofill/core/browser/address_normalizer.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/full_card_request.h" #include "components/payments/core/payment_instrument.h"
diff --git a/components/payments/core/autofill_payment_instrument_unittest.cc b/components/payments/core/autofill_payment_instrument_unittest.cc index aff26be..44611c9 100644 --- a/components/payments/core/autofill_payment_instrument_unittest.cc +++ b/components/payments/core/autofill_payment_instrument_unittest.cc
@@ -10,9 +10,9 @@ #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/address_normalizer.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/full_card_request.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/components/payments/core/payment_instrument.h b/components/payments/core/payment_instrument.h index 497479277..7be1dd2 100644 --- a/components/payments/core/payment_instrument.h +++ b/components/payments/core/payment_instrument.h
@@ -12,7 +12,7 @@ #include "base/macros.h" #include "base/strings/string16.h" #include "build/build_config.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "ui/gfx/image/image_skia.h" namespace payments {
diff --git a/components/payments/core/payment_method_data.h b/components/payments/core/payment_method_data.h index 1e32ec2..e73b7712 100644 --- a/components/payments/core/payment_method_data.h +++ b/components/payments/core/payment_method_data.h
@@ -10,7 +10,7 @@ #include <string> #include <vector> -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" namespace base { class DictionaryValue;
diff --git a/components/payments/core/payment_request_data_util.cc b/components/payments/core/payment_request_data_util.cc index 21006b10..c99294f 100644 --- a/components/payments/core/payment_request_data_util.cc +++ b/components/payments/core/payment_request_data_util.cc
@@ -12,7 +12,7 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/validation.h"
diff --git a/components/payments/core/payment_request_data_util.h b/components/payments/core/payment_request_data_util.h index f5d8eed..ae29624 100644 --- a/components/payments/core/payment_request_data_util.h +++ b/components/payments/core/payment_request_data_util.h
@@ -10,7 +10,7 @@ #include <vector> #include "base/strings/string16.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/mojom/payment_request_data.mojom.h" #include "url/gurl.h"
diff --git a/components/payments/core/payment_request_data_util_unittest.cc b/components/payments/core/payment_request_data_util_unittest.cc index 9186ad1..73c72478 100644 --- a/components/payments/core/payment_request_data_util_unittest.cc +++ b/components/payments/core/payment_request_data_util_unittest.cc
@@ -10,9 +10,9 @@ #include "base/macros.h" #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/basic_card_response.h" #include "components/payments/core/payment_address.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/payments/core/payments_profile_comparator.cc b/components/payments/core/payments_profile_comparator.cc index dda44679..c4653fb 100644 --- a/components/payments/core/payments_profile_comparator.cc +++ b/components/payments/core/payments_profile_comparator.cc
@@ -11,7 +11,7 @@ #include "components/autofill/core/browser/address_i18n.h" #include "components/autofill/core/browser/autofill_country.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/validation.h" #include "components/payments/core/payment_options_provider.h"
diff --git a/components/payments/core/payments_profile_comparator.h b/components/payments/core/payments_profile_comparator.h index f7b7ea98..3efea9c 100644 --- a/components/payments/core/payments_profile_comparator.h +++ b/components/payments/core/payments_profile_comparator.h
@@ -9,7 +9,7 @@ #include <string> #include <vector> -#include "components/autofill/core/browser/autofill_profile_comparator.h" +#include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" // Utility functions used for processing and filtering address profiles // (AutofillProfile).
diff --git a/components/payments/core/payments_profile_comparator_unittest.cc b/components/payments/core/payments_profile_comparator_unittest.cc index b686ba06..1321dd7 100644 --- a/components/payments/core/payments_profile_comparator_unittest.cc +++ b/components/payments/core/payments_profile_comparator_unittest.cc
@@ -9,8 +9,8 @@ #include "base/guid.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/payment_options_provider.h" #include "components/strings/grit/components_strings.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/components/payments/core/strings_util.cc b/components/payments/core/strings_util.cc index 977f8ad..dab1947 100644 --- a/components/payments/core/strings_util.cc +++ b/components/payments/core/strings_util.cc
@@ -8,7 +8,7 @@ #include "base/logging.h" #include "base/stl_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h"
diff --git a/components/payments/core/strings_util.h b/components/payments/core/strings_util.h index 0f3dcbbf..efdf5c3 100644 --- a/components/payments/core/strings_util.h +++ b/components/payments/core/strings_util.h
@@ -10,7 +10,7 @@ #include "base/strings/string16.h" #include "build/build_config.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/payment_options_provider.h" namespace autofill {
diff --git a/components/prefs/BUILD.gn b/components/prefs/BUILD.gn index 99141db2..1954a7f 100644 --- a/components/prefs/BUILD.gn +++ b/components/prefs/BUILD.gn
@@ -52,6 +52,7 @@ deps = [ "//base", + "//base/util/values:values_util", ] }
diff --git a/components/prefs/pref_service.cc b/components/prefs/pref_service.cc index fe63fa5..1ef51ec 100644 --- a/components/prefs/pref_service.cc +++ b/components/prefs/pref_service.cc
@@ -21,6 +21,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/threading/thread_task_runner_handle.h" +#include "base/util/values/values_util.h" #include "base/value_conversions.h" #include "build/build_config.h" #include "components/prefs/default_pref_store.h" @@ -491,22 +492,14 @@ void PrefService::SetInt64(const std::string& path, int64_t value) { SetUserPrefValue(path, - std::make_unique<base::Value>(base::NumberToString(value))); + base::Value::ToUniquePtrValue(util::Int64ToValue(value))); } int64_t PrefService::GetInt64(const std::string& path) const { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - const base::Value* value = GetPreferenceValueChecked(path); - if (!value) - return 0; - std::string result("0"); - bool rv = value->GetAsString(&result); - DCHECK(rv); - - int64_t val; - base::StringToInt64(result, &val); - return val; + base::Optional<int64_t> integer = util::ValueToInt64(value); + DCHECK(integer); + return integer.value_or(0); } void PrefService::SetUint64(const std::string& path, uint64_t value) { @@ -530,20 +523,27 @@ } void PrefService::SetTime(const std::string& path, base::Time value) { - SetInt64(path, value.ToDeltaSinceWindowsEpoch().InMicroseconds()); + SetUserPrefValue(path, + base::Value::ToUniquePtrValue(util::TimeToValue(value))); } base::Time PrefService::GetTime(const std::string& path) const { - return base::Time::FromDeltaSinceWindowsEpoch( - base::TimeDelta::FromMicroseconds(GetInt64(path))); + const base::Value* value = GetPreferenceValueChecked(path); + base::Optional<base::Time> time = util::ValueToTime(value); + DCHECK(time); + return time.value_or(base::Time()); } void PrefService::SetTimeDelta(const std::string& path, base::TimeDelta value) { - SetInt64(path, value.InMicroseconds()); + SetUserPrefValue( + path, base::Value::ToUniquePtrValue(util::TimeDeltaToValue(value))); } base::TimeDelta PrefService::GetTimeDelta(const std::string& path) const { - return base::TimeDelta::FromMicroseconds(GetInt64(path)); + const base::Value* value = GetPreferenceValueChecked(path); + base::Optional<base::TimeDelta> time_delta = util::ValueToTimeDelta(value); + DCHECK(time_delta); + return time_delta.value_or(base::TimeDelta()); } base::Value* PrefService::GetMutableUserPref(const std::string& path,
diff --git a/components/sessions/content/content_record_task_id_unittest.cc b/components/sessions/content/content_record_task_id_unittest.cc index e8022815..2e6b26b 100644 --- a/components/sessions/content/content_record_task_id_unittest.cc +++ b/components/sessions/content/content_record_task_id_unittest.cc
@@ -45,17 +45,15 @@ test_data::kChildrenTaskIds, ContextRecordTaskId::Get(navigation_entry_.get())->children_task_ids()); - ContextRecordTaskId* cloned_context_record_task_id = - static_cast<ContextRecordTaskId*>( - context_record_task_id->Clone().release()); + ContextRecordTaskId cloned_context_record_task_id(*context_record_task_id); - EXPECT_EQ(test_data::kTaskId, cloned_context_record_task_id->task_id()); + EXPECT_EQ(test_data::kTaskId, cloned_context_record_task_id.task_id()); EXPECT_EQ(test_data::kParentTaskId, - cloned_context_record_task_id->parent_task_id()); + cloned_context_record_task_id.parent_task_id()); EXPECT_EQ(test_data::kRootTaskId, - cloned_context_record_task_id->root_task_id()); + cloned_context_record_task_id.root_task_id()); EXPECT_EQ(test_data::kChildrenTaskIds, - cloned_context_record_task_id->children_task_ids()); + cloned_context_record_task_id.children_task_ids()); } } // namespace sessions
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc index 2755afa2..a500cd6 100644 --- a/components/sync/driver/profile_sync_service.cc +++ b/components/sync/driver/profile_sync_service.cc
@@ -484,25 +484,17 @@ } params.sync_manager_factory = std::make_unique<SyncManagerFactory>(network_connection_tracker_); - params.birthday = sync_prefs_.GetBirthday(); - params.cache_guid = sync_prefs_.GetCacheGuid(); - // If either the cache GUID or the birthday are unitialized, it means we - // haven't completed a first sync cycle. We regenerate the cache GUID either - // way, even if just the birthday is missing, because fetching updates - // requires that the request either has a birthday, or there should be no - // progress marker. - // TODO(crbug.com/923285): This looks questionable here for - // |!IsFirstSetupComplete()| but it mimics the old behavior of deleting the - // directory via Directory::DeleteDirectoryFiles(). One consecuence is that, - // for sync the transport users (without sync-the-feature enabled), the cache - // GUID and other fields are reset on every restart. - if (params.cache_guid.empty() || params.birthday.empty() || - !user_settings_->IsFirstSetupComplete()) { + // The first time we start up the engine we want to ensure we have a clean + // directory, so delete any old one that might be there. + params.delete_sync_data_folder = !user_settings_->IsFirstSetupComplete(); + if (params.delete_sync_data_folder) { + // This looks questionable here but it mimics the old behavior of deleting + // the directory via Directory::DeleteDirectoryFiles(). One consecuence is + // that, for sync the transport users (without sync-the-feature enabled), + // the cache GUID and other fields are reset on every restart. + // TODO(crbug.com/923285): Reconsider the lifetime of the cache GUID and + // its persistence depending on StorageOption. sync_prefs_.ClearDirectoryConsistencyPreferences(); - params.cache_guid = GenerateCacheGUID(); - params.birthday.clear(); - params.delete_sync_data_folder = true; - sync_prefs_.SetCacheGuid(params.cache_guid); } params.enable_local_sync_backend = sync_prefs_.IsLocalSyncEnabled(); params.local_sync_backend_folder = sync_client_->GetLocalSyncBackendFolder(); @@ -510,7 +502,12 @@ sync_prefs_.GetEncryptionBootstrapToken(); params.restored_keystore_key_for_bootstrapping = sync_prefs_.GetKeystoreEncryptionBootstrapToken(); - + params.cache_guid = sync_prefs_.GetCacheGuid(); + if (params.cache_guid.empty()) { + params.cache_guid = GenerateCacheGUID(); + sync_prefs_.SetCacheGuid(params.cache_guid); + } + params.birthday = sync_prefs_.GetBirthday(); params.bag_of_chips = sync_prefs_.GetBagOfChips(); params.engine_components_factory = std::make_unique<EngineComponentsFactoryImpl>( @@ -862,10 +859,6 @@ return; } - // TODO(crbug.com/923285): The store birthday should be available at this - // point, so we should ideally save to prefs, since OnSyncCycleCompleted() - // does not get called for the first sync cycle for control types. - sync_js_controller_.AttachJsBackend(js_backend); if (protocol_event_observers_.might_have_observers()) {
diff --git a/components/sync/engine_impl/loopback_server/loopback_server.cc b/components/sync/engine_impl/loopback_server/loopback_server.cc index e3d225f..91b7933 100644 --- a/components/sync/engine_impl/loopback_server/loopback_server.cc +++ b/components/sync/engine_impl/loopback_server/loopback_server.cc
@@ -344,9 +344,9 @@ std::vector<ModelType> datatypes_to_migrate; switch (message.message_contents()) { case sync_pb::ClientToServerMessage::GET_UPDATES: - success = HandleGetUpdatesRequest( - message.get_updates(), message.store_birthday(), - response_proto.mutable_get_updates(), &datatypes_to_migrate); + success = HandleGetUpdatesRequest(message.get_updates(), + response_proto.mutable_get_updates(), + &datatypes_to_migrate); break; case sync_pb::ClientToServerMessage::COMMIT: success = HandleCommitRequest(message.commit(), @@ -394,25 +394,10 @@ bool LoopbackServer::HandleGetUpdatesRequest( const sync_pb::GetUpdatesMessage& get_updates, - const std::string& store_birthday, sync_pb::GetUpdatesResponse* response, std::vector<ModelType>* datatypes_to_migrate) { response->set_changes_remaining(0); - // It's a protocol-level contract that the birthday should only be empty - // during the initial sync cycle, which requires all progress markers to be - // empty. This is also DCHECK-ed on the client, inside syncer_proto_util.cc, - // but we guard against client-side code changes here. - if (store_birthday.empty()) { - for (const sync_pb::DataTypeProgressMarker& marker : - get_updates.from_progress_marker()) { - if (!marker.token().empty()) { - DLOG(WARNING) << "Non-empty progress marker without birthday"; - return false; - } - } - } - auto sieve = std::make_unique<UpdateSieve>(get_updates, migration_versions_); if (sieve->ShouldTriggerMigration(migration_versions_,
diff --git a/components/sync/engine_impl/loopback_server/loopback_server.h b/components/sync/engine_impl/loopback_server/loopback_server.h index a6129de68f..36ead60 100644 --- a/components/sync/engine_impl/loopback_server/loopback_server.h +++ b/components/sync/engine_impl/loopback_server/loopback_server.h
@@ -89,7 +89,6 @@ // Processes a GetUpdates call. bool HandleGetUpdatesRequest(const sync_pb::GetUpdatesMessage& get_updates, - const std::string& store_birthday, sync_pb::GetUpdatesResponse* response, std::vector<ModelType>* datatypes_to_migrate);
diff --git a/components/sync/test/fake_server/fake_server_http_post_provider.cc b/components/sync/test/fake_server/fake_server_http_post_provider.cc index 0922542..eaba3c65 100644 --- a/components/sync/test/fake_server/fake_server_http_post_provider.cc +++ b/components/sync/test/fake_server/fake_server_http_post_provider.cc
@@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/location.h" +#include "base/time/time.h" #include "components/sync/test/fake_server/fake_server.h" #include "net/base/net_errors.h" @@ -16,10 +17,6 @@ // static std::atomic_bool FakeServerHttpPostProvider::network_enabled_(true); -// static -std::atomic<base::TimeDelta> FakeServerHttpPostProvider::network_delay_ = { - base::TimeDelta()}; - FakeServerHttpPostProviderFactory::FakeServerHttpPostProviderFactory( const base::WeakPtr<FakeServer>& fake_server, scoped_refptr<base::SequencedTaskRunner> fake_server_task_runner) @@ -92,17 +89,6 @@ synchronous_post_completion_.Reset(); aborted_ = false; - const base::TimeDelta network_delay = network_delay_.load(); - if (!network_delay.is_zero()) { - // Block the specified time unless Abort() is called meanwhile. - synchronous_post_completion_.TimedWait(network_delay); - if (aborted_) { - *net_error_code = net::ERR_ABORTED; - return false; - } - DCHECK(!synchronous_post_completion_.IsSignaled()); - } - // It is assumed that a POST is being made to /command. int post_status_code = -1; std::string post_response; @@ -174,12 +160,6 @@ network_enabled_ = true; } -// static -void FakeServerHttpPostProvider::SetNetworkDelay(base::TimeDelta delay) { - // Note: This may be called on any thread. - network_delay_ = delay; -} - void FakeServerHttpPostProvider::HandleCommandOnFakeServerThread( int* http_status_code, std::string* response) {
diff --git a/components/sync/test/fake_server/fake_server_http_post_provider.h b/components/sync/test/fake_server/fake_server_http_post_provider.h index 7efb3b4..22b8afc 100644 --- a/components/sync/test/fake_server/fake_server_http_post_provider.h +++ b/components/sync/test/fake_server/fake_server_http_post_provider.h
@@ -15,7 +15,6 @@ #include "base/sequence_checker.h" #include "base/sequenced_task_runner.h" #include "base/synchronization/waitable_event.h" -#include "base/time/time.h" #include "components/sync/engine/net/http_post_provider_factory.h" #include "components/sync/engine/net/http_post_provider_interface.h" @@ -51,9 +50,6 @@ // Undoes the effects of DisableNetwork. static void EnableNetwork(); - // Mimics a slow network: each request will be blocked for the specified time. - static void SetNetworkDelay(base::TimeDelta delay); - protected: ~FakeServerHttpPostProvider() override; @@ -64,7 +60,6 @@ std::string* response); static std::atomic_bool network_enabled_; - static std::atomic<base::TimeDelta> network_delay_; // |fake_server_| should only be dereferenced on the same thread as // |fake_server_task_runner_| runs on.
diff --git a/components/ukm/content/source_url_recorder.cc b/components/ukm/content/source_url_recorder.cc index 106f0b6..7b24ecf 100644 --- a/components/ukm/content/source_url_recorder.cc +++ b/components/ukm/content/source_url_recorder.cc
@@ -332,6 +332,8 @@ navigation_data.previous_source_id = last_committed_full_navigation_source_id_; + navigation_data.navigation_time = navigation_handle->NavigationStart(); + // If the last_committed_full_navigation_or_same_document_source_id_ isn't // equal to the last_committed_full_navigation_source_id_, it indicates the // previous source was a same document navigation.
diff --git a/components/ukm/content/source_url_recorder_test.cc b/components/ukm/content/source_url_recorder_test.cc index 3acc43a..6d30545e 100644 --- a/components/ukm/content/source_url_recorder_test.cc +++ b/components/ukm/content/source_url_recorder_test.cc
@@ -122,6 +122,7 @@ EXPECT_FALSE(full_nav_source1.is_same_document_navigation()); EXPECT_FALSE(full_nav_source1.has_previous_source_id()); EXPECT_FALSE(full_nav_source1.has_previous_same_document_source_id()); + EXPECT_TRUE(full_nav_source1.has_navigation_time_msec()); // The second navigation was a same-document navigation to // same_document_url1. It should have a previous_source_id that points to @@ -131,6 +132,7 @@ EXPECT_TRUE(same_doc_source1.is_same_document_navigation()); EXPECT_EQ(full_nav_source1.id(), same_doc_source1.previous_source_id()); EXPECT_FALSE(same_doc_source1.has_previous_same_document_source_id()); + EXPECT_TRUE(same_doc_source1.has_navigation_time_msec()); // The third navigation was a non-same-document navigation to url2. It should // have a previous_source_id pointing to the source for url1, and a @@ -142,6 +144,7 @@ EXPECT_EQ(full_nav_source1.id(), full_nav_source2.previous_source_id()); EXPECT_EQ(same_doc_source1.id(), full_nav_source2.previous_same_document_source_id()); + EXPECT_TRUE(full_nav_source2.has_navigation_time_msec()); // The fourth navigation was a same-document navigation to // same_document_url2. It should have a previous_source_id pointing to the @@ -151,8 +154,17 @@ EXPECT_TRUE(same_doc_source2.is_same_document_navigation()); EXPECT_EQ(full_nav_source2.id(), same_doc_source2.previous_source_id()); EXPECT_FALSE(same_doc_source2.has_previous_same_document_source_id()); + EXPECT_TRUE(same_doc_source2.has_navigation_time_msec()); EXPECT_EQ(url2, GetAssociatedURLForWebContentsDocument()); + + // The recorded time of each navigation should increase monotonically. + EXPECT_LE(full_nav_source1.navigation_time_msec(), + same_doc_source1.navigation_time_msec()); + EXPECT_LE(same_doc_source1.navigation_time_msec(), + full_nav_source2.navigation_time_msec()); + EXPECT_LE(full_nav_source2.navigation_time_msec(), + same_doc_source2.navigation_time_msec()); } TEST_F(SourceUrlRecorderWebContentsObserverTest,
diff --git a/components/viz/test/fake_skia_output_surface.cc b/components/viz/test/fake_skia_output_surface.cc index b7377eb..01a754ed 100644 --- a/components/viz/test/fake_skia_output_surface.cc +++ b/components/viz/test/fake_skia_output_surface.cc
@@ -276,6 +276,13 @@ NOTIMPLEMENTED(); } +void FakeSkiaOutputSurface::SetOutOfOrderCallbacks( + bool out_of_order_callbacks) { + TestContextSupport* support = + static_cast<TestContextSupport*>(context_provider()->ContextSupport()); + support->set_out_of_order_callbacks(out_of_order_callbacks); +} + bool FakeSkiaOutputSurface::GetGrBackendTexture( const ResourceMetadata& metadata, GrBackendTexture* backend_texture) {
diff --git a/components/viz/test/fake_skia_output_surface.h b/components/viz/test/fake_skia_output_surface.h index 6a2c039..1bc52cc 100644 --- a/components/viz/test/fake_skia_output_surface.h +++ b/components/viz/test/fake_skia_output_surface.h
@@ -88,6 +88,10 @@ // ExternalUseClient implementation: void ReleaseCachedResources(const std::vector<ResourceId>& ids) override; + // If set true, callbacks triggering will be in a reverse order as SignalQuery + // calls. + void SetOutOfOrderCallbacks(bool out_of_order_callbacks); + private: explicit FakeSkiaOutputSurface( scoped_refptr<ContextProvider> context_provider);
diff --git a/components/webdata/common/web_database_migration_unittest.cc b/components/webdata/common/web_database_migration_unittest.cc index eb338ba..fdcf418 100644 --- a/components/webdata/common/web_database_migration_unittest.cc +++ b/components/webdata/common/web_database_migration_unittest.cc
@@ -17,9 +17,9 @@ #include "base/time/time.h" #include "base/values.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/webdata/autofill_change.h" #include "components/autofill/core/browser/webdata/autofill_entry.h" #include "components/autofill/core/browser/webdata/autofill_table.h"
diff --git a/content/browser/accessibility/OWNERS b/content/browser/accessibility/OWNERS index b6fb1fb..4450a80e 100644 --- a/content/browser/accessibility/OWNERS +++ b/content/browser/accessibility/OWNERS
@@ -4,5 +4,13 @@ jdiggs@igalia.com mrobinson@igalia.com +# For Windows / UIA +per-file *_win*=kschmi@microsoft.com +per-file *_win*=kbabbitt@microsoft.com +per-file *_win*=iapres@microsoft.com +per-file *test*=kschmi@microsoft.com +per-file *test*=kbabbitt@microsoft.com +per-file *test*=iapres@microsoft.com + # TEAM: chromium-accessibility@chromium.org # COMPONENT: UI>Accessibility
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc index e3b0b7f..5ccd856 100644 --- a/content/browser/accessibility/browser_accessibility_manager_win.cc +++ b/content/browser/accessibility/browser_accessibility_manager_win.cc
@@ -222,6 +222,7 @@ } case ui::AXEventGenerator::Event::ENABLED_CHANGED: FireUiaPropertyChangedEvent(UIA_IsEnabledPropertyId, node); + aria_properties_events_.insert(node); break; case ui::AXEventGenerator::Event::FLOW_FROM_CHANGED: FireUiaPropertyChangedEvent(UIA_FlowsFromPropertyId, node); @@ -234,6 +235,7 @@ break; case ui::AXEventGenerator::Event::HIERARCHICAL_LEVEL_CHANGED: FireUiaPropertyChangedEvent(UIA_LevelPropertyId, node); + aria_properties_events_.insert(node); break; case ui::AXEventGenerator::Event::IMAGE_ANNOTATION_CHANGED: FireWinAccessibilityEvent(EVENT_OBJECT_NAMECHANGE, node); @@ -271,6 +273,7 @@ break; case ui::AXEventGenerator::Event::LIVE_STATUS_CHANGED: FireUiaPropertyChangedEvent(UIA_LiveSettingPropertyId, node); + aria_properties_events_.insert(node); break; case ui::AXEventGenerator::Event::LOAD_COMPLETE: FireWinAccessibilityEvent(IA2_EVENT_DOCUMENT_LOAD_COMPLETE, node); @@ -284,6 +287,7 @@ case ui::AXEventGenerator::Event::MULTISELECTABLE_STATE_CHANGED: FireUiaPropertyChangedEvent(UIA_SelectionCanSelectMultiplePropertyId, node); + aria_properties_events_.insert(node); break; case ui::AXEventGenerator::Event::NAME_CHANGED: FireUiaPropertyChangedEvent(UIA_NamePropertyId, node);
diff --git a/content/browser/accessibility/dump_accessibility_events_browsertest.cc b/content/browser/accessibility/dump_accessibility_events_browsertest.cc index 8a9dae7ca..ed628db 100644 --- a/content/browser/accessibility/dump_accessibility_events_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_events_browsertest.cc
@@ -256,6 +256,11 @@ } IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, + AccessibilityEventsAriaDisabledChanged) { + RunEventTest(FILE_PATH_LITERAL("aria-disabled-changed.html")); +} + +IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, AccessibilityEventsAriaHasPopupChanged) { RunEventTest(FILE_PATH_LITERAL("aria-haspopup-changed.html")); } @@ -266,6 +271,16 @@ } IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, + AccessibilityEventsAriaLevelChanged) { + RunEventTest(FILE_PATH_LITERAL("aria-level-changed.html")); +} + +IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, + AccessibilityEventsAriaLiveChanged) { + RunEventTest(FILE_PATH_LITERAL("aria-live-changed.html")); +} + +IN_PROC_BROWSER_TEST_P(DumpAccessibilityEventsTest, AccessibilityEventsAriaMultilineChanged) { RunEventTest(FILE_PATH_LITERAL("aria-multiline-changed.html")); }
diff --git a/content/browser/appcache/appcache_host.cc b/content/browser/appcache/appcache_host.cc index 5e7c21a2..d6ed8eb6 100644 --- a/content/browser/appcache/appcache_host.cc +++ b/content/browser/appcache/appcache_host.cc
@@ -19,9 +19,7 @@ #include "content/browser/appcache/appcache_subresource_url_factory.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/common/appcache_interfaces.h" -#include "content/public/browser/child_process_security_policy.h" #include "content/public/common/content_features.h" -#include "content/public/common/url_constants.h" #include "net/url_request/url_request.h" #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" @@ -139,20 +137,6 @@ return; } - DCHECK_NE(process_id_, ChildProcessHost::kInvalidUniqueID); - auto* security_policy = ChildProcessSecurityPolicy::GetInstance(); - if (document_url != kAboutSrcDocURL && - !security_policy->CanAccessDataForOrigin(process_id_, document_url)) { - mojo::ReportBadMessage("ACH_SELECT_CACHE_DOCUMENT_URL_ACCESS_NOT_ALLOWED"); - return; - } - - if (!manifest_url.is_empty() && - !security_policy->CanAccessDataForOrigin(process_id_, manifest_url)) { - mojo::ReportBadMessage("ACH_SELECT_CACHE_MANIFEST_URL_ACCESS_NOT_ALLOWED"); - return; - } - DCHECK(pending_start_update_callback_.is_null() && pending_swap_cache_callback_.is_null() && pending_get_status_callback_.is_null() && !is_selection_pending()); @@ -245,14 +229,6 @@ return; } - auto* security_policy = ChildProcessSecurityPolicy::GetInstance(); - if (document_url != kAboutSrcDocURL && - !security_policy->CanAccessDataForOrigin(process_id_, document_url)) { - mojo::ReportBadMessage( - "ACH_MARK_AS_FOREIGN_ENTRY_DOCUMENT_URL_ACCESS_NOT_ALLOWED"); - return; - } - // The document url is not the resource url in the fallback case. storage()->MarkEntryAsForeign( main_resource_was_namespace_entry_ ? namespace_entry_url_ : document_url,
diff --git a/content/browser/appcache/appcache_host_unittest.cc b/content/browser/appcache/appcache_host_unittest.cc index 4b54ca87..fc13cb4 100644 --- a/content/browser/appcache/appcache_host_unittest.cc +++ b/content/browser/appcache/appcache_host_unittest.cc
@@ -19,8 +19,6 @@ #include "content/browser/appcache/appcache_request_handler.h" #include "content/browser/appcache/mock_appcache_policy.h" #include "content/browser/appcache/mock_appcache_service.h" -#include "content/browser/child_process_security_policy_impl.h" -#include "content/browser/isolation_context.h" #include "content/public/test/test_browser_context.h" #include "content/public/test/test_renderer_host.h" #include "content/test/test_web_contents.h" @@ -623,64 +621,4 @@ } } -TEST_F(AppCacheHostTest, SelectCacheURLsForWrongSite) { - // Lock process to |kProcessLockURL| so we can only accept URLs from - // that site. - const GURL kProcessLockURL("http://foo.com"); - ChildProcessSecurityPolicyImpl::GetInstance()->LockToOrigin( - IsolationContext(&browser_context_), kProcessIdForTest, kProcessLockURL); - - AppCacheHost host(kHostIdForTest, kProcessIdForTest, kRenderFrameIdForTest, - nullptr, &service_); - host.set_frontend_for_testing(&mock_frontend_); - blink::mojom::AppCacheHostPtr host_ptr; - host.BindRequest(mojo::MakeRequest(&host_ptr)); - - // Verify that a document URL from the wrong site triggers a bad message. - { - const GURL kDocumentURL("http://whatever/"); - mojo::test::BadMessageObserver bad_message_observer; - host_ptr->SelectCache(kDocumentURL, blink::mojom::kAppCacheNoCacheId, - GURL()); - - EXPECT_EQ("ACH_SELECT_CACHE_DOCUMENT_URL_ACCESS_NOT_ALLOWED", - bad_message_observer.WaitForBadMessage()); - } - - // Verify that a document URL from the wrong site triggers a bad message. - { - const GURL kDocumentURL = kProcessLockURL; - const GURL kManifestURL("http://whatever/"); - mojo::test::BadMessageObserver bad_message_observer; - host_ptr->SelectCache(kDocumentURL, blink::mojom::kAppCacheNoCacheId, - kManifestURL); - - EXPECT_EQ("ACH_SELECT_CACHE_MANIFEST_URL_ACCESS_NOT_ALLOWED", - bad_message_observer.WaitForBadMessage()); - } -} - -TEST_F(AppCacheHostTest, ForeignEntryForWrongSite) { - // Lock process to |kProcessLockURL| so we can only accept URLs from - // that site. - const GURL kProcessLockURL("http://foo.com"); - ChildProcessSecurityPolicyImpl::GetInstance()->LockToOrigin( - IsolationContext(&browser_context_), kProcessIdForTest, kProcessLockURL); - - AppCacheHost host(kHostIdForTest, kProcessIdForTest, kRenderFrameIdForTest, - nullptr, &service_); - host.set_frontend_for_testing(&mock_frontend_); - blink::mojom::AppCacheHostPtr host_ptr; - host.BindRequest(mojo::MakeRequest(&host_ptr)); - - // Verify that a document URL from the wrong site triggers a bad message. - { - const GURL kDocumentURL("http://origin/document"); - mojo::test::BadMessageObserver bad_message_observer; - host_ptr->MarkAsForeignEntry(kDocumentURL, - blink::mojom::kAppCacheNoCacheId); - EXPECT_EQ("ACH_MARK_AS_FOREIGN_ENTRY_DOCUMENT_URL_ACCESS_NOT_ALLOWED", - bad_message_observer.WaitForBadMessage()); - } -} } // namespace content
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc index e98fd1c..c58f47ef 100644 --- a/content/browser/appcache/appcache_storage_impl_unittest.cc +++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -36,10 +36,8 @@ #include "content/browser/appcache/appcache_request_handler.h" #include "content/browser/appcache/appcache_service_impl.h" #include "content/browser/appcache/appcache_url_loader_request.h" -#include "content/browser/child_process_security_policy_impl.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/common/content_features.h" -#include "content/public/test/test_browser_context.h" #include "content/public/test/test_browser_thread_bundle.h" #include "net/base/net_errors.h" #include "net/base/request_priority.h" @@ -75,8 +73,6 @@ return GURL("http://mockhost/" + path); } -std::unique_ptr<TestBrowserContext> browser_context; -const int kProcessId = 1; std::unique_ptr<base::test::ScopedTaskEnvironment> scoped_task_environment; scoped_refptr<base::SingleThreadTaskRunner> io_runner; std::unique_ptr<base::Thread> background_thread; @@ -280,10 +276,6 @@ scoped_task_environment = std::make_unique<TestBrowserThreadBundle>( TestBrowserThreadBundle::REAL_IO_THREAD); - browser_context = std::make_unique<TestBrowserContext>(); - ChildProcessSecurityPolicyImpl::GetInstance()->Add(kProcessId, - browser_context.get()); - io_runner = base::CreateSingleThreadTaskRunnerWithTraits({BrowserThread::IO}); @@ -297,8 +289,6 @@ static void TearDownTestCase() { io_runner.reset(); background_thread.reset(); - ChildProcessSecurityPolicyImpl::GetInstance()->Remove(kProcessId); - browser_context.reset(); scoped_task_environment.reset(); } @@ -1704,9 +1694,10 @@ } void Continue_Reinitialize(ReinitTestCase test_case) { + const int kMockProcessId = 1; const int kMockRenderFrameId = MSG_ROUTING_NONE; backend_ = - std::make_unique<AppCacheBackendImpl>(service_.get(), kProcessId); + std::make_unique<AppCacheBackendImpl>(service_.get(), kMockProcessId); if (test_case == CORRUPT_SQL_ON_INSTALL) { // Break the db file @@ -2048,4 +2039,4 @@ // That's all folks! -} // namespace content +} // namespace content \ No newline at end of file
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc index b37d46d..d6820b6 100644 --- a/content/browser/appcache/appcache_update_job_unittest.cc +++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -28,10 +28,8 @@ #include "content/browser/appcache/appcache_response.h" #include "content/browser/appcache/appcache_update_url_loader_request.h" #include "content/browser/appcache/mock_appcache_service.h" -#include "content/browser/child_process_security_policy_impl.h" #include "content/browser/url_loader_factory_getter.h" #include "content/public/browser/browser_task_traits.h" -#include "content/public/test/test_browser_context.h" #include "content/public/test/test_browser_thread_bundle.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/system/data_pipe.h" @@ -703,8 +701,7 @@ expect_non_null_update_time_(false), tested_manifest_(NONE), tested_manifest_path_override_(nullptr), - thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD), - process_id_(123) { + thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD) { base::PostTaskWithTraits( FROM_HERE, {BrowserThread::IO}, base::BindOnce(&IOThread::Init, base::Unretained(io_thread_.get()))); @@ -726,14 +723,6 @@ base::BindOnce(&IOThread::CleanUp, base::Unretained(io_thread_.get()))); } - void SetUp() override { - ChildProcessSecurityPolicyImpl::GetInstance()->Add(process_id_, - &browser_context_); - } - - void TearDown() override { - ChildProcessSecurityPolicyImpl::GetInstance()->Remove(process_id_); - } // Use a separate IO thread to run a test. Thread will be destroyed // when it goes out of scope. template <class Method> @@ -3513,9 +3502,11 @@ AppCacheHost* MakeHost(int host_id, blink::mojom::AppCacheFrontend* frontend) { + constexpr int kProcessIdForTests = 123; constexpr int kRenderFrameIdForTests = 456; - hosts_.push_back(std::make_unique<AppCacheHost>( - host_id, process_id_, kRenderFrameIdForTests, nullptr, service_.get())); + hosts_.push_back(std::make_unique<AppCacheHost>(host_id, kProcessIdForTests, + kRenderFrameIdForTests, + nullptr, service_.get())); hosts_.back()->set_frontend_for_testing(frontend); return hosts_.back().get(); } @@ -3864,8 +3855,6 @@ MockURLLoaderFactory mock_url_loader_factory_; scoped_refptr<URLLoaderFactoryGetter> loader_factory_getter_; content::TestBrowserThreadBundle thread_bundle_; - content::TestBrowserContext browser_context_; - const int process_id_; }; TEST_F(AppCacheUpdateJobTest, AlreadyChecking) {
diff --git a/content/browser/browser_context.cc b/content/browser/browser_context.cc index 655bfae7..46b76d7 100644 --- a/content/browser/browser_context.cc +++ b/content/browser/browser_context.cc
@@ -510,12 +510,13 @@ BrowserContext* browser_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, const base::Callback<void(blink::mojom::PushDeliveryStatus)>& callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); PushMessagingRouter::DeliverMessage(browser_context, origin, service_worker_registration_id, - std::move(payload), callback); + message_id, std::move(payload), callback); } // static
diff --git a/content/browser/devtools/OWNERS b/content/browser/devtools/OWNERS index d8aa317..2826a8c 100644 --- a/content/browser/devtools/OWNERS +++ b/content/browser/devtools/OWNERS
@@ -1,3 +1,4 @@ caseq@chromium.org +alph@chromium.org # COMPONENT: Platform>DevTools
diff --git a/content/browser/devtools/devtools_background_services.proto b/content/browser/devtools/devtools_background_services.proto index 8f4c4549..c51c161 100644 --- a/content/browser/devtools/devtools_background_services.proto +++ b/content/browser/devtools/devtools_background_services.proto
@@ -16,9 +16,10 @@ TEST_BACKGROUND_SERVICE = 1; BACKGROUND_FETCH = 2; BACKGROUND_SYNC = 3; + PUSH_MESSAGING = 4; // Keep as last, must have the largest tag value. - COUNT = 4; + COUNT = 5; } // A proto for storing the background service event with common metadata for
diff --git a/content/browser/devtools/devtools_background_services_context_impl.cc b/content/browser/devtools/devtools_background_services_context_impl.cc index ace5f74f..b8931c1 100644 --- a/content/browser/devtools/devtools_background_services_context_impl.cc +++ b/content/browser/devtools/devtools_background_services_context_impl.cc
@@ -47,6 +47,8 @@ return devtools::proto::BACKGROUND_FETCH; case DevToolsBackgroundService::kBackgroundSync: return devtools::proto::BACKGROUND_SYNC; + case DevToolsBackgroundService::kPushMessaging: + return devtools::proto::PUSH_MESSAGING; } }
diff --git a/content/browser/devtools/protocol/service_worker_handler.cc b/content/browser/devtools/protocol/service_worker_handler.cc index a60eb434..01b95114 100644 --- a/content/browser/devtools/protocol/service_worker_handler.cc +++ b/content/browser/devtools/protocol/service_worker_handler.cc
@@ -318,7 +318,8 @@ if (data.size() > 0) payload = data; BrowserContext::DeliverPushMessage( - browser_context_, GURL(origin), id, std::move(payload), + browser_context_, GURL(origin), id, /* push_message_id= */ std::string(), + std::move(payload), base::BindRepeating([](blink::mojom::PushDeliveryStatus status) {})); return Response::OK();
diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc index e781dbb1..fa47a994 100644 --- a/content/browser/frame_host/render_widget_host_view_guest.cc +++ b/content/browser/frame_host/render_widget_host_view_guest.cc
@@ -787,7 +787,7 @@ // sure other plugins would behave appropriately (i.e. return 'false'). if (gesture_event.GetType() == blink::WebInputEvent::kGestureScrollUpdate && gesture_event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase) { + blink::WebGestureEvent::InertialPhaseState::kMomentum) { return; } host()->ForwardGestureEvent(gesture_event);
diff --git a/content/browser/push_messaging/push_messaging_router.cc b/content/browser/push_messaging/push_messaging_router.cc index 5334502..498f920 100644 --- a/content/browser/push_messaging/push_messaging_router.cc +++ b/content/browser/push_messaging/push_messaging_router.cc
@@ -9,13 +9,14 @@ #include "base/bind.h" #include "base/metrics/histogram_macros.h" #include "base/task/post_task.h" +#include "content/browser/devtools/devtools_background_services_context_impl.h" #include "content/browser/service_worker/service_worker_context_wrapper.h" #include "content/browser/service_worker/service_worker_registration.h" #include "content/browser/service_worker/service_worker_storage.h" +#include "content/browser/storage_partition_impl.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" -#include "content/public/browser/storage_partition.h" #include "third_party/blink/public/common/service_worker/service_worker_status_code.h" #include "third_party/blink/public/mojom/push_messaging/push_messaging_status.mojom.h" @@ -39,6 +40,7 @@ BrowserContext* browser_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback) { DCHECK_CURRENTLY_ON(BrowserThread::UI); @@ -47,20 +49,28 @@ scoped_refptr<ServiceWorkerContextWrapper> service_worker_context = static_cast<ServiceWorkerContextWrapper*>( partition->GetServiceWorkerContext()); + auto devtools_context = + base::WrapRefCounted<DevToolsBackgroundServicesContextImpl>( + service_worker_context->storage_partition() + ->GetDevToolsBackgroundServicesContext()); base::PostTaskWithTraits( FROM_HERE, {BrowserThread::IO}, base::BindOnce(&PushMessagingRouter::FindServiceWorkerRegistration, - origin, service_worker_registration_id, std::move(payload), - deliver_message_callback, service_worker_context)); + std::move(service_worker_context), + std::move(devtools_context), origin, + service_worker_registration_id, message_id, + std::move(payload), deliver_message_callback)); } // static void PushMessagingRouter::FindServiceWorkerRegistration( + scoped_refptr<ServiceWorkerContextWrapper> service_worker_context, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, - const DeliverMessageCallback& deliver_message_callback, - scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) { + const DeliverMessageCallback& deliver_message_callback) { DCHECK_CURRENTLY_ON(BrowserThread::IO); // Try to acquire the registration from storage. If it's already live we'll // receive it right away. If not, it will be revived from storage. @@ -68,11 +78,14 @@ service_worker_registration_id, origin, base::BindOnce( &PushMessagingRouter::FindServiceWorkerRegistrationCallback, - std::move(payload), deliver_message_callback)); + std::move(devtools_context), message_id, std::move(payload), + deliver_message_callback)); } // static void PushMessagingRouter::FindServiceWorkerRegistrationCallback( + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback, blink::ServiceWorkerStatusCode service_worker_status, @@ -101,55 +114,77 @@ version->RunAfterStartWorker( ServiceWorkerMetrics::EventType::PUSH, base::BindOnce(&PushMessagingRouter::DeliverMessageToWorker, - base::WrapRefCounted(version), service_worker_registration, + base::WrapRefCounted(version), + std::move(service_worker_registration), + std::move(devtools_context), message_id, std::move(payload), deliver_message_callback)); } // static void PushMessagingRouter::DeliverMessageToWorker( - const scoped_refptr<ServiceWorkerVersion>& service_worker, - const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration, + scoped_refptr<ServiceWorkerVersion> service_worker, + scoped_refptr<ServiceWorkerRegistration> service_worker_registration, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback, blink::ServiceWorkerStatusCode start_worker_status) { DCHECK_CURRENTLY_ON(BrowserThread::IO); if (start_worker_status != blink::ServiceWorkerStatusCode::kOk) { - DeliverMessageEnd(deliver_message_callback, service_worker_registration, - start_worker_status); + DeliverMessageEnd(std::move(service_worker), + std::move(service_worker_registration), + std::move(devtools_context), message_id, + deliver_message_callback, start_worker_status); return; } int request_id = service_worker->StartRequestWithCustomTimeout( ServiceWorkerMetrics::EventType::PUSH, - base::BindOnce(&PushMessagingRouter::DeliverMessageEnd, - deliver_message_callback, service_worker_registration), + base::BindOnce(&PushMessagingRouter::DeliverMessageEnd, service_worker, + std::move(service_worker_registration), devtools_context, + message_id, deliver_message_callback), base::TimeDelta::FromSeconds(blink::mojom::kPushEventTimeoutSeconds), ServiceWorkerVersion::KILL_ON_TIMEOUT); service_worker->endpoint()->DispatchPushEvent( payload, service_worker->CreateSimpleEventCallback(request_id)); + + if (devtools_context->IsRecording( + DevToolsBackgroundService::kPushMessaging)) { + devtools_context->LogBackgroundServiceEventOnIO( + service_worker->registration_id(), service_worker->script_origin(), + DevToolsBackgroundService::kPushMessaging, "Push event dispatched", + message_id, {}); + } } // static void PushMessagingRouter::DeliverMessageEnd( + scoped_refptr<ServiceWorkerVersion> service_worker, + scoped_refptr<ServiceWorkerRegistration> service_worker_registration, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, const DeliverMessageCallback& deliver_message_callback, - const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration, blink::ServiceWorkerStatusCode service_worker_status) { DCHECK_CURRENTLY_ON(BrowserThread::IO); UMA_HISTOGRAM_ENUMERATION("PushMessaging.DeliveryStatus.ServiceWorkerEvent", service_worker_status); blink::mojom::PushDeliveryStatus delivery_status = blink::mojom::PushDeliveryStatus::SERVICE_WORKER_ERROR; + std::string status_description; switch (service_worker_status) { case blink::ServiceWorkerStatusCode::kOk: delivery_status = blink::mojom::PushDeliveryStatus::SUCCESS; + status_description = "Success"; break; case blink::ServiceWorkerStatusCode::kErrorEventWaitUntilRejected: delivery_status = blink::mojom::PushDeliveryStatus::EVENT_WAITUNTIL_REJECTED; + status_description = "waitUntil Rejected"; break; case blink::ServiceWorkerStatusCode::kErrorTimeout: delivery_status = blink::mojom::PushDeliveryStatus::TIMEOUT; + status_description = "Timeout"; break; case blink::ServiceWorkerStatusCode::kErrorFailed: case blink::ServiceWorkerStatusCode::kErrorAbort: @@ -177,6 +212,16 @@ break; } RunDeliverCallback(deliver_message_callback, delivery_status); + + if (devtools_context->IsRecording( + DevToolsBackgroundService::kPushMessaging) && + delivery_status != + blink::mojom::PushDeliveryStatus::SERVICE_WORKER_ERROR) { + devtools_context->LogBackgroundServiceEventOnIO( + service_worker->registration_id(), service_worker->script_origin(), + DevToolsBackgroundService::kPushMessaging, "Push event completed", + message_id, {{"Status", status_description}}); + } } } // namespace content
diff --git a/content/browser/push_messaging/push_messaging_router.h b/content/browser/push_messaging/push_messaging_router.h index 253ca88..13b1f10 100644 --- a/content/browser/push_messaging/push_messaging_router.h +++ b/content/browser/push_messaging/push_messaging_router.h
@@ -9,7 +9,7 @@ #include "base/callback_forward.h" #include "base/macros.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/optional.h" #include "third_party/blink/public/common/service_worker/service_worker_status_code.h" #include "url/gurl.h" @@ -17,12 +17,13 @@ namespace blink { namespace mojom { enum class PushDeliveryStatus; -} +} // namespace mojom } // namespace blink namespace content { class BrowserContext; +class DevToolsBackgroundServicesContextImpl; class ServiceWorkerContextWrapper; class ServiceWorkerRegistration; class ServiceWorkerVersion; @@ -39,6 +40,7 @@ BrowserContext* browser_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback); @@ -46,16 +48,20 @@ // Attempts to find a Service Worker registration so that a push event can be // dispatched. Must be called on the IO thread. static void FindServiceWorkerRegistration( + scoped_refptr<ServiceWorkerContextWrapper> service_worker_context, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, - const DeliverMessageCallback& deliver_message_callback, - scoped_refptr<ServiceWorkerContextWrapper> service_worker_context); + const DeliverMessageCallback& deliver_message_callback); // If a registration was successfully retrieved, dispatches a push event with // |data| on the Service Worker identified by |service_worker_registration|. // Must be called on the IO thread. static void FindServiceWorkerRegistrationCallback( + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback, blink::ServiceWorkerStatusCode service_worker_status, @@ -64,9 +70,10 @@ // Delivers a push message with |data| to a specific |service_worker|. // Must be called on the IO thread. static void DeliverMessageToWorker( - const scoped_refptr<ServiceWorkerVersion>& service_worker, - const scoped_refptr<ServiceWorkerRegistration>& - service_worker_registration, + scoped_refptr<ServiceWorkerVersion> service_worker, + scoped_refptr<ServiceWorkerRegistration> service_worker_registration, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, base::Optional<std::string> payload, const DeliverMessageCallback& deliver_message_callback, blink::ServiceWorkerStatusCode start_worker_status); @@ -74,9 +81,11 @@ // Gets called asynchronously after the Service Worker has dispatched the push // event. Must be called on the IO thread. static void DeliverMessageEnd( + scoped_refptr<ServiceWorkerVersion> service_worker, + scoped_refptr<ServiceWorkerRegistration> service_worker_registration, + scoped_refptr<DevToolsBackgroundServicesContextImpl> devtools_context, + const std::string& message_id, const DeliverMessageCallback& deliver_message_callback, - const scoped_refptr<ServiceWorkerRegistration>& - service_worker_registration, blink::ServiceWorkerStatusCode service_worker_status); DISALLOW_IMPLICIT_CONSTRUCTORS(PushMessagingRouter);
diff --git a/content/browser/renderer_host/input/fling_controller.cc b/content/browser/renderer_host/input/fling_controller.cc index 771162e..0d6fda58 100644 --- a/content/browser/renderer_host/input/fling_controller.cc +++ b/content/browser/renderer_host/input/fling_controller.cc
@@ -333,11 +333,11 @@ synthetic_gesture.event.data.scroll_update.delta_x = delta.x(); synthetic_gesture.event.data.scroll_update.delta_y = delta.y(); synthetic_gesture.event.data.scroll_update.inertial_phase = - WebGestureEvent::kMomentumPhase; + WebGestureEvent::InertialPhaseState::kMomentum; } else { DCHECK_EQ(WebInputEvent::kGestureScrollEnd, type); synthetic_gesture.event.data.scroll_end.inertial_phase = - WebGestureEvent::kMomentumPhase; + WebGestureEvent::InertialPhaseState::kMomentum; synthetic_gesture.event.data.scroll_end.generated_by_fling_controller = true; }
diff --git a/content/browser/renderer_host/input/fling_controller_unittest.cc b/content/browser/renderer_host/input/fling_controller_unittest.cc index 22ae1a4..fd30a02 100644 --- a/content/browser/renderer_host/input/fling_controller_unittest.cc +++ b/content/browser/renderer_host/input/fling_controller_unittest.cc
@@ -110,7 +110,7 @@ scroll_update.data.scroll_update.velocity_x = delta.x(); scroll_update.data.scroll_update.velocity_y = delta.y(); scroll_update.data.scroll_update.inertial_phase = - WebGestureEvent::kNonMomentumPhase; + WebGestureEvent::InertialPhaseState::kNonMomentum; scroll_update.data.scroll_update.delta_units = blink::WebScrollGranularity::kScrollByPrecisePixel; GestureEventWithLatencyInfo scroll_update_with_latency(scroll_update); @@ -257,7 +257,7 @@ AdvanceTime(); ProgressFling(NowTicks()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); @@ -316,7 +316,7 @@ while (FlingInProgress()) { ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); AdvanceTime(); @@ -361,7 +361,7 @@ AdvanceTime(); ProgressFling(NowTicks()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); @@ -405,7 +405,7 @@ EXPECT_EQ(blink::WebGestureDevice::kTouchscreen, last_sent_gesture_.SourceDevice()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); } @@ -430,7 +430,7 @@ EXPECT_EQ(blink::WebGestureDevice::kTouchscreen, last_sent_gesture_.SourceDevice()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); } @@ -529,7 +529,7 @@ AdvanceTime(); ProgressFling(NowTicks()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f); @@ -570,7 +570,7 @@ AdvanceTime(); ProgressFling(NowTicks()); ASSERT_EQ(WebInputEvent::kGestureScrollUpdate, last_sent_gesture_.GetType()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, last_sent_gesture_.data.scroll_update.inertial_phase); EXPECT_GT(last_sent_gesture_.data.scroll_update.delta_x, 0.f);
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc index 049f46f..1d95936 100644 --- a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc +++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
@@ -168,11 +168,11 @@ if (event_sent_for_gesture_ack_->event.momentum_phase != blink::WebMouseWheelEvent::kPhaseNone) { scroll_update.data.scroll_update.inertial_phase = - WebGestureEvent::kMomentumPhase; + WebGestureEvent::InertialPhaseState::kMomentum; } else if (event_sent_for_gesture_ack_->event.phase != blink::WebMouseWheelEvent::kPhaseNone) { scroll_update.data.scroll_update.inertial_phase = - WebGestureEvent::kNonMomentumPhase; + WebGestureEvent::InertialPhaseState::kNonMomentum; } if (event_sent_for_gesture_ack_->event.scroll_by_page) { scroll_update.data.scroll_update.delta_units = @@ -317,7 +317,7 @@ // blink::WebMouseWheelEvent::kPhaseEnded are generated by the fling // controller to terminate touchpad flings. if (scroll_end.data.scroll_end.inertial_phase == - WebGestureEvent::kMomentumPhase && + WebGestureEvent::InertialPhaseState::kMomentum && synthetic) { scroll_end.data.scroll_end.generated_by_fling_controller = true; }
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc index d84e025..002441a 100644 --- a/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc +++ b/content/browser/renderer_host/input/mouse_wheel_event_queue_unittest.cc
@@ -42,34 +42,34 @@ EXPECT_EQ(kWheelScrollGlobalY, event->PositionInScreen().y); \ EXPECT_EQ(scroll_units, event->data.scroll_begin.delta_hint_units); -#define EXPECT_GESTURE_SCROLL_BEGIN(event) \ - EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_begin.synthetic); \ - EXPECT_EQ(WebGestureEvent::kUnknownMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_BEGIN(event) \ + EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_begin.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kUnknownMomentum, \ event->data.scroll_begin.inertial_phase); -#define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \ - EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_begin.synthetic); \ - EXPECT_EQ(WebGestureEvent::kNonMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_BEGIN_WITH_PHASE(event) \ + EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_begin.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kNonMomentum, \ event->data.scroll_begin.inertial_phase); -#define EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(event) \ - EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ - EXPECT_TRUE(event->data.scroll_begin.synthetic); \ - EXPECT_EQ(WebGestureEvent::kNonMomentumPhase, \ +#define EXPECT_SYNTHETIC_GESTURE_SCROLL_BEGIN(event) \ + EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ + EXPECT_TRUE(event->data.scroll_begin.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kNonMomentum, \ event->data.scroll_begin.inertial_phase); -#define EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ - EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_begin.synthetic); \ - EXPECT_EQ(WebGestureEvent::kMomentumPhase, \ +#define EXPECT_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ + EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_begin.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, \ event->data.scroll_begin.inertial_phase); #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_BEGIN(event) \ EXPECT_GESTURE_SCROLL_BEGIN_IMPL(event); \ EXPECT_TRUE(event->data.scroll_begin.synthetic); \ - EXPECT_EQ(WebGestureEvent::kMomentumPhase, \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, \ event->data.scroll_begin.inertial_phase); #define EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event) \ @@ -80,19 +80,19 @@ EXPECT_EQ(kWheelScrollGlobalX, event->PositionInScreen().x); \ EXPECT_EQ(kWheelScrollGlobalY, event->PositionInScreen().y); -#define EXPECT_GESTURE_SCROLL_UPDATE(event) \ - EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ - EXPECT_EQ(WebGestureEvent::kUnknownMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_UPDATE(event) \ + EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kUnknownMomentum, \ event->data.scroll_update.inertial_phase); -#define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \ - EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ - EXPECT_EQ(WebGestureEvent::kNonMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_UPDATE_WITH_PHASE(event) \ + EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kNonMomentum, \ event->data.scroll_update.inertial_phase); -#define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \ - EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ - EXPECT_EQ(WebGestureEvent::kMomentumPhase, \ +#define EXPECT_INERTIAL_GESTURE_SCROLL_UPDATE(event) \ + EXPECT_GESTURE_SCROLL_UPDATE_IMPL(event); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, \ event->data.scroll_update.inertial_phase); #define EXPECT_GESTURE_SCROLL_END_IMPL(event) \ @@ -103,35 +103,35 @@ EXPECT_EQ(kWheelScrollGlobalX, event->PositionInScreen().x); \ EXPECT_EQ(kWheelScrollGlobalY, event->PositionInScreen().y); -#define EXPECT_GESTURE_SCROLL_END(event) \ - EXPECT_GESTURE_SCROLL_END_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_end.synthetic); \ - EXPECT_EQ(WebGestureEvent::kUnknownMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_END(event) \ + EXPECT_GESTURE_SCROLL_END_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_end.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kUnknownMomentum, \ event->data.scroll_end.inertial_phase); -#define EXPECT_GESTURE_SCROLL_END_WITH_PHASE(event) \ - EXPECT_GESTURE_SCROLL_END_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_end.synthetic); \ - EXPECT_EQ(WebGestureEvent::kNonMomentumPhase, \ +#define EXPECT_GESTURE_SCROLL_END_WITH_PHASE(event) \ + EXPECT_GESTURE_SCROLL_END_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_end.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kNonMomentum, \ event->data.scroll_end.inertial_phase); -#define EXPECT_SYNTHETIC_GESTURE_SCROLL_END(event) \ - EXPECT_GESTURE_SCROLL_END_IMPL(event); \ - EXPECT_TRUE(event->data.scroll_end.synthetic); \ - EXPECT_EQ(WebGestureEvent::kNonMomentumPhase, \ +#define EXPECT_SYNTHETIC_GESTURE_SCROLL_END(event) \ + EXPECT_GESTURE_SCROLL_END_IMPL(event); \ + EXPECT_TRUE(event->data.scroll_end.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kNonMomentum, \ event->data.scroll_end.inertial_phase); -#define EXPECT_INERTIAL_GESTURE_SCROLL_END(event) \ - EXPECT_GESTURE_SCROLL_END_IMPL(event); \ - EXPECT_FALSE(event->data.scroll_end.synthetic); \ - EXPECT_EQ(WebGestureEvent::kMomentumPhase, \ +#define EXPECT_INERTIAL_GESTURE_SCROLL_END(event) \ + EXPECT_GESTURE_SCROLL_END_IMPL(event); \ + EXPECT_FALSE(event->data.scroll_end.synthetic); \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, \ event->data.scroll_end.inertial_phase); #if defined(CHROME_OS) #define EXPECT_SYNTHETIC_INERTIAL_GESTURE_SCROLL_END(event) \ EXPECT_GESTURE_SCROLL_END_IMPL(event); \ EXPECT_TRUE(event->data.scroll_end.synthetic); \ - EXPECT_EQ(WebGestureEvent::kMomentumPhase, \ + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, \ event->data.scroll_end.inertial_phase); \ EXPECT_TRUE(event->data.scroll_end.generated_by_fling_controller); #endif
diff --git a/content/browser/renderer_host/overscroll_controller.cc b/content/browser/renderer_host/overscroll_controller.cc index fd2d8bf..f1e3ec1 100644 --- a/content/browser/renderer_host/overscroll_controller.cc +++ b/content/browser/renderer_host/overscroll_controller.cc
@@ -40,7 +40,7 @@ const blink::WebGestureEvent& gesture = static_cast<const blink::WebGestureEvent&>(event); return gesture.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kMomentum; } float ClampAbsoluteValue(float value, float max_abs) { @@ -266,7 +266,7 @@ const blink::WebGestureEvent gesture_event = static_cast<const blink::WebGestureEvent&>(event); if (gesture_event.data.scroll_update.inertial_phase != - blink::WebGestureEvent::kMomentumPhase) + blink::WebGestureEvent::InertialPhaseState::kMomentum) return false; } @@ -278,7 +278,7 @@ const blink::WebGestureEvent gesture_event = static_cast<const blink::WebGestureEvent&>(event); if (gesture_event.data.scroll_end.inertial_phase != - blink::WebGestureEvent::kMomentumPhase) + blink::WebGestureEvent::InertialPhaseState::kMomentum) return false; } @@ -358,9 +358,10 @@ // when the scrolling is in inertial state. const blink::WebGestureEvent gesture_event = static_cast<const blink::WebGestureEvent&>(event); - bool reset_scroll_state = !IsGestureEventFromTouchpad(event) || - (gesture_event.data.scroll_end.inertial_phase == - blink::WebGestureEvent::kMomentumPhase); + bool reset_scroll_state = + !IsGestureEventFromTouchpad(event) || + (gesture_event.data.scroll_end.inertial_phase == + blink::WebGestureEvent::InertialPhaseState::kMomentum); if (reset_scroll_state) ResetScrollState();
diff --git a/content/browser/renderer_host/overscroll_controller_unittest.cc b/content/browser/renderer_host/overscroll_controller_unittest.cc index 25c2a238..41407c7 100644 --- a/content/browser/renderer_host/overscroll_controller_unittest.cc +++ b/content/browser/renderer_host/overscroll_controller_unittest.cc
@@ -73,7 +73,7 @@ event->SetTimeStamp(timestamp); if (inertial_update) { event->data.scroll_update.inertial_phase = - blink::WebGestureEvent::kMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kMomentum; } current_event_ = std::move(event); return controller_->WillHandleEvent(*current_event_);
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc index 1143fee4..4fcdf5f 100644 --- a/content/browser/renderer_host/render_widget_host_input_event_router.cc +++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -1245,7 +1245,7 @@ case blink::WebInputEvent::kGesturePinchEnd: DCHECK_EQ(blink::WebGestureDevice::kTouchscreen, event.SourceDevice()); scroll_end.data.scroll_end.inertial_phase = - blink::WebGestureEvent::kUnknownMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kUnknownMomentum; scroll_end.data.scroll_end.delta_units = blink::WebScrollGranularity::kScrollByPrecisePixel; break; @@ -1264,7 +1264,7 @@ blink::WebInputEvent::kNoModifiers, base::TimeTicks::Now(), source_device); scroll_end.data.scroll_end.inertial_phase = - blink::WebGestureEvent::kUnknownMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kUnknownMomentum; scroll_end.data.scroll_end.delta_units = blink::WebScrollGranularity::kScrollByPrecisePixel; view->ProcessGestureEvent(
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc index ab2373f..e315aba 100644 --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -1675,7 +1675,7 @@ if (gesture_event.GetType() == blink::WebInputEvent::kGestureScrollUpdate && gesture_event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase) { + blink::WebGestureEvent::InertialPhaseState::kMomentum) { host_->StopFling(); }
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index ab248a1..3765d844 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1001,7 +1001,7 @@ // https://crbug.com/797855 if (event_type == blink::WebInputEvent::kGestureScrollUpdate && event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase && + blink::WebGestureEvent::InertialPhaseState::kMomentum && overscroll_controller_->overscroll_mode() != OVERSCROLL_NONE) { StopFling(); }
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc index b065a25..90a2587 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -111,7 +111,7 @@ if (!processed && event.GetType() == blink::WebInputEvent::kGestureScrollUpdate && event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase && + blink::WebGestureEvent::InertialPhaseState::kMomentum && event.SourceDevice() != blink::WebGestureDevice::kSyntheticAutoscroll) { StopFling(); view_stopped_flinging_for_test_ = true;
diff --git a/content/browser/web_package/signed_exchange_handler_unittest.cc b/content/browser/web_package/signed_exchange_handler_unittest.cc index e2095ed..b2423f8 100644 --- a/content/browser/web_package/signed_exchange_handler_unittest.cc +++ b/content/browser/web_package/signed_exchange_handler_unittest.cc
@@ -39,6 +39,7 @@ #include "testing/gtest/include/gtest/gtest.h" using testing::_; +using testing::DoAll; using testing::ElementsAre; using testing::Property; using testing::Return;
diff --git a/content/browser/webauth/authenticator_common.cc b/content/browser/webauth/authenticator_common.cc index 9b695b9..21eca3df 100644 --- a/content/browser/webauth/authenticator_common.cc +++ b/content/browser/webauth/authenticator_common.cc
@@ -590,7 +590,7 @@ // requests if cryptotoken sends a new one such that requests from before // a navigation event do not prevent new requests. See // https://crbug.com/935480. - Cancel(); + CancelWithStatus(blink::mojom::AuthenticatorStatus::NOT_ALLOWED_ERROR); } else { std::move(callback).Run( blink::mojom::AuthenticatorStatus::PENDING_REQUEST, nullptr); @@ -768,7 +768,7 @@ weak_factory_.GetWeakPtr())); request_delegate_->RegisterActionCallbacks( - base::BindOnce(&AuthenticatorCommon::Cancel, + base::BindOnce(&AuthenticatorCommon::OnCancelFromUI, weak_factory_.GetWeakPtr()) /* cancel_callback */, base::BindRepeating( &device::FidoRequestHandlerBase::StartAuthenticatorRequest, @@ -800,7 +800,7 @@ // requests if cryptotoken sends a new one such that requests from before // a navigation event do not prevent new requests. See // https://crbug.com/935480. - Cancel(); + CancelWithStatus(blink::mojom::AuthenticatorStatus::NOT_ALLOWED_ERROR); } else { std::move(callback).Run( blink::mojom::AuthenticatorStatus::PENDING_REQUEST, nullptr); @@ -911,7 +911,7 @@ weak_factory_.GetWeakPtr())); request_delegate_->RegisterActionCallbacks( - base::BindOnce(&AuthenticatorCommon::Cancel, + base::BindOnce(&AuthenticatorCommon::OnCancelFromUI, weak_factory_.GetWeakPtr()) /* cancel_callback */, base::BindRepeating( &device::FidoRequestHandlerBase::StartAuthenticatorRequest, @@ -978,6 +978,10 @@ #endif } +void AuthenticatorCommon::Cancel() { + CancelWithStatus(blink::mojom::AuthenticatorStatus::ABORT_ERROR); +} + // Callback to handle the async registration response from a U2fDevice. void AuthenticatorCommon::OnRegisterResponse( device::FidoReturnCode status_code, @@ -1340,22 +1344,9 @@ request_->CancelActiveAuthenticators(); return; } - - FailWithErrorAndCleanup(); + CancelWithStatus(error_awaiting_user_acknowledgement_); } // namespace content -void AuthenticatorCommon::FailWithErrorAndCleanup() { - DCHECK(make_credential_response_callback_ || - get_assertion_response_callback_); - if (make_credential_response_callback_) { - InvokeCallbackAndCleanup(std::move(make_credential_response_callback_), - error_awaiting_user_acknowledgement_); - } else if (get_assertion_response_callback_) { - InvokeCallbackAndCleanup(std::move(get_assertion_response_callback_), - error_awaiting_user_acknowledgement_); - } -} - // TODO(crbug.com/814418): Add web tests to verify timeouts are // indistinguishable from NOT_ALLOWED_ERROR cases. void AuthenticatorCommon::OnTimeout() { @@ -1370,12 +1361,22 @@ AuthenticatorRequestClientDelegate::InterestingFailureReason::kTimeout); } -void AuthenticatorCommon::Cancel() { +void AuthenticatorCommon::CancelWithStatus( + blink::mojom::AuthenticatorStatus status) { // If response callback is invoked already, then ignore cancel request. if (!make_credential_response_callback_ && !get_assertion_response_callback_) return; + if (make_credential_response_callback_) { + InvokeCallbackAndCleanup(std::move(make_credential_response_callback_), + status); + } else if (get_assertion_response_callback_) { + InvokeCallbackAndCleanup(std::move(get_assertion_response_callback_), + status); + } +} - FailWithErrorAndCleanup(); +void AuthenticatorCommon::OnCancelFromUI() { + CancelWithStatus(error_awaiting_user_acknowledgement_); } void AuthenticatorCommon::InvokeCallbackAndCleanup(
diff --git a/content/browser/webauth/authenticator_common.h b/content/browser/webauth/authenticator_common.h index b7b600d..9bd5a10b 100644 --- a/content/browser/webauth/authenticator_common.h +++ b/content/browser/webauth/authenticator_common.h
@@ -83,6 +83,7 @@ void IsUserVerifyingPlatformAuthenticatorAvailable( blink::mojom::Authenticator:: IsUserVerifyingPlatformAuthenticatorAvailableCallback callback); + void Cancel(); // Synchronous implementation of // IsUserVerifyingPlatformAuthenticatorAvailable. @@ -149,12 +150,12 @@ response_data, base::Optional<device::FidoTransportProtocol> transport_used); - void FailWithErrorAndCleanup(); - // Runs when timer expires and cancels all issued requests to a U2fDevice. void OnTimeout(); + // Cancels the currently pending request (if any) with the supplied status. + void CancelWithStatus(blink::mojom::AuthenticatorStatus status); // Runs when the user cancels WebAuthN request via UI dialog. - void Cancel(); + void OnCancelFromUI(); // Called when a GetAssertion has completed, either because an allow_list was // used and so an answer is returned directly, or because the user selected an
diff --git a/content/browser/webauth/authenticator_impl.cc b/content/browser/webauth/authenticator_impl.cc index 3b1488d..fa58ff2 100644 --- a/content/browser/webauth/authenticator_impl.cc +++ b/content/browser/webauth/authenticator_impl.cc
@@ -77,6 +77,10 @@ std::move(callback)); } +void AuthenticatorImpl::Cancel() { + authenticator_common_->Cancel(); +} + void AuthenticatorImpl::DidFinishNavigation( NavigationHandle* navigation_handle) { // If the RenderFrameHost itself is navigated then this function will cause
diff --git a/content/browser/webauth/authenticator_impl.h b/content/browser/webauth/authenticator_impl.h index aaf01bd..1f1a0af 100644 --- a/content/browser/webauth/authenticator_impl.h +++ b/content/browser/webauth/authenticator_impl.h
@@ -79,6 +79,7 @@ GetAssertionCallback callback) override; void IsUserVerifyingPlatformAuthenticatorAvailable( IsUserVerifyingPlatformAuthenticatorAvailableCallback callback) override; + void Cancel() override; // WebContentsObserver: void DidFinishNavigation(NavigationHandle* navigation_handle) override;
diff --git a/content/browser/webauth/webauth_browsertest.cc b/content/browser/webauth/webauth_browsertest.cc index 3d48996..138f417d 100644 --- a/content/browser/webauth/webauth_browsertest.cc +++ b/content/browser/webauth/webauth_browsertest.cc
@@ -97,6 +97,9 @@ "webauth: InvalidStateError: The user attempted to use an authenticator " "that recognized none of the provided credentials."; +constexpr char kAbortErrorMessage[] = + "webauth: AbortError: The user aborted a request."; + // Templates to be used with base::ReplaceStringPlaceholders. Can be // modified to include up to 9 replacements. The default values for // any additional replacements added should also be added to the @@ -123,6 +126,29 @@ " e => window.domAutomationController.send(" " 'webauth: ' + e.toString()));"; +constexpr char kCreatePublicKeyWithAbortSignalTemplate[] = + "navigator.credentials.create({ publicKey: {" + " challenge: new TextEncoder().encode('climb a mountain')," + " rp: { id: '$3', name: 'Acme', icon: '$7'}," + " user: { " + " id: new TextEncoder().encode('1098237235409872')," + " name: 'avery.a.jones@example.com'," + " displayName: 'Avery A. Jones', " + " icon: '$8'}," + " pubKeyCredParams: [{ type: 'public-key', alg: '$4'}]," + " timeout: 1000," + " excludeCredentials: []," + " authenticatorSelection: {" + " requireResidentKey: $1," + " userVerification: '$2'," + " authenticatorAttachment: '$5'," + " }," + " attestation: '$6'," + "}, signal: $9}" + ").then(c => window.domAutomationController.send('webauth: OK')," + " e => window.domAutomationController.send(" + " 'webauth: ' + e.toString()));"; + constexpr char kPlatform[] = "platform"; constexpr char kCrossPlatform[] = "cross-platform"; constexpr char kPreferredVerification[] = "preferred"; @@ -138,6 +164,7 @@ const char* attestation = "none"; const char* rp_icon = "https://pics.acme.com/00/p/aBjjjpqPb.png"; const char* user_icon = "https://pics.acme.com/00/p/aBjjjpqPb.png"; + const char* signal = ""; }; std::string BuildCreateCallWithParameters(const CreateParameters& parameters) { @@ -150,8 +177,13 @@ substitutions.push_back(parameters.attestation); substitutions.push_back(parameters.rp_icon); substitutions.push_back(parameters.user_icon); - return base::ReplaceStringPlaceholders(kCreatePublicKeyTemplate, - substitutions, nullptr); + if (strlen(parameters.signal) == 0) { + return base::ReplaceStringPlaceholders(kCreatePublicKeyTemplate, + substitutions, nullptr); + } + substitutions.push_back(parameters.signal); + return base::ReplaceStringPlaceholders( + kCreatePublicKeyWithAbortSignalTemplate, substitutions, nullptr); } constexpr char kGetPublicKeyTemplate[] = @@ -165,6 +197,17 @@ " e => window.domAutomationController.send(" " 'webauth: ' + e.toString()));"; +constexpr char kGetPublicKeyWithAbortSignalTemplate[] = + "navigator.credentials.get({ publicKey: {" + " challenge: new TextEncoder().encode('climb a mountain')," + " rpId: 'acme.com'," + " timeout: 1000," + " userVerification: '$1'," + " $2}," + " signal: $3" + "}).catch(c => window.domAutomationController.send(" + " 'webauth: ' + c.toString()));"; + // Default values for kGetPublicKeyTemplate. struct GetParameters { const char* user_verification = kPreferredVerification; @@ -172,14 +215,20 @@ "allowCredentials: [{ type: 'public-key'," " id: new TextEncoder().encode('allowedCredential')," " transports: ['usb', 'nfc', 'ble']}]"; + const char* signal = ""; }; std::string BuildGetCallWithParameters(const GetParameters& parameters) { - std::vector<std::string> substititions; - substititions.push_back(parameters.user_verification); - substititions.push_back(parameters.allow_credentials); - return base::ReplaceStringPlaceholders(kGetPublicKeyTemplate, substititions, - nullptr); + std::vector<std::string> substitutions; + substitutions.push_back(parameters.user_verification); + substitutions.push_back(parameters.allow_credentials); + if (strlen(parameters.signal) == 0) { + return base::ReplaceStringPlaceholders(kGetPublicKeyTemplate, substitutions, + nullptr); + } + substitutions.push_back(parameters.signal); + return base::ReplaceStringPlaceholders(kGetPublicKeyWithAbortSignalTemplate, + substitutions, nullptr); } // Helper class that executes the given |closure| the very last moment before @@ -825,6 +874,63 @@ ASSERT_EQ(kTimeoutErrorMessage, result); } } +// Tests that when navigator.credentials.create() is called with abort +// signal's aborted flag not set, we get a SUCCESS. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + CreatePublicKeyCredentialWithAbortNotSet) { + for (const auto protocol : kAllProtocols) { + device::test::ScopedVirtualFidoDevice virtual_device; + virtual_device.SetSupportedProtocol(protocol); + + CreateParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + + BuildCreateCallWithParameters(parameters); + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ("webauth: OK", result); + } +} + +// Tests that when navigator.credentials.create() is called with abort +// signal's aborted flag set before sending request, we get an AbortError. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + CreatePublicKeyCredentialWithAbortSetBeforeCreate) { + CreateParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + "authAbortController.abort();" + + BuildCreateCallWithParameters(parameters); + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ(kAbortErrorMessage, result.substr(0, strlen(kAbortErrorMessage))); +} + +// Tests that when navigator.credentials.create() is called with abort +// signal's aborted flag set after sending request, we get an AbortError. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + CreatePublicKeyCredentialWithAbortSetAfterCreate) { + CreateParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + + BuildCreateCallWithParameters(parameters) + + "authAbortController.abort();"; + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ(kAbortErrorMessage, result.substr(0, strlen(kAbortErrorMessage))); +} // Tests that when navigator.credentials.get() is called with user verification // required, we get an InvalidStateError because the virtual device isn't @@ -861,6 +967,64 @@ ASSERT_EQ(kResidentCredentialsErrorMessage, result); } +// Tests that when navigator.credentials.get() is called with abort +// signal's aborted flag not set, we get a kInvalidStateError, because the +// virtual device does not have any registered credentials. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + GetPublicKeyCredentialWithAbortNotSet) { + for (const auto protocol : kAllProtocols) { + device::test::ScopedVirtualFidoDevice virtual_device; + virtual_device.SetSupportedProtocol(protocol); + + GetParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + + BuildGetCallWithParameters(parameters); + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ(kInvalidStateError, result); + } +} + +// Tests that when navigator.credentials.get() is called with abort +// signal's aborted flag set before sending request, we get an AbortError. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + GetPublicKeyCredentialWithAbortSetBeforeGet) { + GetParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + "authAbortController.abort();" + + BuildGetCallWithParameters(parameters); + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ(kAbortErrorMessage, result.substr(0, strlen(kAbortErrorMessage))); +} + +// Tests that when navigator.credentials.get() is called with abort +// signal's aborted flag set after sending request, we get an AbortError. +IN_PROC_BROWSER_TEST_F(WebAuthJavascriptClientBrowserTest, + GetPublicKeyCredentialWithAbortSetAfterGet) { + GetParameters parameters; + parameters.signal = "authAbortSignal"; + std::string result; + std::string script = + "authAbortController = new AbortController();" + "authAbortSignal = authAbortController.signal;" + + BuildGetCallWithParameters(parameters) + "authAbortController.abort();"; + + ASSERT_TRUE(content::ExecuteScriptAndExtractString( + shell()->web_contents()->GetMainFrame(), script, &result)); + ASSERT_EQ(kAbortErrorMessage, result.substr(0, strlen(kAbortErrorMessage))); +} + // WebAuthBrowserBleDisabledTest // ----------------------------------------------
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn index 46d8180..d696471 100644 --- a/content/child/BUILD.gn +++ b/content/child/BUILD.gn
@@ -128,18 +128,15 @@ "//v8", ] - if (!use_default_render_theme) { - sources -= [ - "webthemeengine_impl_default.cc", - "webthemeengine_impl_default.h", - ] - } - if (is_android) { deps += [ "//third_party/android_sdk:cpu_features" ] if (notouch_build) { configs += [ ":notouch_config" ] } + sources -= [ + "webthemeengine_impl_default.cc", + "webthemeengine_impl_default.h", + ] } if (is_linux) {
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc index e65e362..3acf8c7 100644 --- a/content/child/blink_platform_impl.cc +++ b/content/child/blink_platform_impl.cc
@@ -52,6 +52,16 @@ #include "ui/base/layout.h" #include "ui/events/gestures/blink/web_gesture_curve_impl.h" +#if defined(OS_ANDROID) +#include "content/child/webthemeengine_impl_android.h" +#else +#include "content/child/webthemeengine_impl_default.h" +#endif + +#if defined(OS_MACOSX) +#include "content/child/webthemeengine_impl_mac.h" +#endif + using blink::WebData; using blink::WebLocalizedString; using blink::WebString; @@ -61,7 +71,19 @@ namespace content { -static int ToMessageID(WebLocalizedString::Name name) { +namespace { + +std::unique_ptr<blink::WebThemeEngine> GetWebThemeEngine() { +#if defined(OS_ANDROID) + return std::make_unique<WebThemeEngineAndroid>(); +#elif defined(OS_MACOSX) + return std::make_unique<WebThemeEngineMac>(); +#else + return std::make_unique<WebThemeEngineDefault>(); +#endif +} + +int ToMessageID(WebLocalizedString::Name name) { switch (name) { case WebLocalizedString::kAXAMPMFieldText: return IDS_AX_AM_PM_FIELD_TEXT; @@ -319,30 +341,6 @@ return -1; } -// TODO(skyostil): Ensure that we always have an active task runner when -// constructing the platform. -BlinkPlatformImpl::BlinkPlatformImpl() - : BlinkPlatformImpl(base::ThreadTaskRunnerHandle::IsSet() - ? base::ThreadTaskRunnerHandle::Get() - : nullptr, - nullptr) {} - -BlinkPlatformImpl::BlinkPlatformImpl( - scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner, - scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner) - : main_thread_task_runner_(std::move(main_thread_task_runner)), - io_thread_task_runner_(std::move(io_thread_task_runner)) {} - -BlinkPlatformImpl::~BlinkPlatformImpl() { -} - -void BlinkPlatformImpl::RecordAction(const blink::UserMetricsAction& name) { - if (ChildThread* child_thread = ChildThread::Get()) - child_thread->RecordComputedAction(name.Action()); -} - -namespace { - WebData loadAudioSpatializationResource(const char* name) { #ifdef IDR_AUDIO_SPATIALIZATION_COMPOSITE if (!strcmp(name, "Composite")) { @@ -529,6 +527,28 @@ } // namespace +// TODO(skyostil): Ensure that we always have an active task runner when +// constructing the platform. +BlinkPlatformImpl::BlinkPlatformImpl() + : BlinkPlatformImpl(base::ThreadTaskRunnerHandle::IsSet() + ? base::ThreadTaskRunnerHandle::Get() + : nullptr, + nullptr) {} + +BlinkPlatformImpl::BlinkPlatformImpl( + scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner, + scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner) + : main_thread_task_runner_(std::move(main_thread_task_runner)), + io_thread_task_runner_(std::move(io_thread_task_runner)), + native_theme_engine_(GetWebThemeEngine()) {} + +BlinkPlatformImpl::~BlinkPlatformImpl() {} + +void BlinkPlatformImpl::RecordAction(const blink::UserMetricsAction& name) { + if (ChildThread* child_thread = ChildThread::Get()) + child_thread->RecordComputedAction(name.Action()); +} + WebData BlinkPlatformImpl::GetDataResource(const char* name) { // Some clients will call into this method with an empty |name| when they have // optional resources. For example, the PopupMenuChromium code can have icons @@ -626,7 +646,7 @@ } WebThemeEngine* BlinkPlatformImpl::ThemeEngine() { - return &native_theme_engine_; + return native_theme_engine_.get(); } base::File BlinkPlatformImpl::DatabaseOpenFile(
diff --git a/content/child/blink_platform_impl.h b/content/child/blink_platform_impl.h index aa60edd..f114331 100644 --- a/content/child/blink_platform_impl.h +++ b/content/child/blink_platform_impl.h
@@ -23,16 +23,6 @@ #include "third_party/blink/public/public_buildflags.h" #include "ui/base/layout.h" -#if BUILDFLAG(USE_DEFAULT_RENDER_THEME) -#include "content/child/webthemeengine_impl_default.h" -#elif defined(OS_WIN) -#include "content/child/webthemeengine_impl_win.h" -#elif defined(OS_MACOSX) -#include "content/child/webthemeengine_impl_mac.h" -#elif defined(OS_ANDROID) -#include "content/child/webthemeengine_impl_android.h" -#endif - namespace content { class WebCryptoImpl; @@ -86,7 +76,7 @@ private: scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner_; - WebThemeEngineImpl native_theme_engine_; + std::unique_ptr<blink::WebThemeEngine> native_theme_engine_; webcrypto::WebCryptoImpl web_crypto_; media::WebMediaCapabilitiesClientImpl media_capabilities_client_; };
diff --git a/content/child/webthemeengine_impl_android.cc b/content/child/webthemeengine_impl_android.cc index f4602f53..e767d24 100644 --- a/content/child/webthemeengine_impl_android.cc +++ b/content/child/webthemeengine_impl_android.cc
@@ -166,7 +166,9 @@ } } -blink::WebSize WebThemeEngineImpl::GetSize(WebThemeEngine::Part part) { +WebThemeEngineAndroid::~WebThemeEngineAndroid() = default; + +blink::WebSize WebThemeEngineAndroid::GetSize(WebThemeEngine::Part part) { switch (part) { case WebThemeEngine::kPartScrollbarHorizontalThumb: case WebThemeEngine::kPartScrollbarVerticalThumb: { @@ -184,7 +186,7 @@ } } -void WebThemeEngineImpl::GetOverlayScrollbarStyle(ScrollbarStyle* style) { +void WebThemeEngineAndroid::GetOverlayScrollbarStyle(ScrollbarStyle* style) { // TODO(bokan): Android scrollbars on non-composited scrollers don't // currently fade out so the fadeOutDuration and Delay Now that this has // been added into Blink for other platforms we should plumb that through for @@ -202,7 +204,7 @@ } } -void WebThemeEngineImpl::Paint( +void WebThemeEngineAndroid::Paint( cc::PaintCanvas* canvas, WebThemeEngine::Part part, WebThemeEngine::State state,
diff --git a/content/child/webthemeengine_impl_android.h b/content/child/webthemeengine_impl_android.h index ede02ba..9fb867bf 100644 --- a/content/child/webthemeengine_impl_android.h +++ b/content/child/webthemeengine_impl_android.h
@@ -9,9 +9,10 @@ namespace content { -class WebThemeEngineImpl : public blink::WebThemeEngine { +class WebThemeEngineAndroid : public blink::WebThemeEngine { public: // WebThemeEngine methods: + ~WebThemeEngineAndroid() override; blink::WebSize GetSize(blink::WebThemeEngine::Part) override; void GetOverlayScrollbarStyle( blink::WebThemeEngine::ScrollbarStyle*) override;
diff --git a/content/child/webthemeengine_impl_default.cc b/content/child/webthemeengine_impl_default.cc index ecda4fe..9aba2a5 100644 --- a/content/child/webthemeengine_impl_default.cc +++ b/content/child/webthemeengine_impl_default.cc
@@ -203,7 +203,9 @@ } } -blink::WebSize WebThemeEngineImpl::GetSize(WebThemeEngine::Part part) { +WebThemeEngineDefault::~WebThemeEngineDefault() = default; + +blink::WebSize WebThemeEngineDefault::GetSize(WebThemeEngine::Part part) { ui::NativeTheme::ExtraParams extra; ui::NativeTheme::Part native_theme_part = NativeThemePart(part); #if defined(OS_WIN) @@ -228,7 +230,7 @@ native_theme_part, ui::NativeTheme::kNormal, extra); } -void WebThemeEngineImpl::Paint( +void WebThemeEngineDefault::Paint( cc::PaintCanvas* canvas, WebThemeEngine::Part part, WebThemeEngine::State state, @@ -242,7 +244,7 @@ native_theme_extra_params); } -void WebThemeEngineImpl::GetOverlayScrollbarStyle(ScrollbarStyle* style) { +void WebThemeEngineDefault::GetOverlayScrollbarStyle(ScrollbarStyle* style) { style->fade_out_delay = ui::kOverlayScrollbarFadeDelay; style->fade_out_duration = ui::kOverlayScrollbarFadeDuration; // The other fields in this struct are used only on Android to draw solid @@ -250,24 +252,24 @@ // NativeTheme so these fields are unused. } -bool WebThemeEngineImpl::SupportsNinePatch(Part part) const { +bool WebThemeEngineDefault::SupportsNinePatch(Part part) const { return ui::NativeTheme::GetInstanceForWeb()->SupportsNinePatch( NativeThemePart(part)); } -blink::WebSize WebThemeEngineImpl::NinePatchCanvasSize(Part part) const { +blink::WebSize WebThemeEngineDefault::NinePatchCanvasSize(Part part) const { return ui::NativeTheme::GetInstanceForWeb()->GetNinePatchCanvasSize( NativeThemePart(part)); } -blink::WebRect WebThemeEngineImpl::NinePatchAperture(Part part) const { +blink::WebRect WebThemeEngineDefault::NinePatchAperture(Part part) const { return ui::NativeTheme::GetInstanceForWeb()->GetNinePatchAperture( NativeThemePart(part)); } #if defined(OS_WIN) // static -void WebThemeEngineImpl::cacheScrollBarMetrics( +void WebThemeEngineDefault::cacheScrollBarMetrics( int32_t vertical_scroll_bar_width, int32_t horizontal_scroll_bar_height, int32_t vertical_arrow_bitmap_height,
diff --git a/content/child/webthemeengine_impl_default.h b/content/child/webthemeengine_impl_default.h index ebe4c36..51e07200 100644 --- a/content/child/webthemeengine_impl_default.h +++ b/content/child/webthemeengine_impl_default.h
@@ -12,9 +12,10 @@ namespace content { -class WebThemeEngineImpl : public blink::WebThemeEngine { +class WebThemeEngineDefault : public blink::WebThemeEngine { public: // WebThemeEngine methods: + ~WebThemeEngineDefault() override; blink::WebSize GetSize(blink::WebThemeEngine::Part) override; void Paint(cc::PaintCanvas* canvas, blink::WebThemeEngine::Part part,
diff --git a/content/child/webthemeengine_impl_mac.h b/content/child/webthemeengine_impl_mac.h index e63b62f..29e31609 100644 --- a/content/child/webthemeengine_impl_mac.h +++ b/content/child/webthemeengine_impl_mac.h
@@ -9,7 +9,9 @@ namespace content { -class WebThemeEngineImpl : public blink::WebThemeEngine { +class WebThemeEngineMac : public blink::WebThemeEngine { + public: + ~WebThemeEngineMac() override {} }; } // namespace content
diff --git a/content/common/input_messages.h b/content/common/input_messages.h index 1c8d34d..d27d912 100644 --- a/content/common/input_messages.h +++ b/content/common/input_messages.h
@@ -74,9 +74,8 @@ blink::WebGestureDevice::kMaxValue) IPC_ENUM_TRAITS_MAX_VALUE(blink::WebInputEvent::DispatchType, blink::WebInputEvent::DispatchType::kLastDispatchType) -IPC_ENUM_TRAITS_MAX_VALUE( - blink::WebGestureEvent::InertialPhaseState, - blink::WebGestureEvent::InertialPhaseState::kLastPhase) +IPC_ENUM_TRAITS_MAX_VALUE(blink::WebGestureEvent::InertialPhaseState, + blink::WebGestureEvent::InertialPhaseState::kMaxValue) IPC_ENUM_TRAITS_MAX_VALUE(blink::WebTouchPoint::State, blink::WebTouchPoint::State::kStateMax) IPC_ENUM_TRAITS_MAX_VALUE(
diff --git a/content/public/browser/browser_context.h b/content/public/browser/browser_context.h index c7ea6276..9a7d9d2 100644 --- a/content/public/browser/browser_context.h +++ b/content/public/browser/browser_context.h
@@ -181,6 +181,7 @@ BrowserContext* browser_context, const GURL& origin, int64_t service_worker_registration_id, + const std::string& message_id, base::Optional<std::string> payload, const base::Callback<void(blink::mojom::PushDeliveryStatus)>& callback);
diff --git a/content/public/browser/devtools_background_services_context.h b/content/public/browser/devtools_background_services_context.h index 1752397..b85e14a 100644 --- a/content/public/browser/devtools_background_services_context.h +++ b/content/public/browser/devtools_background_services_context.h
@@ -21,9 +21,10 @@ enum class DevToolsBackgroundService { kBackgroundFetch = 2, kBackgroundSync = 3, + kPushMessaging = 4, // Keep at the end. - kMaxValue = kBackgroundSync, + kMaxValue = kPushMessaging, }; // This class is responsible for persisting the debugging events for the
diff --git a/content/renderer/media/webrtc/rtc_video_encoder.cc b/content/renderer/media/webrtc/rtc_video_encoder.cc index e9b5604..f2e58cf 100644 --- a/content/renderer/media/webrtc/rtc_video_encoder.cc +++ b/content/renderer/media/webrtc/rtc_video_encoder.cc
@@ -87,8 +87,6 @@ for (size_t i = 0; i < nalu_vector.size(); ++i) { header->fragmentationOffset[i] = nalu_vector[i].data - data; header->fragmentationLength[i] = nalu_vector[i].size; - header->fragmentationPlType[i] = 0; - header->fragmentationTimeDiff[i] = 0; } return true; } @@ -785,8 +783,6 @@ header.VerifyAndAllocateFragmentationHeader(1); header.fragmentationOffset[0] = 0; header.fragmentationLength[0] = image.size(); - header.fragmentationPlType[0] = 0; - header.fragmentationTimeDiff[0] = 0; break; case webrtc::kVideoCodecH264: if (!GetRTPFragmentationHeaderH264(&header, image.data(), image.size())) {
diff --git a/content/renderer/render_view_win.cc b/content/renderer/render_view_win.cc index 5fe672aa..40bf7a6 100644 --- a/content/renderer/render_view_win.cc +++ b/content/renderer/render_view_win.cc
@@ -42,7 +42,7 @@ } void RenderViewImpl::UpdateThemePrefs() { - WebThemeEngineImpl::cacheScrollBarMetrics( + WebThemeEngineDefault::cacheScrollBarMetrics( renderer_preferences_.vertical_scroll_bar_width_in_dips, renderer_preferences_.horizontal_scroll_bar_height_in_dips, renderer_preferences_.arrow_bitmap_height_vertical_scroll_bar_in_dips,
diff --git a/content/shell/test_runner/mock_web_theme_engine.h b/content/shell/test_runner/mock_web_theme_engine.h index eb0fc5a..1a56a5cf 100644 --- a/content/shell/test_runner/mock_web_theme_engine.h +++ b/content/shell/test_runner/mock_web_theme_engine.h
@@ -12,7 +12,7 @@ class MockWebThemeEngine : public blink::WebThemeEngine { public: - virtual ~MockWebThemeEngine() {} + ~MockWebThemeEngine() override {} #if !defined(OS_MACOSX) // blink::WebThemeEngine:
diff --git a/content/test/data/accessibility/event/aria-disabled-changed-expected-uia-win.txt b/content/test/data/accessibility/event/aria-disabled-changed-expected-uia-win.txt new file mode 100644 index 0000000..699b788 --- /dev/null +++ b/content/test/data/accessibility/event/aria-disabled-changed-expected-uia-win.txt
@@ -0,0 +1,16 @@ +AriaProperties changed on role=checkbox, name=checkbox1 +AriaProperties changed on role=checkbox, name=checkbox2 +AriaProperties changed on role=group, name=fieldset0 +AriaProperties changed on role=group, name=fieldset1 +AriaProperties changed on role=radio, name=radio0 +AriaProperties changed on role=radio, name=radio1 +IsEnabled changed on role=checkbox, name=checkbox1 +IsEnabled changed on role=checkbox, name=checkbox2 +IsEnabled changed on role=group, name=fieldset0 +IsEnabled changed on role=group, name=fieldset1 +IsEnabled changed on role=radio, name=radio0 +IsEnabled changed on role=radio, name=radio1 +ValueIsReadOnly changed on role=checkbox, name=checkbox1 +ValueIsReadOnly changed on role=checkbox, name=checkbox2 +ValueIsReadOnly changed on role=radio, name=radio0 +ValueIsReadOnly changed on role=radio, name=radio1
diff --git a/content/test/data/accessibility/event/aria-disabled-changed-expected-win.txt b/content/test/data/accessibility/event/aria-disabled-changed-expected-win.txt index 88f48223..09bc419 100644 --- a/content/test/data/accessibility/event/aria-disabled-changed-expected-win.txt +++ b/content/test/data/accessibility/event/aria-disabled-changed-expected-win.txt
@@ -1,3 +1,6 @@ -EVENT_OBJECT_STATECHANGE on role=ROLE_SYSTEM_CHECKBUTTON UNAVAILABLE IA2_STATE_CHECKABLE -EVENT_OBJECT_STATECHANGE on role=ROLE_SYSTEM_RADIOBUTTON IA2_STATE_CHECKABLE -EVENT_OBJECT_STATECHANGE on role=ROLE_SYSTEM_GROUPING \ No newline at end of file +EVENT_OBJECT_STATECHANGE on <div#checkbox1> role=ROLE_SYSTEM_CHECKBUTTON name="checkbox1" UNAVAILABLE IA2_STATE_CHECKABLE +EVENT_OBJECT_STATECHANGE on <div#checkbox2> role=ROLE_SYSTEM_CHECKBUTTON name="checkbox2" IA2_STATE_CHECKABLE +EVENT_OBJECT_STATECHANGE on <div#radio0> role=ROLE_SYSTEM_RADIOBUTTON name="radio0" IA2_STATE_CHECKABLE PosInSet=1 SetSize=1 +EVENT_OBJECT_STATECHANGE on <div#radio1> role=ROLE_SYSTEM_RADIOBUTTON name="radio1" IA2_STATE_CHECKABLE PosInSet=1 SetSize=1 +EVENT_OBJECT_STATECHANGE on <fieldset#fieldset0> role=ROLE_SYSTEM_GROUPING name="fieldset0" +EVENT_OBJECT_STATECHANGE on <fieldset#fieldset1> role=ROLE_SYSTEM_GROUPING name="fieldset1"
diff --git a/content/test/data/accessibility/event/aria-disabled-changed.html b/content/test/data/accessibility/event/aria-disabled-changed.html index 6c2e443..6b6debd 100644 --- a/content/test/data/accessibility/event/aria-disabled-changed.html +++ b/content/test/data/accessibility/event/aria-disabled-changed.html
@@ -1,18 +1,49 @@ -<!DOCTYPE html> <!-- @MAC-ALLOW:AXEnabled* @WIN-ALLOW:UNAVAILABLE --> +<!DOCTYPE html> <form> - <div role="checkbox"></div> - <fieldset aria-disabled="true"> - <div role="radio" aria-disabled="true"></div> + <div id="checkbox0" aria-label="checkbox0" role="checkbox"></div> + <div id="checkbox1" aria-label="checkbox1" role="checkbox"></div> + <div id="checkbox2" aria-label="checkbox2" role="checkbox" aria-disabled="true"></div> + <fieldset id="fieldset0" aria-label="fieldset0" aria-disabled="true"> + <div id="radio0" aria-label="radio0" role="radio" aria-disabled="true"></div> + </fieldset> + <fieldset id="fieldset1" aria-label="fieldset1" aria-disabled="true"> + <div id="radio1" aria-label="radio1" role="radio" aria-disabled="true"></div> + </fieldset> + <fieldset id="fieldset2" aria-label="fieldset2"> + <div id="radio2" aria-label="radio2" role="radio"></div> </fieldset> </form> <script> function go() { - document.querySelector('div[role=checkbox]').setAttribute('aria-disabled', true); - document.querySelector('div[role=radio]').setAttribute('aria-disabled', false); - document.querySelector('fieldset').setAttribute('aria-disabled', false); + // Set aria-disabled on checkbox from default false->false; should not fire an event. + document.getElementById('checkbox0').setAttribute('aria-disabled', false); + + // Set aria-disabled on checkbox from default false->true; should fire an event. + document.getElementById('checkbox1').setAttribute('aria-disabled', true); + + // Set aria-disabled on checkbox from true->[removed]; should fire an event. + document.getElementById('checkbox2').removeAttribute('aria-disabled'); + + // Set aria-disabled on radio from true->false; should fire an event. + document.getElementById('radio0').setAttribute('aria-disabled', false); + + // Set aria-disabled on fieldset from true->false; should fire an event. + document.getElementById('fieldset0').setAttribute('aria-disabled', false); + + // Set aria-disabled on radio from true->[removed]; should fire an event. + document.getElementById('radio1').setAttribute('aria-disabled', false); + + // Set aria-disabled on fieldset from true->[removed]; should fire an event. + document.getElementById('fieldset1').setAttribute('aria-disabled', false); + + // Set aria-disabled on radio from default false->false; should not fire an event. + document.getElementById('radio2').setAttribute('aria-disabled', false); + + // Set aria-disabled on fieldset from default false->false; should not fire an event. + document.getElementById('fieldset2').setAttribute('aria-disabled', false); } </script>
diff --git a/content/test/data/accessibility/event/aria-level-changed-expected-uia-win.txt b/content/test/data/accessibility/event/aria-level-changed-expected-uia-win.txt new file mode 100644 index 0000000..4d4f9cb --- /dev/null +++ b/content/test/data/accessibility/event/aria-level-changed-expected-uia-win.txt
@@ -0,0 +1,6 @@ +AriaProperties changed on role=heading, name=Item2 +AriaProperties changed on role=heading, name=Item3 +AriaProperties changed on role=heading, name=Item4 +Level changed on role=heading, name=Item2 +Level changed on role=heading, name=Item3 +Level changed on role=heading, name=Item4
diff --git a/content/test/data/accessibility/event/aria-level-changed-expected-uia-win7.txt b/content/test/data/accessibility/event/aria-level-changed-expected-uia-win7.txt new file mode 100644 index 0000000..073c1f8 --- /dev/null +++ b/content/test/data/accessibility/event/aria-level-changed-expected-uia-win7.txt
@@ -0,0 +1,3 @@ +AriaProperties changed on role=heading, name=Item2 +AriaProperties changed on role=heading, name=Item3 +AriaProperties changed on role=heading, name=Item4
diff --git a/content/test/data/accessibility/event/aria-level-changed.html b/content/test/data/accessibility/event/aria-level-changed.html new file mode 100644 index 0000000..93ebc35 --- /dev/null +++ b/content/test/data/accessibility/event/aria-level-changed.html
@@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> +<body> + <div id="d1" role="heading">Item1</div> + <div id="d2" role="heading">Item2</div> + <div id="d3" role="heading" aria-level="3">Item3</div> + <div id="d4" role="heading" aria-level="3">Item4</div> + <script> + function go() { + // Set aria-level from default '2'->'2'; should not fire an event. + document.getElementById('d1').setAttribute('aria-level', '2'); + + // Set aria-level from default '2'->'3'; should fire an event. + document.getElementById('d2').setAttribute('aria-level', '3'); + + // Set aria-level from '3'->'2'; should fire an event. + document.getElementById('d3').setAttribute('aria-level', '2'); + + // Set aria-level from '3'->[removed]; should fire an event. + document.getElementById('d4').removeAttribute('aria-level'); + } + </script> +</body> +</html>
diff --git a/content/test/data/accessibility/event/aria-live-changed-expected-uia-win.txt b/content/test/data/accessibility/event/aria-live-changed-expected-uia-win.txt new file mode 100644 index 0000000..a0de0e38 --- /dev/null +++ b/content/test/data/accessibility/event/aria-live-changed-expected-uia-win.txt
@@ -0,0 +1,6 @@ +AriaProperties changed on role=heading, name=Item2 +AriaProperties changed on role=heading, name=Item3 +AriaProperties changed on role=heading, name=Item4 +LiveSetting changed on role=heading, name=Item2 +LiveSetting changed on role=heading, name=Item3 +LiveSetting changed on role=heading, name=Item4
diff --git a/content/test/data/accessibility/event/aria-live-changed-expected-uia-win7.txt b/content/test/data/accessibility/event/aria-live-changed-expected-uia-win7.txt new file mode 100644 index 0000000..073c1f8 --- /dev/null +++ b/content/test/data/accessibility/event/aria-live-changed-expected-uia-win7.txt
@@ -0,0 +1,3 @@ +AriaProperties changed on role=heading, name=Item2 +AriaProperties changed on role=heading, name=Item3 +AriaProperties changed on role=heading, name=Item4
diff --git a/content/test/data/accessibility/event/aria-live-changed.html b/content/test/data/accessibility/event/aria-live-changed.html new file mode 100644 index 0000000..40a01b9 --- /dev/null +++ b/content/test/data/accessibility/event/aria-live-changed.html
@@ -0,0 +1,30 @@ +<!-- +@UIA-WIN-DENY:* +@UIA-WIN-ALLOW:AriaProperties* +@UIA-WIN-ALLOW:LiveSetting* +--> +<!DOCTYPE html> +<html> +<body> + <h4 id="d1" aria-live="off">Item1</h4> + <h4 id="d2" aria-live="polite">Item2</h4> + <h4 id="d3" aria-live="polite">Item3</h4> + <h4 id="d4">Item4</h4> + <button onclick="go()">go</button> + <script> + function go() { + // set live from 'off' to 'off', so this shouldn't fire an event + document.getElementById('d1').setAttribute('aria-live', 'off'); + + // set live from 'polite'->'assertive'; should fire an event + document.getElementById('d2').setAttribute('aria-live', 'assertive'); + + // set live from 'polite'->[removed]; should fire event + document.getElementById('d3').removeAttribute('aria-live'); + + // set live to 'polite'; should fire an event + document.getElementById('d4').setAttribute('aria-live', 'polite'); + } + </script> +</body> +</html>
diff --git a/content/test/data/accessibility/event/aria-multiselectable-changed-expected-uia-win.txt b/content/test/data/accessibility/event/aria-multiselectable-changed-expected-uia-win.txt index 19f0e77..e161f1e 100644 --- a/content/test/data/accessibility/event/aria-multiselectable-changed-expected-uia-win.txt +++ b/content/test/data/accessibility/event/aria-multiselectable-changed-expected-uia-win.txt
@@ -1,3 +1,8 @@ +AriaProperties changed on role=grid +AriaProperties changed on role=listbox +AriaProperties changed on role=tablist +AriaProperties changed on role=tree +AriaProperties changed on role=treegrid SelectionCanSelectMultiple changed on role=grid SelectionCanSelectMultiple changed on role=listbox SelectionCanSelectMultiple changed on role=tablist
diff --git a/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win.txt b/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win.txt index 48f39cb..8d147043 100644 --- a/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win.txt +++ b/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win.txt
@@ -1,2 +1,3 @@ +AriaProperties changed on role=group LiveRegionChanged on role=group LiveSetting changed on role=group
diff --git a/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win7.txt b/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win7.txt index 4d65b611..20d199f 100644 --- a/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win7.txt +++ b/content/test/data/accessibility/event/live-region-add-live-attribute-expected-uia-win7.txt
@@ -1 +1,2 @@ +AriaProperties changed on role=group LiveRegionChanged on role=group
diff --git a/content/test/data/accessibility/event/live-region-add-live-attribute.html b/content/test/data/accessibility/event/live-region-add-live-attribute.html index e4f5ba5..b718f71 100644 --- a/content/test/data/accessibility/event/live-region-add-live-attribute.html +++ b/content/test/data/accessibility/event/live-region-add-live-attribute.html
@@ -1,5 +1,6 @@ <!-- @UIA-WIN-DENY:* +@UIA-WIN-ALLOW:AriaProperties* @UIA-WIN-ALLOW:LiveRegion* @UIA-WIN-ALLOW:LiveSetting* -->
diff --git a/content/test/data/accessibility/event/range-value-is-readonly-changed-expected-uia-win.txt b/content/test/data/accessibility/event/range-value-is-readonly-changed-expected-uia-win.txt index 8ed156f..3f2feb2 100644 --- a/content/test/data/accessibility/event/range-value-is-readonly-changed-expected-uia-win.txt +++ b/content/test/data/accessibility/event/range-value-is-readonly-changed-expected-uia-win.txt
@@ -1,6 +1,8 @@ +AriaProperties changed on role=slider IsEnabled changed on role=slider RangeValueIsReadOnly changed on role=slider === Start Continuation === +AriaProperties changed on role=slider IsEnabled changed on role=slider RangeValueIsReadOnly changed on role=slider === Start Continuation === @@ -8,8 +10,10 @@ === Start Continuation === RangeValueIsReadOnly changed on role=slider === Start Continuation === +AriaProperties changed on role=slider IsEnabled changed on role=slider RangeValueIsReadOnly changed on role=slider === Start Continuation === +AriaProperties changed on role=slider IsEnabled changed on role=slider RangeValueIsReadOnly changed on role=slider
diff --git a/content/test/data/accessibility/event/value-is-readonly-changed-expected-uia-win.txt b/content/test/data/accessibility/event/value-is-readonly-changed-expected-uia-win.txt index 29a38f0..5e7b21e5 100644 --- a/content/test/data/accessibility/event/value-is-readonly-changed-expected-uia-win.txt +++ b/content/test/data/accessibility/event/value-is-readonly-changed-expected-uia-win.txt
@@ -1,6 +1,8 @@ +AriaProperties changed on role=textbox IsEnabled changed on role=textbox ValueIsReadOnly changed on role=textbox === Start Continuation === +AriaProperties changed on role=textbox IsEnabled changed on role=textbox ValueIsReadOnly changed on role=textbox === Start Continuation === @@ -12,8 +14,10 @@ === Start Continuation === ValueIsReadOnly changed on role=textbox === Start Continuation === +AriaProperties changed on role=textbox IsEnabled changed on role=textbox ValueIsReadOnly changed on role=textbox === Start Continuation === +AriaProperties changed on role=textbox IsEnabled changed on role=textbox ValueIsReadOnly changed on role=textbox
diff --git a/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.csv b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.csv new file mode 100644 index 0000000..bd4c4da --- /dev/null +++ b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.csv
@@ -0,0 +1,239 @@ +Basic_DRAM,Basic_GT,Basic_IA,Video_720_MP4_DRAM,Video_720_MP4_Fullscreen_DRAM,Video_720_MP4_Fullscreen_GT,Video_720_MP4_Fullscreen_IA,Video_720_MP4_GT,Video_720_MP4_IA,Video_720_MP4_Underlay_DRAM,Video_720_MP4_Underlay_Fullscreen_DRAM,Video_720_MP4_Underlay_Fullscreen_GT,Video_720_MP4_Underlay_Fullscreen_IA,Video_720_MP4_Underlay_GT,Video_720_MP4_Underlay_IA,bot,build +0.6068494983277595,0.018812709030100336,3.5557692307692306,0.7390367892976588,0.7375050167224083,0.13655518394648827,6.405548494983279,0.14097993311036802,6.335003344481605,0.7998260869565218,0.7430836120401343,0.1446622073578596,6.659428093645483,0.2869230769230772,7.053688963210702,BUILD154-A9,4369 +0.6071906354515052,0.03288294314381269,3.2457023411371217,0.7431337792642148,0.7403187919463086,0.09521812080536916,5.775677852348996,0.09660869565217395,5.638324414715715,0.8062575250836121,0.7545752508361204,0.09916053511705684,5.897187290969904,0.20584949832775926,6.005561872909699,BUILD182-A9,4368 +0.6010535117056858,0.03132441471571905,3.2086120401337794,0.7415117056856191,0.7400769230769235,0.09204347826086967,5.632755852842813,0.09304682274247494,5.616675585284283,0.7965953177257524,0.7513946488294316,0.09887959866220748,5.785324414715719,0.20512709030100354,5.85499331103679,BUILD182-A9,4367 +0.60066889632107,0.029829431438127073,3.8393578595317712,0.7478996655518401,0.7389397993311043,0.12823411371237467,6.8667491638795966,0.13032775919732448,6.889438127090299,0.7944866666666667,0.7509866220735787,0.13532775919732445,7.146418060200667,0.2750866666666671,7.160306666666664,BUILD174-A9,4366 +0.6018327759197322,0.016210702341137122,3.8603043478260908,0.7424180602006694,0.7490266666666666,0.1301433333333334,6.5901966666666665,0.12936789297658866,6.582919732441469,0.8013812709030103,0.7467826086956526,0.1340334448160536,6.587702341137121,0.2616555183946489,7.020826086956522,BUILD164-A9,4365 +0.6064060402684562,0.03058389261744964,3.7511610738255032,0.746892976588629,0.7511906354515052,0.11764548494983278,6.487190635451507,0.12097993311036795,6.393301003344478,0.7972173913043478,0.7534882943143817,0.122076923076923,6.2537491638795935,0.2564983277591972,6.654789297658861,BUILD169-A9,4364 +0.6101040268456372,0.030489932885906023,3.477530201342282,0.7419498327759206,0.7564932885906045,0.09451342281879198,5.851003355704697,0.09489632107023416,5.819107023411375,0.8061711409395972,0.747384615384616,0.1032842809364548,5.820478260869566,0.20653691275167785,6.12470134228188,BUILD182-A9,4363 +0.6038859060402685,0.030100671140939565,3.909211409395973,0.7417157190635453,0.740852842809365,0.11937792642140477,6.563709030100331,0.12025418060200672,6.634374581939798,0.8167391304347831,0.7471404682274253,0.12995986622073571,6.7082073578595285,0.26244147157190645,6.852200668896326,BUILD120-A9,4362 +0.6046287625418064,0.03329765886287623,3.7343745819397984,0.7412508361204015,0.7398628762541815,0.10955852842809367,6.784565217391302,0.11093311036789297,6.8350869565217405,0.8043846153846158,0.7477959866220741,0.11628093645484958,6.847311036789297,0.23446822742474924,7.060468227424754,BUILD181-A9,4361 +0.6051170568561873,0.03205351170568558,3.8255016722408026,0.741515050167225,0.7393277591973249,0.1421103678929766,6.748448160535117,0.142066889632107,6.7327759197324415,0.7982775919732441,0.7441605351170567,0.1468494983277592,6.825351170568566,0.29192307692307695,6.993214046822742,BUILD179-A9,4360 +0.6010033557046979,0.037842281879194584,4.42454697986577,0.7450268456375843,0.7408929765886288,0.11479933110367894,7.62063545150502,0.11539932885906035,7.757580536912755,0.797989966555184,0.7464633333333337,0.12705999999999995,7.586693333333331,0.24897324414715724,7.944612040133776,BUILD125-A9,4359 +0.6214899328859063,0.04365436241610738,4.1975167785234895,0.7454515050167225,0.7411672240802681,0.10944147157190635,6.401795986622073,0.11245150501672248,6.232571906354517,0.8134983277591972,0.7548963210702344,0.11907692307692302,6.582538461538463,0.27796321070234165,7.120096989966557,BUILD170-A9,4358 +0.6017416107382557,0.014234899328859052,3.970818791946309,0.7421070234113719,0.7424581939799334,0.12349163879598657,7.002458193979935,0.12282274247491647,7.29115719063545,0.8030234113712367,0.744839464882943,0.1267926421404682,7.131193979933115,0.24650167224080252,7.274020066889633,BUILD119-A9,4357 +0.5984280936454849,0.011458193979933109,3.681264214046824,0.7413444816053514,0.7390568561872907,0.14180936454849496,6.524692307692307,0.14109030100334444,6.502735785953178,0.8077023411371236,0.7434749163879596,0.15801003344481607,6.560832775919729,0.3118929765886287,6.848060200668892,BUILD154-A9,4356 +0.5932541806020071,0.023093645484949802,3.725946488294312,0.7473355704697986,0.741397993311037,0.11381605351170557,7.057999999999999,0.1100436241610738,6.95894630872483,0.804742474916388,0.7546220735785953,0.12296989966555182,7.177351170568565,0.2622675585284281,7.357789297658865,BUILD177-A9,4355 +0.5975919732441468,0.011545150501672236,3.6374715719063575,0.7417391304347829,0.737996655518395,0.12570234113712364,6.435036789297659,0.12476588628762537,6.434096989966557,0.8059832775919733,0.7432675585284286,0.13671906354515043,6.444745819397991,0.27376923076923076,6.574829431438124,BUILD183-A9,4354 +0.6064798657718116,0.02613087248322143,3.341191275167786,0.7393745819397997,0.7393879598662204,0.093752508361204,5.6163645484949845,0.09782274247491639,5.606454849498331,0.8027123745819396,0.7467892976588634,0.10071906354515045,5.663113712374579,0.21468227424749167,5.661979933110366,BUILD172-A9,4353 +0.6013926174496647,0.035204697986577146,3.325825503355706,0.7433545150501668,0.7398294314381266,0.09960535117056857,5.79538461538462,0.10203678929765882,5.662478260869571,0.7956822742474917,0.7440936454849503,0.10574247491638791,5.698183946488294,0.23795317725752507,6.045816053511711,BUILD170-A9,4352 +0.6123444816053512,0.03338127090301,3.4062842809364553,0.7434816053511709,0.7433154362416116,0.10228187919463087,5.732208053691271,0.10219397993311043,5.615438127090301,0.8061705685618729,0.7461304347826092,0.1076321070234114,5.607872909698997,0.25089966555183946,5.717003344481607,BUILD127-A9,4351 +0.6026912751677851,0.035503355704697946,3.194647651006713,0.7403478260869565,0.7396421404682276,0.10244481605351173,5.66841137123746,0.10238127090301002,5.550337792642145,0.8079498327759201,0.7490200668896324,0.11029431438127094,5.941484949832773,0.2188929765886288,6.0571137123745835,BUILD153-A9,4350 +0.6024765100671143,0.03877516778523486,3.6104463087248324,0.7581582491582494,0.7398093645484953,0.13140802675585297,6.413655518394648,0.13903367003367004,6.660720538720539,0.7964381270903008,0.7462341137123758,0.14068896321070237,6.6512976588628785,0.2787056856187294,6.594779264214043,BUILD142-A9,4349 +0.6036053511705686,0.027130434782608678,4.0524749163879585,0.7394916387959868,0.7418862876254185,0.11748160535117055,7.160779264214046,0.12096989966555187,7.1617525083612055,0.7960501672240797,0.7441772575250839,0.12645150501672248,7.271712374581937,0.244732441471572,7.379762541806014,BUILD141-A9,4348 +0.6012617449664428,0.03543959731543621,3.8820436241610743,0.7543210702341135,0.737882943143813,0.12899665551839468,6.500347826086953,0.13192976588628758,6.792327759197326,0.8046354515050166,0.744672240802676,0.14705016722408035,6.588692307692306,0.2647023411371239,6.668816053511705,BUILD168-A9,4347 +0.6056020066889632,0.031698996655518355,3.3551204013377918,0.7386120401337793,0.7399866220735793,0.09858862876254179,5.962374581939802,0.09974247491638807,5.8934180602006645,0.7960735785953182,0.7548929765886286,0.10199665551839471,6.435618729096996,0.2170802675585286,6.299652173913044,BUILD129-A9,4346 +0.6007751677852349,0.029238255033557016,3.0864865771812053,0.7417324414715727,0.7481739130434785,0.09602341137123745,5.77018060200669,0.09797993311036798,5.732585284280936,0.7980769230769232,0.7444515050167225,0.1013177257525083,5.9465886287625445,0.20724414715719047,5.961127090301005,BUILD182-A9,4345 +0.6045872483221476,0.03620469798657715,3.5506711409395963,0.7476321070234114,0.7396755852842809,0.1366989966555184,6.446110367892977,0.13623745819397992,6.495929765886288,0.7949130434782613,0.7371638795986626,0.1410468227424748,6.358729096989968,0.28241471571906374,6.694939799331103,BUILD154-A9,4344 +0.6028087248322151,0.030446308724832203,3.9266778523489907,0.7489230769230776,0.7393478260869567,0.09659531772575249,6.812712374581936,0.09613712374581937,6.78560869565217,0.7991806020066886,0.7549832775919731,0.10813043478260863,6.773070234113715,0.22104347826086965,6.901739130434782,BUILD132-A9,4343 +0.6052181208053689,0.03165436241610735,3.2472214765100675,0.7457591973244148,0.7428795986622074,0.13358193979933108,5.798381270903004,0.13103678929765886,5.663254180602002,0.8064481605351171,0.7537725752508362,0.14229431438127077,5.903846153846153,0.2691605351170571,6.238913043478256,BUILD156-A9,4342 +0.6092751677852348,0.036315436241610696,3.7427248322147664,0.7414381270903007,0.7389565217391308,0.12754180602006684,6.214755852842808,0.12799999999999995,6.2483812709030095,0.7969331103678926,0.7484548494983279,0.13817056856187293,6.29308695652174,0.2582073578595316,6.427765886287629,BUILD146-A9,4341 +0.6063624161073825,0.03378859060402681,3.6690134228187903,0.7491304347826088,0.7373578595317732,0.12869565217391304,6.2925986622073635,0.1303879598662208,6.322826086956519,0.8068428093645479,0.754304347826087,0.1381939799331104,6.59423076923077,0.2669063545150503,6.549066889632111,BUILD168-A9,4340 +0.6012140468227422,0.030331103678929727,3.69022408026756,0.7488260869565228,0.7365752508361209,0.12261538461538464,6.3708528428093665,0.12258528428093647,6.444324414715722,0.8074314381270906,0.7604882943143817,0.13330100334448158,6.90097993311037,0.2648260869565218,6.606177257525084,BUILD120-A9,4339 +0.6030267558528425,0.033946488294314375,3.277428093645486,0.7507725752508357,0.7398561872909698,0.11516387959866224,5.353749163879598,0.11647491638795981,5.4514983277591975,0.8070301003344478,0.7502006688963214,0.12641137123745808,5.623454849498324,0.24645484949832747,5.869113712374584,BUILD161-A9,4338 +0.6069765100671144,0.03426845637583886,3.7895939597315436,0.7864747474747478,0.7593657718120814,0.11345302013422819,7.633694630872495,0.11823905723905723,10.543791245791246,0.8143712374581942,0.7459598662207362,0.11817725752508369,6.472026755852843,0.23791973244147177,7.100558528428095,BUILD126-A9,4337 +0.6020100334448164,0.012628762541806013,3.506367892976587,0.7396789297658866,0.7509464882943148,0.09258528428093651,6.041036789297655,0.09406020066889634,5.957752508361197,0.8032040133779265,0.7447558528428102,0.09591638795986628,6.100886287625422,0.2077725752508362,6.249933110367896,BUILD129-A9,4336 +0.5979397993311034,0.010545150501672233,3.140478260869564,0.7386020066889634,0.7527759197324426,0.10821404682274241,5.626892976588629,0.10906354515050162,5.588120401337791,0.806715719063545,0.7423745819397991,0.11504682274247496,5.8168729096989935,0.2599264214046824,5.956923076923075,BUILD170-A9,4335 +0.6035919732441468,0.015468227424749159,3.3310535117056848,0.7503010033444827,0.7375133333333337,0.1272099999999999,5.807436666666663,0.12858193979933105,6.370735785953175,0.8045886287625421,0.7441705685618736,0.1330334448160535,5.935324414715719,0.26178260869565223,6.124518394648829,BUILD162-A9,4334 +0.6083053691275165,0.03761073825503351,3.584828859060404,0.742197324414716,0.7497123745819398,0.12860535117056854,5.70833779264214,0.13144816053511704,5.6996220735786,0.7956354515050168,0.7456889632107024,0.1394949832775919,5.748742474916386,0.2665585284280937,5.836324414715723,BUILD162-A9,4333 +0.6104261744966443,0.03689932885906036,3.936234899328858,0.7386755852842811,0.7361505016722405,0.13262207357859523,6.370177257525085,0.13695317725752512,6.511555183946482,0.7946120401337794,0.7435652173913039,0.14358193979933118,6.478628762541805,0.288886287625418,6.609719063545155,BUILD124-A9,4332 +0.6003745819398002,0.03186287625418057,3.8628193979933094,0.7396789297658868,0.7462307692307687,0.13546153846153836,7.015585284280933,0.13589297658862873,7.07873578595318,0.7943545150501674,0.7460434782608697,0.14264214046822746,7.317598662207359,0.28275250836120436,7.369836120401332,BUILD158-A9,4331 +0.6084597315436235,0.032899328859060405,3.5483993288590625,0.745123745819398,0.7390836120401342,0.130571906354515,5.855906354515051,0.13117056856187304,5.909301003344478,0.7972107023411373,0.745809364548495,0.13838127090300997,6.252722408026755,0.2674515050167225,6.172936454849495,BUILD133-A9,4330 +0.6058929765886286,0.032314381270902984,3.93273578595318,0.7465250836120402,0.7385551839464891,0.12243478260869561,6.78580936454849,0.1179565217391304,6.800224080267563,0.8038695652173914,0.7437357859531779,0.1270969899665551,7.00778929765886,0.2549197324414714,7.1142508361204015,BUILD119-A9,4329 +0.6210869565217388,0.02301003344481604,4.748959866220736,0.7464147157190629,0.7525585284280935,0.11724414715719063,8.17933110367893,0.11720735785953183,7.3992274247491645,0.815595317725753,0.7458662207357858,0.12799331103678935,7.609652173913045,0.28413043478260885,7.849331103678934,BUILD175-A9,4328 +0.6109429530201346,0.03018120805369125,3.9073355704697956,0.7416722408026755,0.7484816053511707,0.11126421404682281,6.420387959866222,0.11278595317725759,6.4820702341137135,0.8042240802675586,0.7454214046822745,0.12372240802675581,6.542588628762542,0.24661204013377902,6.744518394648832,BUILD175-A9,4327 +0.595597315436242,0.023671140939597293,3.0497785234899335,0.7399197324414715,0.7394715719063545,0.09780267558528428,5.531284280936454,0.09945150501672244,5.561785953177261,0.7974046822742474,0.744809364548495,0.10467558528428095,5.497367892976587,0.21634782608695668,5.654133779264213,BUILD172-A9,4326 +0.6092508361204005,0.036411371237458155,3.446826086956522,0.74428093645485,0.8016476510067119,0.13119798657718115,7.927369127516781,0.130304347826087,5.922812709030098,0.7965351170568559,0.7442809364548496,0.1342775919732442,6.0529498327759175,0.26318394648829413,6.106973244147157,BUILD133-A9,4325 +0.5984046822742471,0.02707692307692304,3.905491638795986,0.7450334448160528,0.7501036789297655,0.11318394648829432,7.151882943143814,0.113819397993311,7.284505016722413,0.8064180602006691,0.7430301003344483,0.1170702341137124,7.385257525083613,0.23878929765886286,7.44463210702341,BUILD137-A9,4324 +0.6070367892976593,0.03188628762541803,3.4418193979933114,0.7410903010033449,0.7398294314381273,0.12390301003344478,5.811565217391306,0.12635785953177267,5.830742474916385,0.8017190635451504,0.7460500000000005,0.12680666666666673,5.791680000000001,0.25014046822742475,6.174571906354514,BUILD159-A9,4323 +0.6067147651006712,0.02823154362416105,3.832842281879192,0.7484782608695659,0.7391103678929769,0.11588963210702342,6.384712374581942,0.11984615384615388,6.443525083612038,0.7985451505016721,0.7541939799331108,0.12215719063545165,6.315036789297657,0.24035451505016708,6.569775919732436,BUILD155-A9,4322 +0.6043143812709035,0.03620066889632102,4.076668896321072,0.8075838926174498,0.7348494983277595,0.12122408026755861,6.765177257525081,0.12235570469798654,9.41841275167786,0.7922240802675589,0.7498361204013378,0.12884949832775922,6.930969899665551,0.26476254180602016,7.097484949832772,BUILD180-A9,4321 +0.6074395973154363,0.030422818791946263,3.327996644295301,0.7388929765886286,0.7484949832775926,0.1309732441471572,5.746508361204019,0.13259197324414698,5.620578595317724,0.8032842809364548,0.7467157190635455,0.1382307692307693,5.877899665551838,0.27216722408026756,5.978163879598661,BUILD156-A9,4320 +0.6029264214046823,0.019347826086956524,3.2624581939799326,0.7356086956521737,0.7352006688963209,0.1528595317725752,5.851612040133774,0.15592642140468224,5.80542474916388,0.7892943143812714,0.7546956521739125,0.1614080267558528,5.969852842809361,0.33816387959866206,6.112856187290972,BUILD148-A9,4319 +0.6036020066889636,0.014418060200668876,3.1366220735785935,0.741063333333334,0.7497090301003345,0.12105016722408016,5.450692307692307,0.12151000000000006,5.410596666666665,0.8056622073578596,0.7433311036789303,0.12640802675585286,5.477578595317726,0.2530234113712373,5.617270903010036,BUILD161-A9,4318 +0.6080268456375838,0.03374832214765097,3.1300536912751675,0.7467725752508373,0.7396387959866235,0.11327759197324419,5.324287625418057,0.11838795986622079,5.540147157190629,0.7988929765886292,0.7431939799331111,0.12164214046822748,5.513327759197326,0.2436856187290969,5.803424749163878,BUILD161-A9,4317 +0.6051371237458193,0.011458193979933107,3.019321070234113,0.7415117056856191,0.7404782608695651,0.1353344481605351,5.614973244147156,0.13681270903010032,5.65369565217391,0.7978160535117059,0.7462508361204012,0.14262876254180604,5.7307591973244145,0.27302341137123765,5.864093645484957,BUILD147-A9,4316 +0.6079297658862877,0.042712374581939765,3.448899665551839,0.7454046822742483,0.7351270903010035,0.1480234113712374,5.924270903010034,0.14943143812709023,5.871986622073579,0.7925852842809368,0.7471739130434784,0.15854515050167228,6.412070234113713,0.33249498327759214,6.389381270903008,BUILD148-A9,4315 +0.6009295302013425,0.03682885906040265,3.687070469798658,0.7411438127090304,0.7380401337792639,0.1306588628762542,6.283227424749163,0.1365250836120401,6.454755852842812,0.7970568561872913,0.7437591973244151,0.14384280936454852,6.461956521739138,0.29133110367893006,6.586377926421404,BUILD142-A9,4314 +0.6066275167785229,0.029785234899328838,3.489258389261745,0.7489364548494986,0.7985469798657723,0.1053255033557048,7.7500604026845625,0.10785618729097005,5.9950735785953215,0.795056856187291,0.7462173913043484,0.11857525083612043,5.9333812709030065,0.24553846153846137,6.054367892976592,BUILD118-A9,4313 +0.6019297658862879,0.031183946488294267,4.3477491638795955,0.7414147157190639,0.7466889632107024,0.1176588628762542,7.491882943143814,0.11563879598662201,7.448678929765884,0.7977056856187289,0.7486979865771816,0.12715771812080529,8.119359060402683,0.2545217391304349,7.817414715719067,BUILD125-A9,4312 +0.6087090301003343,0.01515384615384615,3.2053511705685604,0.7396789297658861,0.7464515050167224,0.1001137123745819,5.803618729096991,0.10275250836120403,5.445725752508362,0.7961471571906353,0.754220735785953,0.10754849498327758,5.760033444816055,0.21933110367892986,5.8294214046822725,BUILD136-A9,4311 +0.6018093645484948,0.029762541806020046,3.432839464882941,0.755530201342282,0.7497926421404684,0.09857525083612037,6.532836120401339,0.09812080536912755,6.681234899328862,0.8029397993311027,0.7481638795986623,0.10704013377926422,6.343377926421404,0.22865217391304343,6.498692307692308,BUILD163-A9,4310 +0.6088187919463082,0.030238255033557013,3.9875167785234913,0.7440200668896324,0.7505384615384615,0.123608695652174,6.659705685618728,0.1265250836120402,6.657217391304346,0.7956622073578588,0.745013377926422,0.1327491638795986,6.733244147157195,0.250561872909699,6.904515050167227,BUILD123-A9,4309 +0.6065436241610739,0.02976845637583888,3.27539932885906,0.738946488294315,0.7442742474916387,0.09980602006688967,5.68807023411371,0.10362207357859526,5.607474916387959,0.8078528428093641,0.7448963210702342,0.10516387959866216,5.87096655518395,0.21896989966555186,5.928879598662205,BUILD136-A9,4308 +0.6053110367892978,0.031173913043478243,3.9089264214046846,0.7487157190635454,0.7383545150501672,0.13089297658862864,7.001043478260869,0.13082608695652173,7.133317725752506,0.7962742474916387,0.745657718120806,0.13472818791946312,7.416597315436242,0.2718695652173915,7.2464749163879585,BUILD173-A9,4307 +0.5976476510067117,0.030194630872483207,3.192553691275169,0.7538461538461537,0.7528929765886291,0.1187525083612041,5.523722408026755,0.1191003344481606,5.607628762541806,0.8084247491638799,0.7451137123745821,0.1250535117056856,5.448899665551838,0.24551839464882938,5.628625418060199,BUILD161-A9,4306 +0.6043624161073822,0.036916107382550294,3.6678758389261725,0.7400000000000005,0.7421438127090304,0.13464548494983278,6.276742474916384,0.13163545150501674,6.4828428093645485,0.792080267558528,0.7413478260869574,0.14314715719063545,6.334973244147155,0.2857391304347826,6.5116588628762555,BUILD124-A9,4305 +0.6016510067114094,0.02745637583892616,3.4624731543624154,0.7404347826086957,0.7370769230769234,0.10944147157190635,5.998428093645484,0.1137725752508362,5.967103678929767,0.8170602006688966,0.7457993311036796,0.11355518394648835,6.056989966555181,0.24529765886287638,6.212424749163881,BUILD118-A9,4304 +0.606063545150501,0.02794314381270899,3.8185117056856206,0.741488294314381,0.7386688963210699,0.12425418060200667,6.693953177257526,0.12759531772575244,6.686515050167221,0.8091872909698996,0.7456254180602008,0.13322073578595314,6.996675585284276,0.2549832775919732,7.071759197324412,BUILD123-A9,4303 +0.6041275167785232,0.03298993288590601,3.4339362416107417,0.7437633333333337,0.7396053511705688,0.10326421404682272,5.9100234113712355,0.10244666666666673,6.054550000000003,0.797926421404682,0.7449230769230767,0.10710367892976588,6.001143812709029,0.2192441471571906,6.169254180602006,BUILD140-A9,4302 +0.6554932432432432,0.025249999999999957,6.571787162162162,0.7396254180602008,0.7481270903010034,0.1206588628762543,7.039779264214047,0.12352173913043475,7.089444816053512,0.796739130434783,0.7442575250836125,0.12743478260869562,7.183769230769225,0.24583946488294314,7.270949832775918,BUILD141-A9,4301 +0.6075050167224079,0.0307224080267558,3.272969899665556,0.74051839464883,0.7461672240802679,0.14212709030100343,5.643010033444815,0.14297324414715717,5.684511705685621,0.7962107023411377,0.743635451505017,0.14098327759197316,5.81646488294315,0.27507357859531784,5.872732441471575,BUILD147-A9,4300 +0.6067953020134226,0.03311744966442949,3.263536912751678,0.7419866220735789,0.7404013377926428,0.10015384615384615,5.547240802675584,0.1003210702341137,5.592451505016723,0.7983645484949834,0.7548829431438128,0.1038494983277593,5.954173913043478,0.2181070234113712,5.748311036789298,BUILD153-A9,4299 +0.6042684563758387,0.034385906040268435,3.853036912751676,0.7450234113712373,0.7375752508361204,0.12222073578595316,6.582113712374581,0.12398327759197343,6.615344481605353,0.8019632107023412,0.7475852842809373,0.13495652173913036,6.724909698996655,0.2530267558528428,7.126595317725751,BUILD157-A9,4298 +0.6018489932885908,0.02603020134228185,3.240379194630871,0.7493444816053513,0.739702341137124,0.12759197324414717,5.684678929765891,0.12863879598662198,5.640397993311038,0.8008762541806023,0.7539096989966557,0.1344548494983278,5.713655518394653,0.25445484949832775,6.0827458193979895,BUILD159-A9,4297 +0.5956722408026758,0.010227424749163877,3.56116053511706,0.7509063545150504,0.744882943143813,0.12426421404682275,6.516090301003342,0.11890635451505016,6.443581939799333,0.8059798657718118,0.7465685618729095,0.12505016722408038,6.432040133779263,0.26474161073825525,6.693080536912754,BUILD155-A9,4296 +0.6007424749163875,0.029478260869565193,4.35380602006689,0.7428461538461542,0.7473143812709033,0.11659531772575252,7.530357859531776,0.11626086956521738,7.499040133779263,0.7986254180602007,0.7524682274247495,0.12201672240802675,7.517006688963212,0.2517123745819396,7.892200668896324,BUILD125-A9,4295 +0.5964765100671143,0.02378523489932884,4.023724832214766,0.7384849498327762,0.7465652173913039,0.10904347826086949,6.917247491638796,0.11005351170568568,7.022635451505021,0.7940100334448156,0.7413511705685626,0.11518729096989963,6.9905518394648825,0.2456889632107023,7.104906354515049,BUILD165-A9,4294 +0.6079598662207355,0.028993311036789288,3.579050167224083,0.750020066889632,0.7387725752508362,0.1201270903010034,5.866080267558526,0.12120735785953182,5.899939799331107,0.8052006688963207,0.7451872909699001,0.138515050167224,5.868555183946486,0.25076923076923074,6.060729096989962,BUILD143-A9,4293 +0.6042341137123752,0.03648160535117054,4.687665551839466,0.7441404682274249,0.7733946488294314,0.18809030100334462,8.638214046822736,0.15669230769230774,7.752357859531772,0.8091973244147156,0.7441872909699,0.16640133779264227,7.996889632107024,0.3351973244147156,8.558568561872912,BUILD135-A9,4292 +0.6108896321070234,0.028200668896321054,3.4899030100334447,0.7479597315436242,0.7386454849498333,0.09558862876254183,5.749006688963214,0.09668456375838931,5.619563758389262,0.8066006711409397,0.7443076923076926,0.10204682274247488,5.822625418060201,0.21010738255033556,5.900436241610743,BUILD153-A9,4291 +0.601953177257525,0.027454849498327747,4.537040133779266,0.7407023411371242,0.7400334448160536,0.10568227424749164,8.024762541806021,0.10455852842809372,7.889321070234116,0.7964949832775916,0.7461137123745823,0.11140468227424748,8.13568227424749,0.2352040133779263,8.384167224080269,BUILD125-A9,4290 +0.6600303030303026,0.036831649831649785,5.689562289562288,0.7409598662207364,0.7404180602006689,0.12256856187290968,6.500548494983277,0.12748160535117065,6.451257525083613,0.7987357859531774,0.7436153846153845,0.13173913043478272,6.473073578595315,0.2574080267558527,6.6419933110367895,BUILD168-A9,4289 +0.6618361204013375,0.03274247491638794,5.684933110367896,0.7762040133779259,0.7384715719063549,0.12022408026755851,6.3974214046822775,0.11683612040133776,9.852478260869562,0.7953892617449659,0.7448561872909706,0.127418060200669,6.44745819397994,0.25649328859060416,6.675848993288591,BUILD120-A9,4288 +0.5959999999999995,0.026734899328859044,3.0628221476510076,0.7444548494983279,0.7394949832775922,0.10688294314381273,5.412053511705682,0.10854180602006698,5.468411371237458,0.8052040133779264,0.7437190635451503,0.11255183946488284,5.433404682274248,0.22463879598662204,5.810471571906353,BUILD172-A9,4287 +0.6059464882943143,0.03294314381270901,4.159033444816052,0.7384816053511707,0.7384113712374581,0.1109665551839464,7.2418060200668855,0.11288963210702345,7.243451505016725,0.8056956521739131,0.7554046822742478,0.12152842809364557,7.462414715719067,0.24101337792642147,7.65592642140468,BUILD137-A9,4286 +0.6039832775919732,0.03900668896321064,4.5300635451505,0.7392408026755859,0.7451605351170562,0.15045819397993324,7.43346488294314,0.15180602006688965,7.799451505016723,0.8010769230769235,0.7420301003344482,0.1625083612040134,7.54750501672241,0.3299264214046822,7.9256789297658825,BUILD135-A9,4285 +0.601264214046823,0.024732441471571852,3.9889732441471564,0.7452842809364544,0.7408127090301005,0.10922742474916393,6.8088829431438125,0.11097993311036781,7.049909698996655,0.796234113712375,0.7450233333333333,0.11598333333333331,6.8999166666666705,0.23852508361203992,7.0530167224080325,BUILD119-A9,4284 +0.6060838926174489,0.030778523489932853,3.8152147651006696,0.7489933110367897,0.7401170568561871,0.11509030100334448,6.617739130434786,0.11976254180602011,7.04219732441472,0.7954080267558532,0.7579530201342288,0.12463087248322155,6.9434161073825535,0.24697658862876226,6.905086956521738,BUILD169-A9,4283 +0.6065418060200666,0.03260535117056854,3.5117023411371218,0.7395551839464892,0.7457725752508371,0.10866889632107032,5.880197324414722,0.10967558528428091,5.970846153846157,0.8044381270903008,0.746294314381271,0.1168528428093645,6.3251739130434785,0.2464715719063544,6.293558528428093,BUILD170-A9,4282 +0.6073221476510072,0.03534228187919463,3.6939597315436234,0.7446387959866223,0.7389765886287628,0.13563879598662212,6.335655518394647,0.1418795986622073,6.3917625418060195,0.7953812709030098,0.7477725752508364,0.1518494983277592,6.793892976588628,0.3053745819397994,6.640344481605346,BUILD139-A9,4281 +0.6114949832775923,0.014672240802675578,4.393618729096991,0.7390533333333335,0.7369197324414715,0.11440802675585296,7.500729096989966,0.11583333333333339,7.496910000000001,0.7950836120401336,0.7530702341137127,0.1220836120401339,7.408498327759191,0.2458227424749164,7.764889632107021,BUILD137-A9,4280 +0.623260869565218,0.03136454849498324,4.477588628762543,0.7374548494983278,0.7404682274247496,0.10276923076923081,6.420401337792644,0.10250501672240803,6.446117056856188,0.7954581939799329,0.7535117056856191,0.1093177257525083,6.493892976588628,0.22493311036789287,6.70776923076923,BUILD151-A9,4279 +0.6015183946488293,0.03823745819397993,3.7289732441471592,0.7457290969899667,0.7463812709030107,0.1457892976588628,6.470752508361202,0.14590301003344483,6.40772575250836,0.7960301003344477,0.7434749163879603,0.15564214046822739,6.705167224080266,0.3015016722408028,6.858635451505015,BUILD154-A9,4278 +0.6009060402684564,0.02906040268456374,3.2225100671140945,0.7443612040133782,0.7383545150501681,0.11734448160535126,5.7262207357859545,0.1219197324414715,5.670441471571908,0.8054648829431431,0.7465819397993312,0.12661538461538457,5.831297658862876,0.24453846153846157,5.9294882943143845,BUILD143-A9,4277 +0.6085469798657719,0.029258389261744934,3.570959731543625,0.7418160535117054,0.7415719063545151,0.12122408026755854,6.02003678929766,0.1217892976588628,6.031053511705687,0.8064180602006692,0.7468060200668896,0.12947826086956515,6.199939799331104,0.2540167224080266,6.368270903010036,BUILD21-B1,4276 +0.6044648829431443,0.03684615384615379,3.727752508361204,0.7407993311036792,0.7384046822742475,0.12942140468227417,6.613852842809365,0.13109364548494987,6.629839464882944,0.7962307692307686,0.7438561872909698,0.13613377926421413,6.90191304347826,0.2792508361204013,6.886421404682278,BUILD142-A9,4275 +0.6007625418060201,0.014963210702341122,3.4337959866220764,0.7472474916387964,0.7417290969899676,0.1221270903010032,6.13423411371238,0.12313377926421405,6.168622073578598,0.7989030100334452,0.7631571906354513,0.13670568561872903,6.254371237458192,0.25700334448160544,6.41620735785953,BUILD21-B1,4274 +0.6058795986622072,0.03359866220735782,3.8080535117056855,0.7429163879598664,0.7471270903010033,0.11308361204013384,6.835454849498325,0.11825083612040131,6.614538461538463,0.7996321070234121,0.7545250836120404,0.11707023411371237,6.809267558528433,0.23693645484949827,6.85056856187291,BUILD181-A9,4273 +0.6028120805369129,0.02999328859060397,4.33745637583893,0.7396555183946489,0.7393578595317727,0.12281605351170567,7.374287625418061,0.12738461538461537,7.430297658862877,0.7952207357859533,0.7445953177257526,0.13129096989966557,7.3041605351170595,0.27851505016722433,7.708571906354513,BUILD149-A9,4272 +0.6061644295302018,0.03752684563758384,3.819899328859061,0.7383210702341134,0.7357625418060201,0.14203678929765878,6.531474916387961,0.14682943143812704,6.440903010033445,0.7966555183946493,0.7414983277591971,0.15290969899665555,6.760150501672239,0.29704013377926414,6.76790301003345,BUILD154-A9,4271 +0.6099899665551838,0.022498327759197276,3.5025117056856194,0.7444381270903012,0.7404682274247488,0.14447491638795987,5.800143812709032,0.14359531772575249,5.885789297658864,0.8179866220735784,0.7535819397993315,0.15690301003344484,5.935715719063545,0.30569565217391315,6.065006688963209,BUILD147-A9,4270 +0.604909698996656,0.015234113712374575,3.4964046822742456,0.7394481605351165,0.7471471571906352,0.11893311036789293,6.563923076923077,0.11814715719063552,6.205006688963207,0.7966555183946491,0.74276254180602,0.12297993311036783,6.520274247491639,0.26236454849498336,6.655230769230771,BUILD163-A9,4269 +0.6013076923076923,0.014324414715719056,3.700802675585286,0.7399598662207362,0.7389832775919732,0.1137190635451505,6.277361204013379,0.11479264214046825,6.382618729096988,0.8027491638795986,0.7545284280936457,0.11945484949832776,6.310789297658861,0.23874916387959874,6.478571906354513,BUILD126-A9,4268 +0.6043557046979866,0.03614429530201339,4.711033557046978,0.7397248322147654,0.7430969899665553,0.11177591973244151,8.093274247491646,0.10864093959731547,7.869738255033564,0.8643221476510069,0.744307692307692,0.11770903010033437,7.914063545150504,0.24819798657718123,10.881714765100671,BUILD125-A9,4267 +0.612989932885906,0.02848322147651002,4.074355704697986,0.7411571906354514,0.7396588628762544,0.1098461538461539,6.428351170568559,0.1044013377926422,6.441739130434784,0.7968494983277591,0.7532709030100332,0.11031438127090307,6.584789297658864,0.2257993311036788,6.63952508361204,BUILD178-A9,4266 +0.6078993288590605,0.027389261744966403,4.42068456375839,0.7654395973154361,0.7614481605351172,0.14848494983277596,7.893745819397989,0.12753691275167783,8.260768456375839,0.8031973244147159,0.7452073578595312,0.13115050167224077,7.426515050167222,0.27839130434782605,7.730755852842816,BUILD149-A9,4265 +0.6017157190635452,0.031882943143812674,3.7442675585284304,0.7365785953177263,0.7344448160535123,0.13177257525083613,6.423712374581936,0.13334448160535117,6.364989966555184,0.793518394648829,0.7408160535117057,0.1400301003344481,6.544939799331104,0.30007023411371236,6.712765886287629,BUILD139-A9,4264 +0.6052140468227425,0.02810033444816051,3.4954247491638792,0.7410100334448169,0.7359632107023416,0.09242140468227428,6.0775384615384604,0.09487959866220731,6.0827224080267515,0.7975819397993308,0.7428026755852848,0.09563545150501682,5.973571906354512,0.21058528428093665,6.091327759197323,BUILD129-A9,4263 +0.6089632107023407,0.03485618729096986,3.6282341137123733,0.7472374581939809,0.7395503355704701,0.12290939597315435,5.813557046979863,0.12292307692307677,5.614090301003346,0.7973311036789301,0.743508361204014,0.12858193979933105,5.57117391304348,0.24289297658862852,5.679274247491642,BUILD160-A9,4262 +0.606174496644295,0.024875838926174475,4.066489932885909,0.7468020134228188,0.7632809364548497,0.13727090301003328,6.932237458193983,0.11451342281879197,6.975070469798657,0.7942575250836118,0.7440468227424749,0.1200635451505018,6.863541806020064,0.23909364548494966,6.918712374581939,BUILD144-A9,4261 +0.5954916387959873,0.032311036789297636,3.146515050167225,0.7387391304347829,0.7371070234113709,0.12076588628762547,5.6935384615384645,0.12588963210702342,5.7718829431438134,0.7963913043478259,0.7439364548494983,0.1282140468227424,5.929688963210698,0.2649163879598663,6.018311036789297,BUILD133-A9,4260 +0.6024481605351167,0.035618729096989925,3.253033444816053,0.7392508361204015,0.7360602006688971,0.08890635451505013,5.530782608695652,0.08912374581939796,5.611688963210705,0.7950969899665553,0.7420267558528435,0.0953444816053512,5.718217391304347,0.2031137123745821,5.746448160535118,BUILD153-A9,4259 +0.5990402684563759,0.03116442953020132,3.838046979865773,0.7478595317725759,0.7358528428093649,0.11541471571906359,7.111230769230765,0.12146488294314388,7.1501438127090315,0.8051438127090305,0.7519397993311043,0.12638127090301007,7.2829698996655505,0.24732441471571884,7.469568561872908,BUILD130-A9,4258 +0.6050268456375838,0.03443959731543623,3.4951543624161068,0.7445585284280941,0.737214046822743,0.12952508361204013,6.1285183946488315,0.13558193979933128,6.151381270903011,0.7959632107023411,0.7432508361204017,0.1358595317725753,6.387381270903009,0.25900668896321105,6.334424749163875,BUILD146-A9,4257 +0.6068657718120799,0.033278523489932856,3.90169798657718,0.7386688963210704,0.7453311036789304,0.15102341137123743,6.332494983277591,0.1540501672240802,6.385391304347828,0.7964046822742478,0.7419264214046827,0.1615284280936456,6.46963879598662,0.30491638795986625,6.692030100334448,BUILD154-A9,4256 +0.6041170568561873,0.028050167224080227,3.9629331103678926,0.7611610738255036,0.7575852842809371,0.14833444816053526,6.573046822742479,0.1257751677852349,6.908674496644293,0.7945351170568562,0.7453511705685619,0.1270434782608696,6.501354515050164,0.25138795986622076,6.657023411371232,BUILD169-A9,4255 +0.6014113712374582,0.015193979933110372,3.642143812709026,0.7381404682274257,0.7433812709030101,0.1134013377926422,6.118314381270904,0.10915050167224086,6.086374581939799,0.7950568561872909,0.7457725752508363,0.11816387959866224,6.252220735785957,0.24003678929765887,6.345153846153845,BUILD126-A9,4254 +0.599057046979866,0.024194630872483216,3.446694630872484,0.7420836120401335,0.7376454849498327,0.1083110367892976,6.013856187290969,0.11092307692307696,6.1592474916388,0.7971137123745813,0.7407792642140467,0.11454180602006696,5.922197324414717,0.24344481605351145,6.120939799331103,BUILD118-A9,4253 +0.6096442953020131,0.03432885906040263,4.037748322147649,0.7377023411371243,0.7371872909698999,0.11430769230769235,6.061163879598668,0.11420401337792642,6.071588628762536,0.7935618729096992,0.7438127090301014,0.1202107023411371,6.192705685618727,0.24385284280936442,6.287043478260872,BUILD126-A9,4252 +0.604328859060403,0.030177852348993273,3.697687919463088,0.7459130434782613,0.7411571906354518,0.10780602006688976,6.610688963210708,0.1104046822742475,6.7247692307692315,0.7950869565217388,0.7438093645484952,0.11579933110367896,6.72457859531772,0.23649163879598667,6.915789297658861,BUILD123-A9,4251 +0.6120535117056854,0.03309364548494981,3.4513344481605346,0.7722876254180605,0.7668282828282823,0.11388888888888887,6.525397306397308,0.10793645484949832,6.875,0.794625418060201,0.7434983277591973,0.11447157190635453,5.487608695652174,0.23323411371237437,5.701214046822743,BUILD138-A9,4250 +0.6072550335570468,0.03032550335570466,3.828704697986577,0.7488829431438135,0.7452006688963213,0.10781939799331096,6.361789297658861,0.10929096989966554,6.530625418060206,0.7971066666666669,0.74494983277592,0.11443478260869556,6.581484949832775,0.23225333333333326,6.781956666666664,BUILD178-A9,4249 +0.6051006711409396,0.027671140939597286,3.4007315436241625,0.738598662207359,0.7378862876254177,0.09710033444816045,5.562535117056856,0.09566555183946486,5.742896321070235,0.7943010033444815,0.7443244147157199,0.10463210702341141,5.676264214046825,0.21809030100334453,5.7807759197324415,BUILD145-A9,4248 +0.5953355704697985,0.025751677852348952,3.126087248322146,0.7401003344481607,0.74676254180602,0.12756856187290977,5.59579264214047,0.12428428093645492,5.531963210702344,0.7967692307692312,0.7584581939799333,0.1341772575250837,5.502374581939799,0.25347157190635444,5.717381270903012,BUILD160-A9,4247 +0.6003712374581938,0.027301003344481576,3.633063545150502,0.7504046822742474,0.7382976588628761,0.10102341137123742,6.304387959866221,0.10459866220735788,6.412608695652174,0.8011137123745818,0.7468227424749161,0.10460535117056854,6.319545150501676,0.22883277591973247,6.7297491638796,BUILD175-A9,4246 +0.6061571906354515,0.03592642140468223,3.2326220735785935,0.7466789297658863,0.7370836120401341,0.10802675585284285,5.452023411371239,0.11030100334448159,5.54361204013378,0.8013110367892979,0.799265993265994,0.11199326599326605,7.31187542087542,0.22911036789297642,5.745234113712373,BUILD138-A9,4245 +0.6084849498327752,0.017565217391304337,3.5072341137123746,0.7427290969899671,0.7495033333333339,0.14791333333333326,6.6483933333333285,0.14538461538461545,6.289424749163881,0.802086956521739,0.749969899665552,0.15154515050167236,6.58438461538461,0.30076923076923096,6.691822742474917,BUILD154-A9,4244 +0.5971070234113711,0.029290969899665526,3.7147257525083606,0.7384448160535124,0.7417658862876255,0.1080301003344482,6.742762541806017,0.11041806020066897,6.493354515050164,0.7996409395973154,0.7448428093645487,0.11749832775919722,6.603949832775919,0.24168791946308715,7.170291946308726,BUILD144-A9,4243 +0.6004715719063546,0.01684280936454849,3.832882943143817,0.7362107023411373,0.7438695652173914,0.13249832775919723,6.762177257525084,0.13469565217391294,6.708852842809364,0.7933344481605349,0.7427658862876255,0.1384147157190635,6.8574782608695655,0.27714046822742466,7.034341137123746,BUILD142-A9,4242 +0.6141939799331105,0.032779264214046824,4.341200668896317,0.7423166666666673,0.7377391304347831,0.13757190635451508,6.560277591973239,0.14111,6.695590000000001,0.8025551839464882,0.7525819397993314,0.14627424749163873,6.77220066889632,0.2884983277591975,6.910010033444814,BUILD179-A9,4241 +0.5964429530201344,0.029120805369127496,3.9307281879194638,0.7384648829431439,0.757040133779264,0.11427759197324411,7.1342742474916365,0.11331438127090294,7.020133779264208,0.7974648829431442,0.7436655518394646,0.11809364548494977,6.91536454849498,0.23718060200668903,7.290735785953173,BUILD132-A9,4240 +0.60596644295302,0.036634228187919435,4.223697986577183,0.7393612040133785,0.7372675585284283,0.1325551839464882,7.012056856187288,0.1316321070234114,6.960484949832776,0.8041308724832216,0.7582307692307697,0.1364615384615385,7.214491638795985,0.25826510067114083,7.34370469798658,BUILD141-A9,4239 +0.6013799999999999,0.016553333333333326,3.6870033333333354,0.7384381270903012,0.7355852842809361,0.12540468227424745,6.286123745819394,0.1228829431438127,6.444632107023413,0.7942575250836119,0.744070234113713,0.13470568561872903,6.425602006688961,0.28731103678929776,6.614859531772576,BUILD139-A9,4238 +0.6023120805369125,0.03363422818791943,3.426526845637583,0.7383712374581942,0.7478461538461542,0.1230969899665553,5.796140468227421,0.12204347826086948,5.761749163879598,0.7953277591973247,0.743157190635452,0.128314381270903,5.932976588628763,0.24914715719063532,5.971364548494982,BUILD133-A9,4237 +0.6057525083612039,0.03519397993311033,3.5967591973244133,0.7387759197324419,0.7421036789297656,0.12399665551839475,6.318541806020071,0.12360200668896329,6.119608695652172,0.8052693602693606,0.7457826086956525,0.1272240802675586,6.4734381270903,0.2513973063973065,7.172676767676766,BUILD169-A9,4236 +0.6011711409395969,0.0342919463087248,3.0564228187919475,0.7386521739130433,0.7368361204013377,0.1130401337792643,5.316204013377928,0.11193979933110375,5.173511705685616,0.7952173913043474,0.7582441471571908,0.12342140468227425,5.654819397993308,0.24329096989966545,5.5331505016722415,BUILD161-A9,4235 +0.6094731543624161,0.028302013422818777,3.5815469798657693,0.7463913043478265,0.7500267558528436,0.090056856187291,5.830558528428091,0.09505685618729098,5.78338795986622,0.7986321070234114,0.7473678929765885,0.094438127090301,6.079665551839463,0.20309698996655526,6.021775919732438,BUILD182-A9,4234 +0.5996510067114096,0.025912751677852314,3.560550335570467,0.7397926421404686,0.7375050167224084,0.10911371237458196,6.392451505016726,0.10946153846153849,6.4222173913043505,0.8125217391304345,0.7476956521739134,0.11754849498327763,6.8957826086956535,0.24796321070234092,7.02304347826087,BUILD151-A9,4233 +0.6047281879194631,0.026456375838926148,3.392885906040269,0.7385752508361201,0.7491073825503353,0.09166442953020135,6.10142617449664,0.08931438127090303,6.033030100334445,0.815208053691275,0.7938080808080809,0.10071043771043776,7.665117845117846,0.22932214765100672,6.543006711409398,BUILD129-A9,4232 +0.6000134228187919,0.035620805369127484,3.5738221476510055,0.7400668896321071,0.7379665551839465,0.12193645484949822,6.307943143812711,0.12218394648829432,6.3048996655518375,0.7947257525083615,0.7542441471571905,0.12994648829431432,6.568946488294316,0.25766889632107026,6.617354515050167,BUILD168-A9,4231 +0.6057483221476507,0.028557046979865747,3.5636644295302013,0.7549732441471576,0.7391872909698994,0.1205919732441471,6.39754180602007,0.12505016722408027,6.6694648829431395,0.8051806020066886,0.756553691275168,0.1297248322147652,6.735073825503356,0.2547926421404684,6.697270903010034,BUILD164-A9,4230 +0.6074161073825501,0.030046979865771768,3.5207080536912763,0.7393578595317726,0.7538862876254185,0.10536454849498327,5.8951571906354525,0.10992976588628767,6.022749163879591,0.803498327759197,0.7537658862876256,0.1104882943143813,5.876317725752508,0.239010033444816,6.107836120401339,BUILD118-A9,4229 +0.6015785953177256,0.03332775919732439,3.4020468227424727,0.7466956521739135,0.7529096989966562,0.1226220735785953,5.903364548494985,0.12204682274247498,5.761357859531772,0.804321070234114,0.7536387959866232,0.13109364548494978,5.701765886287622,0.260304347826087,6.209260869565218,BUILD156-A9,4228 +0.606523489932886,0.02655369127516776,4.1258422818791916,0.7405484949832778,0.7456421404682283,0.11586287625418068,6.879294314381275,0.11588963210702345,6.793341137123751,0.8040836120401336,0.7453712374581944,0.11936789297658862,6.738792642140471,0.23948829431438132,7.022207357859535,BUILD181-A9,4227 +0.6031845637583891,0.029355704697986557,3.609889261744966,0.7420635451505019,0.7510668896321071,0.12197324414715717,6.03674247491639,0.12335785953177263,6.137110367892982,0.7979397993311039,0.7479130434782614,0.13260200668896327,6.059294314381269,0.25614715719063547,6.215658862876251,BUILD21-B1,4226 +0.6114865771812079,0.03329865771812077,3.8882046979865756,0.7379765886287628,0.7442307692307694,0.12857859531772584,6.331742474916391,0.1297123745819399,6.322561872909702,0.7923712374581943,0.7564715719063546,0.13737123745819405,6.5448829431438105,0.2936187290969901,6.637959866220736,BUILD139-A9,4225 +0.6031103678929765,0.030809364548494964,3.357391304347824,0.7399565217391314,0.7401438127090304,0.12243812709030104,5.69794983277592,0.1254882943143813,5.603254180602008,0.7988729096989972,0.7602441471571909,0.13794983277591963,5.962404682274247,0.24645150501672228,5.662628762541808,BUILD160-A9,4224 +0.6060704697986581,0.031157718120805315,3.751184563758391,0.7434849498327759,0.7385618729096994,0.12382943143812718,6.527892976588627,0.12775919732441474,6.510816053511703,0.7951103678929773,0.7515986622073573,0.12886956521739135,6.656100334448163,0.26648160535117055,6.746688963210701,BUILD120-A9,4223 +0.606846153846154,0.031230769230769194,3.2037224080267577,0.7377090301003347,0.7445752508361209,0.10938795986622077,5.679832775919732,0.10880267558528424,5.693153846153848,0.7956555183946489,0.7448896321070236,0.11489966555183947,5.780856187290973,0.2199331103678931,5.8172173913043475,BUILD136-A9,4222 +0.6052147651006708,0.028701342281879167,3.184342281879196,0.738056856187291,0.7393666666666668,0.11331999999999996,5.46363,0.11348829431438129,5.484963210702344,0.8012341137123752,0.7434280936454852,0.11986287625418057,5.526167224080273,0.22658528428093624,5.874675585284279,BUILD172-A9,4221 +0.6101845637583896,0.02723154362416108,3.7051308724832204,0.7488120805369127,0.7403946488294318,0.09439799331103683,6.082237458193979,0.09559060402684559,6.163120805369125,0.7982976588628764,0.7563411371237458,0.09812709030100346,6.074648829431437,0.20124414715719066,6.050903010033443,BUILD182-A9,4220 +0.6050535117056863,0.030933110367892914,3.686297658862877,0.7486488294314384,0.736488294314382,0.11508695652173916,6.188224080267562,0.11975585284280937,6.335127090301006,0.7958461538461542,0.7433812709030103,0.1242842809364549,6.507538461538459,0.2375752508361201,6.3521270903010025,BUILD126-A9,4219 +0.6147625418060199,0.014471571906354511,3.3463645484949853,0.7366655518394645,0.736401337792642,0.10999665551839462,5.70402341137124,0.11322742474916396,5.537377926421401,0.7976053511705686,0.7445752508361202,0.11906688963210697,5.748511705685619,0.22827090301003336,5.81897658862876,BUILD138-A9,4218 +0.6056127946127943,0.03399326599326594,3.4382558922558926,0.7381237458193982,0.7369498327759205,0.1150969899665552,5.603688963210705,0.11342474916387953,5.530083612040135,0.7975484949832782,0.7482775919732443,0.11841137123745822,5.761006688963208,0.22931103678929754,5.659505016722412,BUILD138-A9,4217 +0.6231818181818187,0.026020202020201996,3.9774478114478127,0.7387123745819405,0.7430234113712375,0.09955852842809362,5.596745819397996,0.09605685618729104,5.52646822742475,0.8030869565217393,0.7598127090301007,0.09978595317725761,5.636200668896323,0.20792307692307704,5.70466889632107,BUILD127-A9,4216 +0.6080869565217385,0.033846153846153804,3.4920936454849483,0.7391103678929768,0.7369030100334455,0.13197658862876244,5.581943143812712,0.1362408026755852,5.703769230769228,0.8148929765886291,0.7416555183946489,0.14218060200668897,5.6538628762541805,0.25621070234113696,5.649494983277595,BUILD160-A9,4215 +0.6057617449664433,0.027510067114093914,3.821697986577178,0.7402709030100341,0.7431237458193982,0.11909698996655516,6.877521739130439,0.11826421404682273,6.9039030100334475,0.7991404682274247,0.7615752508361204,0.12990635451505017,7.140354515050167,0.2397859531772575,7.075642140468229,BUILD181-A9,4214 +0.5998929765886292,0.015030100334448168,3.945765886287625,0.7503478260869565,0.7366521739130439,0.13295652173913047,7.0467391304347835,0.13435785953177254,6.952237458193977,0.805642140468227,0.7438127090301007,0.13947157190635448,7.186478260869567,0.26529431438127105,7.211461538461539,BUILD173-A9,4213 +0.6109866220735787,0.010153846153846156,3.683886287625418,0.7377123745819406,0.7375551839464884,0.13127090301003344,6.699705685618725,0.1324648829431438,6.729498327759199,0.7965317725752512,0.7497993311036794,0.139505016722408,6.764521739130435,0.2628528428093648,6.822190635451505,BUILD168-A9,4212 +0.6068255033557051,0.028694630872483216,3.589973154362416,0.7389197324414715,0.7417147651006712,0.10159060402684571,6.795644295302007,0.10466889632107028,6.466397993311034,0.8033779264214046,0.743946488294314,0.10903678929765882,6.6320668896321076,0.22812040133779277,6.511000000000001,BUILD175-A9,4211 +0.6029431438127089,0.03685284280936452,4.678404682274247,0.7434214046822746,0.7372408026755858,0.11937792642140478,8.02827424749164,0.11853846153846158,8.06324080267558,0.8022140468227416,0.7522642140468222,0.1258428093645485,8.383010033444819,0.24414381270903,8.52675585284281,BUILD125-A9,4210 +0.6073120805369127,0.03615436241610734,3.9381476510067093,0.7383277591973253,0.7436321070234113,0.1408896321070236,7.115317725752507,0.14470903010033445,7.010769230769228,0.7982408026755852,0.7430066889632104,0.14155518394648822,7.36077257525084,0.269916387959866,7.252050167224081,BUILD173-A9,4209 +0.601010067114094,0.026704697986577153,3.6286610738255014,0.740103678929766,0.7362508361204017,0.11486287625418068,6.907317725752511,0.11371237458193985,6.7315719063545165,0.799250836120401,0.7442675585284275,0.12219732441471584,7.068204013377928,0.23802341137123745,7.0456020066889575,BUILD144-A9,4208 +0.6037792642140465,0.03335117056856183,3.892321070234115,0.741013377926422,0.7370033444816056,0.14360200668896314,6.821444816053519,0.14565886287625424,6.547923076923081,0.7986789297658863,0.7534180602006686,0.16979598662207368,6.9608896321070235,0.28615050167224115,6.962618729096988,BUILD179-A9,4207 +0.6024949832775922,0.02600668896321068,3.894183946488295,0.7432516778523492,0.7354147157190639,0.12760200668896324,6.712939799331099,0.13247651006711414,7.00352348993288,0.7974515050167219,0.7431371237458192,0.14048829431438117,6.855979933110366,0.2522073578595317,6.773501672240801,BUILD157-A9,4206 +0.6020635451505016,0.015474916387959857,4.145364548494983,0.74658,0.7380702341137124,0.12795986622073582,7.419953177257523,0.12880333333333327,7.568616666666667,0.7962374581939804,0.7439698996655526,0.13818060200668897,7.650297658862865,0.2511505016722407,7.561394648829431,BUILD130-A9,4205 +0.6045436241610737,0.033080536912751646,3.9569328859060384,0.7378762541806023,0.7369999999999998,0.11716387959866224,6.740872909698997,0.12137458193979934,6.965678929765886,0.7959732441471572,0.7480668896321071,0.12295652173913049,7.083441471571905,0.2384949832775919,6.901100334448161,BUILD181-A9,4204 +0.6018829431438122,0.014595317725752505,3.07331772575251,0.7387290969899668,0.7436889632107024,0.11538127090301004,5.661913043478266,0.11909364548494979,5.531147157190635,0.8043779264214043,0.7504080267558537,0.12427090301003346,5.623438127090296,0.23188963210702343,5.634809364548489,BUILD172-A9,4203 +0.6089197324414714,0.01409364548494983,3.8713645484949835,0.7368662207357857,0.7365250836120404,0.1456555183946488,7.258806020066895,0.14525083612040135,7.065688963210704,0.7973210702341138,0.7489799331103679,0.1590635451505016,7.348923076923071,0.28428428093645497,7.445715719063546,BUILD158-A9,4202 +0.6071040268456378,0.03604697986577179,3.545355704697986,0.7395551839464882,0.7459464882943146,0.13585618729096993,5.630602006688962,0.13468227424749163,5.699314381270906,0.797180602006689,0.7437458193979924,0.14294983277591966,5.6835150501672285,0.2607090301003346,5.741668896321068,BUILD162-A9,4201 +0.6022207357859529,0.0319498327759197,3.145237458193979,0.7396321070234115,0.7411638795986618,0.09371237458193984,5.620709030100333,0.09615384615384619,5.601826086956522,0.7975953177257525,0.7440501672240807,0.10274247491638801,5.5011438127090315,0.20987959866220743,5.527973244147164,BUILD127-A9,4200 +0.6077986577181208,0.03306040268456373,3.458731543624159,0.7405785953177262,0.7405016722408023,0.12835785953177262,5.885471571906352,0.13154515050167223,5.831675585284276,0.7972408026755853,0.8057046979865772,0.1368355704697987,7.769130872483219,0.2526321070234114,5.931227424749163,BUILD159-A9,4199 +0.6041946308724835,0.03007718120805367,4.240359060402684,0.7398628762541803,0.743872909698997,0.09527759197324417,6.268906354515046,0.0977224080267559,6.130561872909703,0.7976120401337791,0.745625418060201,0.0996521739130435,6.325130434782609,0.20905685618729122,6.390852842809363,BUILD129-A9,4198 +0.6032642140468228,0.014879598662207349,3.688408026755852,0.7393979933110366,0.7372240802675586,0.12115384615384614,6.628551839464886,0.12306354515050169,6.561327759197322,0.8039464882943147,0.7445183946488301,0.1277558528428094,6.776448160535116,0.2494615384615385,6.863371237458194,BUILD169-A9,4197 +0.6102642140468222,0.013408026755852839,3.665351170568562,0.7579230769230773,0.7380702341137124,0.1047056856187291,6.664799331103675,0.10660869565217389,7.0421973244147145,0.8009060402684566,0.7439698996655516,0.11053846153846157,6.763899665551839,0.21894966442953015,6.955402684563757,BUILD178-A9,4196 +0.6011505016722405,0.016515050167224075,3.5623678929765883,0.7362307692307702,0.7404615384615387,0.13704682274247487,6.734588628762544,0.13366889632107026,6.625244147157189,0.8007190635451498,0.7410267558528428,0.14433110367892973,6.768936454849499,0.29015384615384604,6.938471571906356,BUILD139-A9,4195 +0.613771812080537,0.031093959731543584,3.9193859060402705,0.738394648829432,0.7451103678929772,0.11718729096989977,6.2886220735785985,0.1184247491638796,6.421816053511705,0.8004530201342273,0.750979933110368,0.12583277591973244,6.564107023411373,0.24044966442952995,6.8606946308724845,BUILD126-A9,4194 +0.606153846153846,0.0326755852842809,4.193063545150501,0.7400033557046988,0.7438060200668896,0.1358729096989966,7.2678862876254176,0.14026510067114098,7.143661073825507,0.8079130434782602,0.7502006688963209,0.1535652173913044,7.331672240802674,0.31293979933110366,7.452334448160541,BUILD180-A9,4193 +0.6059063545150498,0.030969899665551814,3.8334180602006698,0.7414314381270906,0.7383946488294315,0.11314381270902997,6.886424749163876,0.1155852842809364,6.832418060200666,0.7976053511705686,0.7433812709030103,0.11733110367892982,7.125712374581942,0.23370903010033436,7.005448160535115,BUILD128-A9,4192 +0.6130234113712375,0.03608695652173911,3.4239264214046825,0.7378829431438129,0.7373076923076922,0.1287357859531773,5.554401337792642,0.1273612040133779,5.597090301003346,0.7978896321070237,0.7432274247491635,0.13512040133779268,5.630588628762543,0.24838795986622073,5.733096989966554,BUILD160-A9,4191 +0.6193724832214769,0.024355704697986556,4.587842281879191,0.7556622073578594,0.7395418060200664,0.13854180602006702,6.656923076923082,0.14012374581939796,7.5815585284281015,0.808371237458194,0.7568294314381271,0.14230434782608706,6.841307692307695,0.2704247491638796,6.829046822742471,BUILD164-A9,4190 +0.606852842809365,0.03652842809364544,3.3872943143812746,0.7385451505016722,0.7407491638795989,0.1147257525083612,5.625662207357856,0.11407357859531776,5.725775919732438,0.7965250836120398,0.7526020066889625,0.11893311036789303,5.694725752508363,0.2241304347826088,5.763090301003348,BUILD136-A9,4189 +0.6053657718120808,0.030265100671140924,3.821241610738256,0.7476755852842808,0.7379331103678934,0.12024749163879599,6.503545150501674,0.11929765886287623,6.612588628762545,0.796377926421404,0.7470334448160537,0.1244147157190636,6.6401906354515,0.24661204013377902,6.738635451505016,BUILD123-A9,4188 +0.6013590604026846,0.02638926174496642,3.2458456375838933,0.7390936454849505,0.7381404682274246,0.12334782608695657,5.783926421404683,0.12129096989966555,5.775150501672242,0.8035785953177259,0.743598662207358,0.12961204013377922,5.886311036789305,0.2455384615384613,5.910678929765889,BUILD176-A9,4187 +0.6081471571906353,0.015451505016722406,3.9454280936454857,0.7350836120401343,0.7363344481605355,0.13466555183946488,6.961080267558526,0.13668896321070229,7.041033444816051,0.8018628762541803,0.745933110367893,0.14267224080267557,7.589016722408027,0.2708394648829432,7.291812709030099,BUILD180-A9,4186 +0.6033444816053511,0.025698996655518357,3.9065451505016737,0.7535451505016726,0.760247491638796,0.12635785953177264,7.07252508361204,0.10691304347826085,7.403381270903014,0.8060635451505014,0.7422608695652178,0.11597658862876253,6.99107357859531,0.23295986622073556,7.255117056856189,BUILD128-A9,4185 +0.6069966442953021,0.030382550335570434,3.420895973154364,0.7394782608695663,0.7371906354515053,0.10030100334448158,5.568906354515049,0.0981304347826087,5.671056856187291,0.7971571906354513,0.7481170568561872,0.1061438127090301,5.512063545150499,0.21352842809364556,5.608464882943146,BUILD127-A9,4184 +0.6019565217391306,0.016401337792642134,3.685304347826087,0.7381571906354516,0.7371471571906358,0.13640133779264219,6.771244147157191,0.13930434782608692,6.673030100334448,0.7970802675585282,0.748752508361204,0.14617391304347824,7.110806020066889,0.27305685618729103,7.0084448160535135,BUILD142-A9,4183 +0.6034194630872486,0.036852348993288556,3.596466442953018,0.7360702341137132,0.7400301003344479,0.1490468227424749,5.903254180602007,0.15412709030100333,6.085478260869563,0.7901739130434778,0.7418963210702345,0.1614247491638796,6.2882140468227385,0.32511371237458203,6.179301003344479,BUILD148-A9,4182 +0.5989362416107387,0.025630872483221434,3.33060067114094,0.7385050167224081,0.7458093645484956,0.09552173913043475,6.003046822742478,0.09742474916387968,6.185083612040135,0.7967692307692316,0.7455217391304357,0.10010367892976592,6.174812709030097,0.20741471571906375,6.159277591973245,BUILD129-A9,4181 +0.6023612040133776,0.03242140468227423,3.7393745819397974,0.7391438127090305,0.7374548494983283,0.11576254180602004,6.423819397993313,0.11626421404682273,6.484839464882943,0.795458193979933,0.749484949832776,0.1205484949832776,6.305742474916392,0.23653511705685606,6.438030100334448,BUILD126-A9,4180 +0.6068087248322149,0.032738255033557,3.1334328859060423,0.7473444816053516,0.7370301003344488,0.09591638795986628,5.485003344481605,0.0969096989966555,5.4411739130434755,0.796120401337792,0.7427357859531776,0.11113712374581941,5.6653177257525105,0.20856521739130443,5.5088227424749165,BUILD127-A9,4179 +0.6094113712374584,0.023525083612040112,5.040712374581943,0.7387424749163878,0.7409030100334453,0.11655183946488296,8.077709030100333,0.11462876254180605,7.767678929765885,0.7981270903010032,0.7403377926421404,0.12325083612040133,8.112571906354516,0.23673578595317724,8.075367892976592,BUILD151-A9,4178 +0.6027080536912751,0.03224832214765097,3.895822147651008,0.7377725752508362,0.7376722408026759,0.13197658862876252,7.101240802675589,0.1363578595317725,7.034023411371241,0.7981705685618724,0.7437859531772579,0.14055518394648825,7.367535117056855,0.2709030100334451,7.14784949832776,BUILD121-A9,4177 +0.607792642140468,0.03323745819397992,4.022829431438121,0.7457859531772575,0.7514381270903011,0.11514715719063544,6.705247491638797,0.11558862876254183,6.920913043478256,0.7974682274247492,0.7518494983277589,0.11900000000000001,6.865454849498326,0.2333545150501671,6.885585284280933,BUILD128-A9,4176 +0.6025167785234898,0.03251677852348988,4.010312080536911,0.7426287625418061,0.7378662207357858,0.11775585284280943,7.242110367892975,0.12241471571906347,7.324916387959867,0.7983478260869562,0.7513043478260871,0.12491973244147155,7.18786287625418,0.23850167224080276,7.441612040133775,BUILD119-A9,4175 +0.5978489932885905,0.03182885906040265,3.4909496644295284,0.7406521739130434,0.7461270903010037,0.12412709030100336,6.156177257525081,0.13491304347826083,6.2357224080267555,0.803859531772575,0.7451036789297666,0.13721070234113708,6.159498327759196,0.2522541806020066,6.442826086956523,BUILD21-B1,4174 +0.6008963210702343,0.026913043478260807,3.168076923076926,0.7372909698996655,0.7373645484949835,0.107314381270903,5.579093645484952,0.10935451505016729,5.619518394648827,0.8032040133779264,0.7562541806020076,0.11551839464882946,5.830929765886285,0.22004013377926437,5.853421404682273,BUILD136-A9,4173 +0.6070802675585281,0.033050167224080225,3.9110802675585306,0.7462006688963213,0.7373043478260864,0.11823411371237458,6.826712374581943,0.12178595317725756,6.879441471571914,0.7981605351170569,0.7436454849498331,0.12444481605351176,7.006976588628762,0.23567558528428098,7.080083612040134,BUILD132-A9,4172 +0.6018187919463087,0.03151006711409394,3.9918791946308714,0.7357491638795999,0.7357993311036787,0.14554515050167238,7.156759197324412,0.14761872909699003,7.08502341137123,0.8161839464882942,0.7432675585284284,0.1569632107023411,7.39515719063545,0.29171906354515076,7.469959866220737,BUILD158-A9,4171 +0.5956241610738253,0.02871140939597314,3.574895973154363,0.7477123745819398,0.7360702341137125,0.1253010033444816,6.7364381270903015,0.12805685618729093,6.660996655518395,0.7999096989966561,0.7538929765886284,0.13707692307692318,6.98740468227425,0.2550501672240802,6.99569899665552,BUILD157-A9,4170 +0.5908724832214761,0.03386241610738252,4.464731543624163,0.7090735785953177,0.7066421404682275,0.13267558528428103,7.286668896321069,0.13578260869565217,7.311096989966554,0.7764749163879598,0.7289096989966553,0.14066889632107016,8.033454849498336,0.2682909698996655,7.593451505016718,BUILD142-A9,4169 +0.5990033557046976,0.02625167785234897,3.284258389261745,0.7391505016722412,0.7451404682274254,0.11207357859531769,6.335943143812709,0.1122173913043478,6.090046822742474,0.8761812080536916,0.750053511705686,0.1165117056856188,6.350090301003339,0.2436442953020136,8.302969798657713,BUILD118-A9,4168 +0.6051912751677849,0.029822147651006665,3.4785805369127516,0.7382274247491639,0.788605351170569,0.08740133779264216,7.860204013377927,0.09296989966555189,6.007107023411373,0.8355551839464882,0.7461471571906357,0.09706354515050167,5.943872909698993,0.19857525083612035,9.345906354515044,BUILD182-A9,4167 +0.6014515050167228,0.014521739130434782,3.4382943143812716,0.7489264214046825,0.7368494983277593,0.12597993311036787,6.272327759197321,0.1288227424749163,6.250816053511705,0.7965050167224085,0.7590367892976593,0.13941137123745823,6.53985618729097,0.2521973244147157,6.4895083612040105,BUILD169-A9,4166 +0.6067491638795989,0.013819397993311026,4.216311036789298,0.7426789297658867,0.7386789297658864,0.12001003344481613,7.070943143812709,0.1221003344481606,7.047010033444816,0.810906040268456,0.7467725752508361,0.13163879598662204,7.264695652173909,0.24282550335570474,7.637942953020142,BUILD177-A9,4165 +0.6078691275167784,0.034016778523489916,3.3649026845637575,0.740903010033445,0.737448160535117,0.11171906354515054,5.541929765886287,0.11609698996655521,5.617916387959867,0.7977926421404686,0.7421633333333334,0.11810000000000005,5.519480000000003,0.2301237458193979,5.586100334448156,BUILD172-A9,4164 +0.608063758389262,0.02955033557046978,3.782073825503358,0.7377257525083614,0.7519866220735792,0.13207692307692304,6.300909698996652,0.1340100334448161,6.241277591973244,0.7971371237458202,0.7426153846153851,0.13702006688963195,6.364976588628765,0.2624682274247492,6.374555183946487,BUILD163-A9,4163 +0.6048154362416106,0.036201342281879184,3.6729362416107363,0.7511070234113716,0.7491672240802683,0.12638795986622078,5.9796923076923045,0.1286722408026757,6.08772240802676,0.8053311036789302,0.750715719063546,0.130428093645485,6.239899665551841,0.2587759197324416,6.321638795986621,BUILD131-A9,4162 +0.5983110367892978,0.033257525083612016,3.1860802675585296,0.7454515050167224,0.7379096989966559,0.14533779264214045,6.074307692307692,0.1475351170568562,5.969989966555184,0.7972976588628763,0.7466789297658866,0.15285953177257525,6.150207357859532,0.2739230769230772,6.229311036789295,BUILD147-A9,4161 +0.607578595317726,0.014772575250836117,3.770836120401339,0.7387826086956525,0.7404849498327758,0.12182943143812704,6.573839464882943,0.12347157190635454,6.528949832775921,0.7981237458193976,0.7516387959866222,0.1356153846153846,6.460575250836119,0.24741471571906337,6.6912508361204,BUILD169-A9,4160 +0.6043892617449668,0.0320167785234899,3.4837583892617427,0.7398127090301009,0.7388428093645486,0.09756856187290969,6.301297658862878,0.09856521739130442,6.1160301003344495,0.8030503355704696,0.7457959866220734,0.10266889632107028,6.5009364548495,0.2113020134228188,6.667597315436245,BUILD129-A9,4159 +0.6036140939597312,0.03680536912751673,3.9380570469798664,0.7501739130434779,0.7448327759197321,0.1171638795986622,7.1491839464883,0.11741137123745828,7.222448160535116,0.796782608695653,0.743030100334448,0.1257859531772577,7.286371237458189,0.24396989966555185,7.298672240802672,BUILD119-A9,4158 +0.5965150501672243,0.03126755852842806,3.8899264214046827,0.738257525083612,0.7383913043478266,0.13748494983277595,6.951655518394644,0.1393578595317725,7.1206287625418065,0.7951705685618727,0.7555317725752507,0.1428628762541806,7.12149163879599,0.2844816053511705,7.144190635451503,BUILD173-A9,4157 +0.6052608695652179,0.03393979933110364,3.9798260869565203,0.7561839464882949,0.7398160535117065,0.1250301003344482,6.895739130434779,0.12793979933110358,6.949725752508362,0.7998087248322149,0.7433511705685616,0.13003678929765888,7.004083612040134,0.24172483221476512,7.228469798657716,BUILD181-A9,4156 +0.6020535117056853,0.034157190635451494,3.509341137123744,0.7494214046822746,0.738548494983278,0.12281605351170567,6.025324414715724,0.1234682274247492,6.151247491638797,0.8076187290969903,0.7532608695652175,0.13670568561872914,5.973428093645483,0.2428227424749164,6.142377926421409,BUILD133-A9,4155 +0.608607382550335,0.03390939597315434,3.493161073825505,0.7450735785953181,0.7434046822742474,0.14444481605351178,5.959013377926427,0.14490301003344488,6.173515050167227,0.7970401337792642,0.7528595317725753,0.16015719063545156,5.938083612040132,0.28343812709030103,5.930906354515044,BUILD147-A9,4154 +0.6028260869565215,0.0324849498327759,4.099010033444818,0.74275585284281,0.7459498327759203,0.11296321070234117,6.97842474916388,0.12018394648829428,7.280033444816054,0.7988795986622078,0.7440066889632111,0.12057859531772565,6.922896321070232,0.23728428093645482,7.000939799331108,BUILD128-A9,4153 +0.6031711409395976,0.03657382550335568,3.696661073825506,0.7497090301003345,0.7394581939799335,0.13489297658862887,6.672909698996657,0.13967224080267565,6.712434782608696,0.804578595317726,0.7444280936454857,0.14787625418060193,6.761662207357861,0.2579397993311036,6.8766856187291046,BUILD155-A9,4152 +0.6063020134228188,0.038429530201342266,3.99168791946309,0.7385117056856195,0.736491638795987,0.14959197324414708,6.734341137123753,0.14880602006688964,6.84944481605351,0.8040702341137124,0.814442953020135,0.15777852348993285,9.337614093959733,0.2945819397993315,7.011538461538464,BUILD179-A9,4151 +0.5967684563758392,0.029181208053691256,3.776305369127515,0.7473444816053522,0.7378394648829435,0.1408093645484949,7.358702341137124,0.14029765886287623,7.172344481605351,0.8090434782608693,0.7440635451505015,0.14708026755852838,7.456769230769235,0.2589933110367893,7.541525083612039,BUILD141-A9,4150 +0.6116187290969901,0.013983277591973238,3.2883779264214037,0.7376354515050169,0.7381304347826086,0.09571237458193983,5.724929765886291,0.09747157190635451,5.619605351170563,0.7939698996655523,0.750795986622074,0.09905351170568556,5.82977926421405,0.2047558528428093,5.868170568561873,BUILD153-A9,4149 +0.6068154362416109,0.029869127516778518,3.714664429530202,0.7464314381270902,0.738257525083613,0.13051170568561868,6.634976588628763,0.13162876254180594,6.836163879598661,0.7961103678929756,0.7454949832775926,0.13860200668896316,6.724193979933107,0.25495317725752503,6.755404682274247,BUILD164-A9,4148 +0.62115100671141,0.03495973154362412,5.827922818791945,0.7360802675585287,0.6921638795986619,0.13262207357859523,12.642826086956527,0.1380066889632108,7.594953177257528,0.7947224080267559,0.737234113712375,0.13876923076923078,7.92179264214047,0.27714715719063576,8.033862876254183,BUILD166-A9,4147 +0.6106287625418058,0.030491638795986584,3.42128093645485,0.7384381270903009,0.7415418060200671,0.14415050167224078,5.94754180602007,0.14818729096989958,5.843973244147155,0.7985872483221476,0.7435685618729097,0.15368896321070238,6.037488294314378,0.2720201342281882,6.065557046979865,BUILD147-A9,4146 +0.6061404682274251,0.030548494983277552,3.321451505016724,0.7410570469798659,0.7377792642140467,0.12946488294314382,6.009949832775922,0.12761744966442962,6.225046979865773,0.8003545150501674,0.7445451505016727,0.13401337792642137,6.122193979933113,0.2474581939799331,6.273745819397995,BUILD140-A9,4145 +0.6065805369127516,0.03587583892617446,4.088889261744967,0.7407525083612043,0.7387324414715718,0.13726086956521752,7.112715719063542,0.1400234113712374,7.234468227424748,0.7999096989966551,0.7452474916387958,0.14519063545150507,7.028314381270899,0.27825083612040147,7.379698996655522,BUILD121-A9,4144 +0.5968456375838924,0.02956040268456373,3.5951375838926176,0.7392742474916386,0.7377424749163882,0.15356187290969894,6.596528428093648,0.15810367892976576,6.660882943143811,0.7949665551839463,0.7420501672240803,0.1628461538461538,6.743672240802677,0.293836120401338,6.884588628762545,BUILD154-A9,4143 +0.5823993288590604,0.03453355704697981,3.423442953020137,0.7186622073578594,0.7236488294314378,0.13855518394648828,6.368508361204014,0.13939130434782612,6.380839464882943,0.781254180602006,0.7212608695652173,0.14772909698996645,6.489806020066891,0.271377926421405,6.601284280936457,BUILD142-A9,4142 +0.5777658862876248,0.034381270903009985,2.8099431438127103,0.7195217391304355,0.717675585284281,0.13060869565217395,5.367839464882944,0.13108695652173907,5.38424080267559,0.7801973244147156,0.7220602006688962,0.13950167224080268,5.294411371237461,0.24702006688963218,5.547267558528429,BUILD160-A9,4141 +0.6128791946308726,0.03797651006711408,4.772120805369129,0.7501003344481606,0.7464013377926426,0.13212040133779268,7.058832775919731,0.1340066889632106,7.294976588628765,0.7990100334448159,0.7521103678929769,0.1381237458193981,7.2385618729097,0.2690668896321074,7.3101672240802715,BUILD121-A9,4140 +0.6058428093645485,0.0300602006688963,3.1675250836120408,0.7376688963210707,0.737936454849499,0.11492307692307695,5.533347826086954,0.11633444816053519,5.577735785953172,0.7974347826086958,0.7527123745819397,0.11727759197324414,5.723785953177254,0.23210033444816042,5.684802675585284,BUILD138-A9,4139 +0.6014395973154361,0.03355704697986575,3.7081677852348998,0.7367558528428096,0.7377892976588631,0.14779598662207355,6.632926421404678,0.15010033444816062,6.61527424749163,0.8027257525083619,0.7432775919732444,0.154695652173913,6.954632107023412,0.28350501672240785,6.770317725752503,BUILD179-A9,4138 +0.604304347826087,0.029411371237458152,3.7421872909698988,0.7425050167224083,0.7453913043478263,0.11870234113712372,6.12904347826087,0.1236086956521739,6.1917324414715695,0.8117826086956521,0.7487625418060203,0.12799999999999992,6.1550367892976565,0.24646822742474903,6.1860100334448145,BUILD131-A9,4137 +0.6054999999999993,0.03370469798657714,3.7793355704697986,0.7470903010033451,0.741341137123746,0.13784280936454857,6.630859531772577,0.1390735785953178,6.624137123745819,0.8026454849498329,0.7401003344481616,0.14328428093645496,6.667892976588629,0.27426421404682283,6.6378461538461515,BUILD142-A9,4136 +0.6051174496644294,0.03285234899328856,3.7933557046979844,0.7402341137123747,0.7372943143812712,0.14383612040133778,7.128167224080267,0.14055518394648844,7.034220735785952,0.8064347826086955,0.7429096989966566,0.1468628762541805,7.289280936454854,0.2597023411371238,7.307581939799332,BUILD141-A9,4135 +0.6042173913043474,0.03345150501672236,3.7865284280936455,0.7448829431438132,0.7390501672240801,0.13594314381270906,7.068411371237462,0.1362274247491639,6.927150501672245,0.7966655518394646,0.746026755852843,0.1405083612040133,7.24333444816054,0.265444816053512,7.185521739130432,BUILD173-A9,4134 +0.5758628762541806,0.03318729096989964,2.9963411371237467,0.7164916387959869,0.7254581939799333,0.12377926421404674,6.312989966555184,0.11933444816053498,6.361234113712374,0.796515050167224,0.7253478260869569,0.12507692307692309,6.642153846153843,0.26046822742474945,6.733187290969901,BUILD123-A9,4133 +0.5682943143812711,0.010645484949832772,3.2202742474916404,0.722377926421405,0.757100671140939,0.1405469798657718,8.247070469798663,0.1407023411371237,6.864715719063549,0.788849498327759,0.7234682274247491,0.1444816053511707,6.806297658862874,0.27827759197324425,6.862297658862874,BUILD141-A9,4132
diff --git a/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.json b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.json new file mode 100644 index 0000000..4f03c00b --- /dev/null +++ b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4132_4369.json
@@ -0,0 +1,12142 @@ +{ + "builds": [ + { + "bot": "BUILD154-A9", + "number": 4369, + "tests": [ + { + "DRAM Power_0": 0.6068494983277595, + "GT Power_0": 0.018812709030100336, + "IA Power_0": 3.5557692307692306, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.877545150501673, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7390367892976588, + "GT Power_0": 0.14097993311036802, + "IA Power_0": 6.335003344481605, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.780254180602001, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7375050167224083, + "GT Power_0": 0.13655518394648827, + "IA Power_0": 6.405548494983279, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.852143812709029, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7998260869565218, + "GT Power_0": 0.2869230769230772, + "IA Power_0": 7.053688963210702, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6618695652173985, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7430836120401343, + "GT Power_0": 0.1446622073578596, + "IA Power_0": 6.659428093645483, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.078571906354515, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4368, + "tests": [ + { + "DRAM Power_0": 0.6071906354515052, + "GT Power_0": 0.03288294314381269, + "IA Power_0": 3.2457023411371217, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.612913043478261, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7431337792642148, + "GT Power_0": 0.09660869565217395, + "IA Power_0": 5.638324414715715, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.050836120401339, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7403187919463086, + "GT Power_0": 0.09521812080536916, + "IA Power_0": 5.775677852348996, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.198288590604027, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.8062575250836121, + "GT Power_0": 0.20584949832775926, + "IA Power_0": 6.005561872909699, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.567073578595319, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7545752508361204, + "GT Power_0": 0.09916053511705684, + "IA Power_0": 5.897187290969904, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.367143812709026, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4367, + "tests": [ + { + "DRAM Power_0": 0.6010535117056858, + "GT Power_0": 0.03132441471571905, + "IA Power_0": 3.2086120401337794, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.519321070234116, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7415117056856191, + "GT Power_0": 0.09304682274247494, + "IA Power_0": 5.616675585284283, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.033702341137123, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7400769230769235, + "GT Power_0": 0.09204347826086967, + "IA Power_0": 5.632755852842813, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.032846153846155, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7965953177257524, + "GT Power_0": 0.20512709030100354, + "IA Power_0": 5.85499331103679, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.367023411371242, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7513946488294316, + "GT Power_0": 0.09887959866220748, + "IA Power_0": 5.785324414715719, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.243083612040132, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD174-A9", + "number": 4366, + "tests": [ + { + "DRAM Power_0": 0.60066889632107, + "GT Power_0": 0.029829431438127073, + "IA Power_0": 3.8393578595317712, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.18472575250836, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7478996655518401, + "GT Power_0": 0.13032775919732448, + "IA Power_0": 6.889438127090299, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.362280936454845, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7389397993311043, + "GT Power_0": 0.12823411371237467, + "IA Power_0": 6.8667491638795966, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.307662207357857, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7944866666666667, + "GT Power_0": 0.2750866666666671, + "IA Power_0": 7.160306666666664, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.770593333333329, + "name": "Video_720_MP4_Underlay", + "samples": 300 + }, + { + "DRAM Power_0": 0.7509866220735787, + "GT Power_0": 0.13532775919732445, + "IA Power_0": 7.146418060200667, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.66434448160535, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4365, + "tests": [ + { + "DRAM Power_0": 0.6018327759197322, + "GT Power_0": 0.016210702341137122, + "IA Power_0": 3.8603043478260908, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.152715719063544, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7424180602006694, + "GT Power_0": 0.12936789297658866, + "IA Power_0": 6.582919732441469, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0250033444816085, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7490266666666666, + "GT Power_0": 0.1301433333333334, + "IA Power_0": 6.5901966666666665, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.092393333333331, + "name": "Video_720_MP4_Fullscreen", + "samples": 300 + }, + { + "DRAM Power_0": 0.8013812709030103, + "GT Power_0": 0.2616555183946489, + "IA Power_0": 7.020826086956522, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.631224080267557, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7467826086956526, + "GT Power_0": 0.1340334448160536, + "IA Power_0": 6.587702341137121, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.008505016722405, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4364, + "tests": [ + { + "DRAM Power_0": 0.6064060402684562, + "GT Power_0": 0.03058389261744964, + "IA Power_0": 3.7511610738255032, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.110211409395975, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.746892976588629, + "GT Power_0": 0.12097993311036795, + "IA Power_0": 6.393301003344478, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.877163879598662, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7511906354515052, + "GT Power_0": 0.11764548494983278, + "IA Power_0": 6.487190635451507, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.113903010033444, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7972173913043478, + "GT Power_0": 0.2564983277591972, + "IA Power_0": 6.654789297658861, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.217381270903004, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7534882943143817, + "GT Power_0": 0.122076923076923, + "IA Power_0": 6.2537491638795935, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.733180602006693, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4363, + "tests": [ + { + "DRAM Power_0": 0.6101040268456372, + "GT Power_0": 0.030489932885906023, + "IA Power_0": 3.477530201342282, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8483020134228214, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7419498327759206, + "GT Power_0": 0.09489632107023416, + "IA Power_0": 5.819107023411375, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.256715719063544, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7564932885906045, + "GT Power_0": 0.09451342281879198, + "IA Power_0": 5.851003355704697, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.359721476510064, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.8061711409395972, + "GT Power_0": 0.20653691275167785, + "IA Power_0": 6.12470134228188, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.739291946308723, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.747384615384616, + "GT Power_0": 0.1032842809364548, + "IA Power_0": 5.820478260869566, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2371872909699, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD120-A9", + "number": 4362, + "tests": [ + { + "DRAM Power_0": 0.6038859060402685, + "GT Power_0": 0.030100671140939565, + "IA Power_0": 3.909211409395973, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.21813422818792, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7417157190635453, + "GT Power_0": 0.12025418060200672, + "IA Power_0": 6.634374581939798, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.051290969899668, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.740852842809365, + "GT Power_0": 0.11937792642140477, + "IA Power_0": 6.563709030100331, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.001317725752507, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8167391304347831, + "GT Power_0": 0.26244147157190645, + "IA Power_0": 6.852200668896326, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.60039130434783, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7471404682274253, + "GT Power_0": 0.12995986622073571, + "IA Power_0": 6.7082073578595285, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.147889632107024, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4361, + "tests": [ + { + "DRAM Power_0": 0.6046287625418064, + "GT Power_0": 0.03329765886287623, + "IA Power_0": 3.7343745819397984, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.053113712374585, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7412508361204015, + "GT Power_0": 0.11093311036789297, + "IA Power_0": 6.8350869565217405, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.251113712374577, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7398628762541815, + "GT Power_0": 0.10955852842809367, + "IA Power_0": 6.784565217391302, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2007257525083626, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8043846153846158, + "GT Power_0": 0.23446822742474924, + "IA Power_0": 7.060468227424754, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.729682274247493, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7477959866220741, + "GT Power_0": 0.11628093645484958, + "IA Power_0": 6.847311036789297, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.274749163879603, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4360, + "tests": [ + { + "DRAM Power_0": 0.6051170568561873, + "GT Power_0": 0.03205351170568558, + "IA Power_0": 3.8255016722408026, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.186929765886285, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.741515050167225, + "GT Power_0": 0.142066889632107, + "IA Power_0": 6.7327759197324415, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1832207357859525, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393277591973249, + "GT Power_0": 0.1421103678929766, + "IA Power_0": 6.748448160535117, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.189140468227426, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7982775919732441, + "GT Power_0": 0.29192307692307695, + "IA Power_0": 6.993214046822742, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.637886287625415, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7441605351170567, + "GT Power_0": 0.1468494983277592, + "IA Power_0": 6.825351170568566, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.280197324414718, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4359, + "tests": [ + { + "DRAM Power_0": 0.6010033557046979, + "GT Power_0": 0.037842281879194584, + "IA Power_0": 4.42454697986577, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.716476510067115, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7450268456375843, + "GT Power_0": 0.11539932885906035, + "IA Power_0": 7.757580536912755, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.202499999999999, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7408929765886288, + "GT Power_0": 0.11479933110367894, + "IA Power_0": 7.62063545150502, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.052712374581946, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.797989966555184, + "GT Power_0": 0.24897324414715724, + "IA Power_0": 7.944612040133776, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.493959866220747, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7464633333333337, + "GT Power_0": 0.12705999999999995, + "IA Power_0": 7.586693333333331, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.989659999999996, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 300 + } + ] + }, + { + "bot": "BUILD170-A9", + "number": 4358, + "tests": [ + { + "DRAM Power_0": 0.6214899328859063, + "GT Power_0": 0.04365436241610738, + "IA Power_0": 4.1975167785234895, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.570456375838925, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7454515050167225, + "GT Power_0": 0.11245150501672248, + "IA Power_0": 6.232571906354517, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.713197324414718, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7411672240802681, + "GT Power_0": 0.10944147157190635, + "IA Power_0": 6.401795986622073, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8916488294314355, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8134983277591972, + "GT Power_0": 0.27796321070234165, + "IA Power_0": 7.120096989966557, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.814103678929764, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7548963210702344, + "GT Power_0": 0.11907692307692302, + "IA Power_0": 6.582538461538463, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.137464882943145, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4357, + "tests": [ + { + "DRAM Power_0": 0.6017416107382557, + "GT Power_0": 0.014234899328859052, + "IA Power_0": 3.970818791946309, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2501107382550325, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7421070234113719, + "GT Power_0": 0.12282274247491647, + "IA Power_0": 7.29115719063545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.714839464882945, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7424581939799334, + "GT Power_0": 0.12349163879598657, + "IA Power_0": 7.002458193979935, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4970066889632125, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8030234113712367, + "GT Power_0": 0.24650167224080252, + "IA Power_0": 7.274020066889633, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.8751538461538475, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.744839464882943, + "GT Power_0": 0.1267926421404682, + "IA Power_0": 7.131193979933115, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.555484949832771, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4356, + "tests": [ + { + "DRAM Power_0": 0.5984280936454849, + "GT Power_0": 0.011458193979933109, + "IA Power_0": 3.681264214046824, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.974541806020063, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7413444816053514, + "GT Power_0": 0.14109030100334444, + "IA Power_0": 6.502735785953178, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9638093645485, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7390568561872907, + "GT Power_0": 0.14180936454849496, + "IA Power_0": 6.524692307692307, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.964394648829431, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8077023411371236, + "GT Power_0": 0.3118929765886287, + "IA Power_0": 6.848060200668892, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.482806020066886, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434749163879596, + "GT Power_0": 0.15801003344481607, + "IA Power_0": 6.560832775919729, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.996304347826086, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4355, + "tests": [ + { + "DRAM Power_0": 0.5932541806020071, + "GT Power_0": 0.023093645484949802, + "IA Power_0": 3.725946488294312, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.008070234113712, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7473355704697986, + "GT Power_0": 0.1100436241610738, + "IA Power_0": 6.95894630872483, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.456624161073829, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.741397993311037, + "GT Power_0": 0.11381605351170557, + "IA Power_0": 7.057999999999999, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.470585284280935, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.804742474916388, + "GT Power_0": 0.2622675585284281, + "IA Power_0": 7.357789297658865, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.947903010033443, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7546220735785953, + "GT Power_0": 0.12296989966555182, + "IA Power_0": 7.177351170568565, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.680113712374578, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD183-A9", + "number": 4354, + "tests": [ + { + "DRAM Power_0": 0.5975919732441468, + "GT Power_0": 0.011545150501672236, + "IA Power_0": 3.6374715719063575, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9085217391304368, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7417391304347829, + "GT Power_0": 0.12476588628762537, + "IA Power_0": 6.434096989966557, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.858515050167221, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.737996655518395, + "GT Power_0": 0.12570234113712364, + "IA Power_0": 6.435036789297659, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.850742474916392, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8059832775919733, + "GT Power_0": 0.27376923076923076, + "IA Power_0": 6.574829431438124, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.234852842809365, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432675585284286, + "GT Power_0": 0.13671906354515043, + "IA Power_0": 6.444745819397991, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.885073578595317, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4353, + "tests": [ + { + "DRAM Power_0": 0.6064798657718116, + "GT Power_0": 0.02613087248322143, + "IA Power_0": 3.341191275167786, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7007248322147683, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7393745819397997, + "GT Power_0": 0.09782274247491639, + "IA Power_0": 5.606454849498331, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.01386956521739, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393879598662204, + "GT Power_0": 0.093752508361204, + "IA Power_0": 5.6163645484949845, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.024478260869568, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8027123745819396, + "GT Power_0": 0.21468227424749167, + "IA Power_0": 5.661979933110366, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.269056856187293, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7467892976588634, + "GT Power_0": 0.10071906354515045, + "IA Power_0": 5.663113712374579, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.083454849498331, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD170-A9", + "number": 4352, + "tests": [ + { + "DRAM Power_0": 0.6013926174496647, + "GT Power_0": 0.035204697986577146, + "IA Power_0": 3.325825503355706, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6626946308724833, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7433545150501668, + "GT Power_0": 0.10203678929765882, + "IA Power_0": 5.662478260869571, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.139197324414713, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7398294314381266, + "GT Power_0": 0.09960535117056857, + "IA Power_0": 5.79538461538462, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2260100334448145, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7956822742474917, + "GT Power_0": 0.23795317725752507, + "IA Power_0": 6.045816053511711, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.6157257525083635, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7440936454849503, + "GT Power_0": 0.10574247491638791, + "IA Power_0": 5.698183946488294, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.133284280936453, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD127-A9", + "number": 4351, + "tests": [ + { + "DRAM Power_0": 0.6123444816053512, + "GT Power_0": 0.03338127090301, + "IA Power_0": 3.4062842809364553, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7698528428093634, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434816053511709, + "GT Power_0": 0.10219397993311043, + "IA Power_0": 5.615438127090301, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.019615384615386, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7433154362416116, + "GT Power_0": 0.10228187919463087, + "IA Power_0": 5.732208053691271, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.143255033557043, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.8061705685618729, + "GT Power_0": 0.25089966555183946, + "IA Power_0": 5.717003344481607, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.317565217391307, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7461304347826092, + "GT Power_0": 0.1076321070234114, + "IA Power_0": 5.607872909698997, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.039371237458194, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4350, + "tests": [ + { + "DRAM Power_0": 0.6026912751677851, + "GT Power_0": 0.035503355704697946, + "IA Power_0": 3.194647651006713, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.511684563758389, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7403478260869565, + "GT Power_0": 0.10238127090301002, + "IA Power_0": 5.550337792642145, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.963016722408032, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396421404682276, + "GT Power_0": 0.10244481605351173, + "IA Power_0": 5.66841137123746, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.071391304347825, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8079498327759201, + "GT Power_0": 0.2188929765886288, + "IA Power_0": 6.0571137123745835, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.677394648829435, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7490200668896324, + "GT Power_0": 0.11029431438127094, + "IA Power_0": 5.941484949832773, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.359913043478258, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4349, + "tests": [ + { + "DRAM Power_0": 0.6024765100671143, + "GT Power_0": 0.03877516778523486, + "IA Power_0": 3.6104463087248324, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9210469798657717, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7581582491582494, + "GT Power_0": 0.13903367003367004, + "IA Power_0": 6.660720538720539, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.327808080808085, + "name": "Video_720_MP4", + "samples": 297 + }, + { + "DRAM Power_0": 0.7398093645484953, + "GT Power_0": 0.13140802675585297, + "IA Power_0": 6.413655518394648, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8258260869565195, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7964381270903008, + "GT Power_0": 0.2787056856187294, + "IA Power_0": 6.594779264214043, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.189103678929766, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7462341137123758, + "GT Power_0": 0.14068896321070237, + "IA Power_0": 6.6512976588628785, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.108528428093648, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4348, + "tests": [ + { + "DRAM Power_0": 0.6036053511705686, + "GT Power_0": 0.027130434782608678, + "IA Power_0": 4.0524749163879585, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.400130434782608, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7394916387959868, + "GT Power_0": 0.12096989966555187, + "IA Power_0": 7.1617525083612055, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.58091973244148, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7418862876254185, + "GT Power_0": 0.11748160535117055, + "IA Power_0": 7.160779264214046, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.56941806020067, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7960501672240797, + "GT Power_0": 0.244732441471572, + "IA Power_0": 7.379762541806014, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.967438127090303, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7441772575250839, + "GT Power_0": 0.12645150501672248, + "IA Power_0": 7.271712374581937, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.689157190635453, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD168-A9", + "number": 4347, + "tests": [ + { + "DRAM Power_0": 0.6012617449664428, + "GT Power_0": 0.03543959731543621, + "IA Power_0": 3.8820436241610743, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.183177852348992, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7543210702341135, + "GT Power_0": 0.13192976588628758, + "IA Power_0": 6.792327759197326, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3186956521739175, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.737882943143813, + "GT Power_0": 0.12899665551839468, + "IA Power_0": 6.500347826086953, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9306655518394615, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8046354515050166, + "GT Power_0": 0.2647023411371239, + "IA Power_0": 6.668816053511705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.319387959866225, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.744672240802676, + "GT Power_0": 0.14705016722408035, + "IA Power_0": 6.588692307692306, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.020986622073581, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4346, + "tests": [ + { + "DRAM Power_0": 0.6056020066889632, + "GT Power_0": 0.031698996655518355, + "IA Power_0": 3.3551204013377918, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6769264214046804, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7386120401337793, + "GT Power_0": 0.09974247491638807, + "IA Power_0": 5.8934180602006645, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.315505016722412, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7399866220735793, + "GT Power_0": 0.09858862876254179, + "IA Power_0": 5.962374581939802, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.367411371237462, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7960735785953182, + "GT Power_0": 0.2170802675585286, + "IA Power_0": 6.299652173913044, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.849230769230774, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7548929765886286, + "GT Power_0": 0.10199665551839471, + "IA Power_0": 6.435618729096996, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.85005685618729, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4345, + "tests": [ + { + "DRAM Power_0": 0.6007751677852349, + "GT Power_0": 0.029238255033557016, + "IA Power_0": 3.0864865771812053, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4438255033557055, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7417324414715727, + "GT Power_0": 0.09797993311036798, + "IA Power_0": 5.732585284280936, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.137558528428091, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7481739130434785, + "GT Power_0": 0.09602341137123745, + "IA Power_0": 5.77018060200669, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.221284280936455, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7980769230769232, + "GT Power_0": 0.20724414715719047, + "IA Power_0": 5.961127090301005, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.490665551839463, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7444515050167225, + "GT Power_0": 0.1013177257525083, + "IA Power_0": 5.9465886287625445, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.349668896321069, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4344, + "tests": [ + { + "DRAM Power_0": 0.6045872483221476, + "GT Power_0": 0.03620469798657715, + "IA Power_0": 3.5506711409395963, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.890651006711408, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7476321070234114, + "GT Power_0": 0.13623745819397992, + "IA Power_0": 6.495929765886288, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.004026755852839, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396755852842809, + "GT Power_0": 0.1366989966555184, + "IA Power_0": 6.446110367892977, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.904996655518404, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7949130434782613, + "GT Power_0": 0.28241471571906374, + "IA Power_0": 6.694939799331103, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.344575250836118, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7371638795986626, + "GT Power_0": 0.1410468227424748, + "IA Power_0": 6.358729096989968, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.807535117056859, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD132-A9", + "number": 4343, + "tests": [ + { + "DRAM Power_0": 0.6028087248322151, + "GT Power_0": 0.030446308724832203, + "IA Power_0": 3.9266778523489907, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.225046979865771, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7489230769230776, + "GT Power_0": 0.09613712374581937, + "IA Power_0": 6.78560869565217, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.24385618729097, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393478260869567, + "GT Power_0": 0.09659531772575249, + "IA Power_0": 6.812712374581936, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.212361204013378, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7991806020066886, + "GT Power_0": 0.22104347826086965, + "IA Power_0": 6.901739130434782, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.40569230769231, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7549832775919731, + "GT Power_0": 0.10813043478260863, + "IA Power_0": 6.773070234113715, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.270839464882945, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD156-A9", + "number": 4342, + "tests": [ + { + "DRAM Power_0": 0.6052181208053689, + "GT Power_0": 0.03165436241610735, + "IA Power_0": 3.2472214765100675, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.618476510067115, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7457591973244148, + "GT Power_0": 0.13103678929765886, + "IA Power_0": 5.663254180602002, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.188033444816056, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7428795986622074, + "GT Power_0": 0.13358193979933108, + "IA Power_0": 5.798381270903004, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.246451505016722, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8064481605351171, + "GT Power_0": 0.2691605351170571, + "IA Power_0": 6.238913043478256, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8771872909699, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7537725752508362, + "GT Power_0": 0.14229431438127077, + "IA Power_0": 5.903846153846153, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.408775919732441, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD146-A9", + "number": 4341, + "tests": [ + { + "DRAM Power_0": 0.6092751677852348, + "GT Power_0": 0.036315436241610696, + "IA Power_0": 3.7427248322147664, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.113550335570471, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7414381270903007, + "GT Power_0": 0.12799999999999995, + "IA Power_0": 6.2483812709030095, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.666926421404685, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7389565217391308, + "GT Power_0": 0.12754180602006684, + "IA Power_0": 6.214755852842808, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.65119397993311, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7969331103678926, + "GT Power_0": 0.2582073578595316, + "IA Power_0": 6.427765886287629, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.004103678929768, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7484548494983279, + "GT Power_0": 0.13817056856187293, + "IA Power_0": 6.29308695652174, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.675618729096993, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD168-A9", + "number": 4340, + "tests": [ + { + "DRAM Power_0": 0.6063624161073825, + "GT Power_0": 0.03378859060402681, + "IA Power_0": 3.6690134228187903, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9983255033557046, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7491304347826088, + "GT Power_0": 0.1303879598662208, + "IA Power_0": 6.322826086956519, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.7938160535117085, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7373578595317732, + "GT Power_0": 0.12869565217391304, + "IA Power_0": 6.2925986622073635, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.735518394648831, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8068428093645479, + "GT Power_0": 0.2669063545150503, + "IA Power_0": 6.549066889632111, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.23071571906354, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.754304347826087, + "GT Power_0": 0.1381939799331104, + "IA Power_0": 6.59423076923077, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.068331103678926, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD120-A9", + "number": 4339, + "tests": [ + { + "DRAM Power_0": 0.6012140468227422, + "GT Power_0": 0.030331103678929727, + "IA Power_0": 3.69022408026756, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9970301003344493, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7488260869565228, + "GT Power_0": 0.12258528428093647, + "IA Power_0": 6.444324414715722, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.006892976588629, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7365752508361209, + "GT Power_0": 0.12261538461538464, + "IA Power_0": 6.3708528428093665, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.778715719063544, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8074314381270906, + "GT Power_0": 0.2648260869565218, + "IA Power_0": 6.606177257525084, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.465983277591976, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7604882943143817, + "GT Power_0": 0.13330100334448158, + "IA Power_0": 6.90097993311037, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.51476588628763, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD161-A9", + "number": 4338, + "tests": [ + { + "DRAM Power_0": 0.6030267558528425, + "GT Power_0": 0.033946488294314375, + "IA Power_0": 3.277428093645486, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5929163879598667, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7507725752508357, + "GT Power_0": 0.11647491638795981, + "IA Power_0": 5.4514983277591975, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.929598662207358, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7398561872909698, + "GT Power_0": 0.11516387959866224, + "IA Power_0": 5.353749163879598, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.775297658862873, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8070301003344478, + "GT Power_0": 0.24645484949832747, + "IA Power_0": 5.869113712374584, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.446257525083612, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7502006688963214, + "GT Power_0": 0.12641137123745808, + "IA Power_0": 5.623454849498324, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.071682274247491, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4337, + "tests": [ + { + "DRAM Power_0": 0.6069765100671144, + "GT Power_0": 0.03426845637583886, + "IA Power_0": 3.7895939597315436, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.152016778523491, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7864747474747478, + "GT Power_0": 0.11823905723905723, + "IA Power_0": 10.543791245791246, + "Package Power Limit_0": 65.0, + "Processor Power_0": 10.93910437710438, + "name": "Video_720_MP4", + "samples": 297 + }, + { + "DRAM Power_0": 0.7593657718120814, + "GT Power_0": 0.11345302013422819, + "IA Power_0": 7.633694630872495, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.135845637583895, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.8143712374581942, + "GT Power_0": 0.23791973244147177, + "IA Power_0": 7.100558528428095, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.745602006688961, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7459598662207362, + "GT Power_0": 0.11817725752508369, + "IA Power_0": 6.472026755852843, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.883591973244146, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4336, + "tests": [ + { + "DRAM Power_0": 0.6020100334448164, + "GT Power_0": 0.012628762541806013, + "IA Power_0": 3.506367892976587, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.80274247491639, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396789297658866, + "GT Power_0": 0.09406020066889634, + "IA Power_0": 5.957752508361197, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.35638461538461, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7509464882943148, + "GT Power_0": 0.09258528428093651, + "IA Power_0": 6.041036789297655, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.481752508361207, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8032040133779265, + "GT Power_0": 0.2077725752508362, + "IA Power_0": 6.249933110367896, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.830264214046819, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7447558528428102, + "GT Power_0": 0.09591638795986628, + "IA Power_0": 6.100886287625422, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.524438127090294, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD170-A9", + "number": 4335, + "tests": [ + { + "DRAM Power_0": 0.5979397993311034, + "GT Power_0": 0.010545150501672233, + "IA Power_0": 3.140478260869564, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4371538461538447, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7386020066889634, + "GT Power_0": 0.10906354515050162, + "IA Power_0": 5.588120401337791, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.02754180602007, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7527759197324426, + "GT Power_0": 0.10821404682274241, + "IA Power_0": 5.626892976588629, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.1491404682274275, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.806715719063545, + "GT Power_0": 0.2599264214046824, + "IA Power_0": 5.956923076923075, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.55507023411371, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7423745819397991, + "GT Power_0": 0.11504682274247496, + "IA Power_0": 5.8168729096989935, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.251578595317718, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD162-A9", + "number": 4334, + "tests": [ + { + "DRAM Power_0": 0.6035919732441468, + "GT Power_0": 0.015468227424749159, + "IA Power_0": 3.3310535117056848, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6274816053511696, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7503010033444827, + "GT Power_0": 0.12858193979933105, + "IA Power_0": 6.370735785953175, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.825551839464888, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7375133333333337, + "GT Power_0": 0.1272099999999999, + "IA Power_0": 5.807436666666663, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.25689333333333, + "name": "Video_720_MP4_Fullscreen", + "samples": 300 + }, + { + "DRAM Power_0": 0.8045886287625421, + "GT Power_0": 0.26178260869565223, + "IA Power_0": 6.124518394648829, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.765307692307692, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7441705685618736, + "GT Power_0": 0.1330334448160535, + "IA Power_0": 5.935324414715719, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.384775919732448, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD162-A9", + "number": 4333, + "tests": [ + { + "DRAM Power_0": 0.6083053691275165, + "GT Power_0": 0.03761073825503351, + "IA Power_0": 3.584828859060404, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9171308724832232, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.742197324414716, + "GT Power_0": 0.13144816053511704, + "IA Power_0": 5.6996220735786, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.145846153846159, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7497123745819398, + "GT Power_0": 0.12860535117056854, + "IA Power_0": 5.70833779264214, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.230394648829433, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7956354515050168, + "GT Power_0": 0.2665585284280937, + "IA Power_0": 5.836324414715723, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.433364548494982, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7456889632107024, + "GT Power_0": 0.1394949832775919, + "IA Power_0": 5.748742474916386, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2148695652173895, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD124-A9", + "number": 4332, + "tests": [ + { + "DRAM Power_0": 0.6104261744966443, + "GT Power_0": 0.03689932885906036, + "IA Power_0": 3.936234899328858, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.304093959731541, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7386755852842811, + "GT Power_0": 0.13695317725752512, + "IA Power_0": 6.511555183946482, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.943404682274252, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7361505016722405, + "GT Power_0": 0.13262207357859523, + "IA Power_0": 6.370177257525085, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8042976588628745, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7946120401337794, + "GT Power_0": 0.288886287625418, + "IA Power_0": 6.609719063545155, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.23669899665552, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7435652173913039, + "GT Power_0": 0.14358193979933118, + "IA Power_0": 6.478628762541805, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.935494983277593, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD158-A9", + "number": 4331, + "tests": [ + { + "DRAM Power_0": 0.6003745819398002, + "GT Power_0": 0.03186287625418057, + "IA Power_0": 3.8628193979933094, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.174434782608696, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396789297658868, + "GT Power_0": 0.13589297658862873, + "IA Power_0": 7.07873578595318, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.528073578595317, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7462307692307687, + "GT Power_0": 0.13546153846153836, + "IA Power_0": 7.015585284280933, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.510474916387955, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7943545150501674, + "GT Power_0": 0.28275250836120436, + "IA Power_0": 7.369836120401332, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.979729096989966, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7460434782608697, + "GT Power_0": 0.14264214046822746, + "IA Power_0": 7.317598662207359, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.765849498327764, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4330, + "tests": [ + { + "DRAM Power_0": 0.6084597315436235, + "GT Power_0": 0.032899328859060405, + "IA Power_0": 3.5483993288590625, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9161543624161084, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.745123745819398, + "GT Power_0": 0.13117056856187304, + "IA Power_0": 5.909301003344478, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.362578595317724, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7390836120401342, + "GT Power_0": 0.130571906354515, + "IA Power_0": 5.855906354515051, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.295103678929763, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7972107023411373, + "GT Power_0": 0.2674515050167225, + "IA Power_0": 6.172936454849495, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.7763779264214055, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.745809364548495, + "GT Power_0": 0.13838127090300997, + "IA Power_0": 6.252722408026755, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.708150501672242, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4329, + "tests": [ + { + "DRAM Power_0": 0.6058929765886286, + "GT Power_0": 0.032314381270902984, + "IA Power_0": 3.93273578595318, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2781404682274236, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7465250836120402, + "GT Power_0": 0.1179565217391304, + "IA Power_0": 6.800224080267563, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.234331103678931, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7385551839464891, + "GT Power_0": 0.12243478260869561, + "IA Power_0": 6.78580936454849, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.219802675585278, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8038695652173914, + "GT Power_0": 0.2549197324414714, + "IA Power_0": 7.1142508361204015, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.748749163879604, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7437357859531779, + "GT Power_0": 0.1270969899665551, + "IA Power_0": 7.00778929765886, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.445742474916388, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4328, + "tests": [ + { + "DRAM Power_0": 0.6210869565217388, + "GT Power_0": 0.02301003344481604, + "IA Power_0": 4.748959866220736, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.103769230769234, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7464147157190629, + "GT Power_0": 0.11720735785953183, + "IA Power_0": 7.3992274247491645, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.869260869565224, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7525585284280935, + "GT Power_0": 0.11724414715719063, + "IA Power_0": 8.17933110367893, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.604020066889637, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.815595317725753, + "GT Power_0": 0.28413043478260885, + "IA Power_0": 7.849331103678934, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.514745819397998, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7458662207357858, + "GT Power_0": 0.12799331103678935, + "IA Power_0": 7.609652173913045, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.099334448160532, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4327, + "tests": [ + { + "DRAM Power_0": 0.6109429530201346, + "GT Power_0": 0.03018120805369125, + "IA Power_0": 3.9073355704697956, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.27693959731544, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7416722408026755, + "GT Power_0": 0.11278595317725759, + "IA Power_0": 6.4820702341137135, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.913903010033442, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7484816053511707, + "GT Power_0": 0.11126421404682281, + "IA Power_0": 6.420387959866222, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.937816053511712, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8042240802675586, + "GT Power_0": 0.24661204013377902, + "IA Power_0": 6.744518394648832, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.330113712374582, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7454214046822745, + "GT Power_0": 0.12372240802675581, + "IA Power_0": 6.542588628762542, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.979986622073579, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4326, + "tests": [ + { + "DRAM Power_0": 0.595597315436242, + "GT Power_0": 0.023671140939597293, + "IA Power_0": 3.0497785234899335, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.3757315436241595, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7399197324414715, + "GT Power_0": 0.09945150501672244, + "IA Power_0": 5.561785953177261, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.968688963210698, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7394715719063545, + "GT Power_0": 0.09780267558528428, + "IA Power_0": 5.531284280936454, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.931508361204009, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7974046822742474, + "GT Power_0": 0.21634782608695668, + "IA Power_0": 5.654133779264213, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.211739130434784, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.744809364548495, + "GT Power_0": 0.10467558528428095, + "IA Power_0": 5.497367892976587, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.903926421404684, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4325, + "tests": [ + { + "DRAM Power_0": 0.6092508361204005, + "GT Power_0": 0.036411371237458155, + "IA Power_0": 3.446826086956522, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.826571906354514, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.74428093645485, + "GT Power_0": 0.130304347826087, + "IA Power_0": 5.922812709030098, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3606555183946485, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.8016476510067119, + "GT Power_0": 0.13119798657718115, + "IA Power_0": 7.927369127516781, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.365624161073827, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.7965351170568559, + "GT Power_0": 0.26318394648829413, + "IA Power_0": 6.106973244147157, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.708070234113712, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7442809364548496, + "GT Power_0": 0.1342775919732442, + "IA Power_0": 6.0529498327759175, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.498026755852842, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD137-A9", + "number": 4324, + "tests": [ + { + "DRAM Power_0": 0.5984046822742471, + "GT Power_0": 0.02707692307692304, + "IA Power_0": 3.905491638795986, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2055484949832795, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7450334448160528, + "GT Power_0": 0.113819397993311, + "IA Power_0": 7.284505016722413, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.727859531772578, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7501036789297655, + "GT Power_0": 0.11318394648829432, + "IA Power_0": 7.151882943143814, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.72096321070234, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8064180602006691, + "GT Power_0": 0.23878929765886286, + "IA Power_0": 7.44463210702341, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.226113712374584, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7430301003344483, + "GT Power_0": 0.1170702341137124, + "IA Power_0": 7.385257525083613, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.821123745819401, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD159-A9", + "number": 4323, + "tests": [ + { + "DRAM Power_0": 0.6070367892976593, + "GT Power_0": 0.03188628762541803, + "IA Power_0": 3.4418193979933114, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7837357859531795, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7410903010033449, + "GT Power_0": 0.12635785953177267, + "IA Power_0": 5.830742474916385, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.275889632107026, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7398294314381273, + "GT Power_0": 0.12390301003344478, + "IA Power_0": 5.811565217391306, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.246709030100334, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8017190635451504, + "GT Power_0": 0.25014046822742475, + "IA Power_0": 6.174571906354514, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.769675585284278, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7460500000000005, + "GT Power_0": 0.12680666666666673, + "IA Power_0": 5.791680000000001, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.213539999999996, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 300 + } + ] + }, + { + "bot": "BUILD155-A9", + "number": 4322, + "tests": [ + { + "DRAM Power_0": 0.6067147651006712, + "GT Power_0": 0.02823154362416105, + "IA Power_0": 3.832842281879192, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.156751677852346, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7484782608695659, + "GT Power_0": 0.11984615384615388, + "IA Power_0": 6.443525083612038, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.904752508361205, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7391103678929769, + "GT Power_0": 0.11588963210702342, + "IA Power_0": 6.384712374581942, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8246220735786, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7985451505016721, + "GT Power_0": 0.24035451505016708, + "IA Power_0": 6.569775919732436, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.138030100334451, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7541939799331108, + "GT Power_0": 0.12215719063545165, + "IA Power_0": 6.315036789297657, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.85358862876254, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD180-A9", + "number": 4321, + "tests": [ + { + "DRAM Power_0": 0.6043143812709035, + "GT Power_0": 0.03620066889632102, + "IA Power_0": 4.076668896321072, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.382033444816054, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.8075838926174498, + "GT Power_0": 0.12235570469798654, + "IA Power_0": 9.41841275167786, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.863020134228185, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7348494983277595, + "GT Power_0": 0.12122408026755861, + "IA Power_0": 6.765177257525081, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.21684615384615, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7922240802675589, + "GT Power_0": 0.26476254180602016, + "IA Power_0": 7.097484949832772, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.69664548494983, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7498361204013378, + "GT Power_0": 0.12884949832775922, + "IA Power_0": 6.930969899665551, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.408006688963211, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD156-A9", + "number": 4320, + "tests": [ + { + "DRAM Power_0": 0.6074395973154363, + "GT Power_0": 0.030422818791946263, + "IA Power_0": 3.327996644295301, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.665731543624161, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7388929765886286, + "GT Power_0": 0.13259197324414698, + "IA Power_0": 5.620578595317724, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.085070234113712, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7484949832775926, + "GT Power_0": 0.1309732441471572, + "IA Power_0": 5.746508361204019, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.215488294314382, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8032842809364548, + "GT Power_0": 0.27216722408026756, + "IA Power_0": 5.978163879598661, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.601802675585281, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7467157190635455, + "GT Power_0": 0.1382307692307693, + "IA Power_0": 5.877899665551838, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.306147157190633, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD148-A9", + "number": 4319, + "tests": [ + { + "DRAM Power_0": 0.6029264214046823, + "GT Power_0": 0.019347826086956524, + "IA Power_0": 3.2624581939799326, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.566505016722408, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7356086956521737, + "GT Power_0": 0.15592642140468224, + "IA Power_0": 5.80542474916388, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.279899665551835, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7352006688963209, + "GT Power_0": 0.1528595317725752, + "IA Power_0": 5.851612040133774, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3343110367892965, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7892943143812714, + "GT Power_0": 0.33816387959866206, + "IA Power_0": 6.112856187290972, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.811234113712376, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7546956521739125, + "GT Power_0": 0.1614080267558528, + "IA Power_0": 5.969852842809361, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.6765050167224045, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD161-A9", + "number": 4318, + "tests": [ + { + "DRAM Power_0": 0.6036020066889636, + "GT Power_0": 0.014418060200668876, + "IA Power_0": 3.1366220735785935, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.449648829431437, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.741063333333334, + "GT Power_0": 0.12151000000000006, + "IA Power_0": 5.410596666666665, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.855410000000001, + "name": "Video_720_MP4", + "samples": 300 + }, + { + "DRAM Power_0": 0.7497090301003345, + "GT Power_0": 0.12105016722408016, + "IA Power_0": 5.450692307692307, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.003806020066889, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8056622073578596, + "GT Power_0": 0.2530234113712373, + "IA Power_0": 5.617270903010036, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.255876254180604, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7433311036789303, + "GT Power_0": 0.12640802675585286, + "IA Power_0": 5.477578595317726, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.910147157190635, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD161-A9", + "number": 4317, + "tests": [ + { + "DRAM Power_0": 0.6080268456375838, + "GT Power_0": 0.03374832214765097, + "IA Power_0": 3.1300536912751675, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4981040268456414, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7467725752508373, + "GT Power_0": 0.11838795986622079, + "IA Power_0": 5.540147157190629, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.011040133779268, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396387959866235, + "GT Power_0": 0.11327759197324419, + "IA Power_0": 5.324287625418057, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.752531772575255, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7988929765886292, + "GT Power_0": 0.2436856187290969, + "IA Power_0": 5.803424749163878, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3843010033444845, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7431939799331111, + "GT Power_0": 0.12164214046822748, + "IA Power_0": 5.513327759197326, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.943618729096991, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4316, + "tests": [ + { + "DRAM Power_0": 0.6051371237458193, + "GT Power_0": 0.011458193979933107, + "IA Power_0": 3.019321070234113, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.360501672240803, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7415117056856191, + "GT Power_0": 0.13681270903010032, + "IA Power_0": 5.65369565217391, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.082210702341134, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404782608695651, + "GT Power_0": 0.1353344481605351, + "IA Power_0": 5.614973244147156, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.061588628762542, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7978160535117059, + "GT Power_0": 0.27302341137123765, + "IA Power_0": 5.864093645484957, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.456638795986622, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7462508361204012, + "GT Power_0": 0.14262876254180604, + "IA Power_0": 5.7307591973244145, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.18805016722408, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD148-A9", + "number": 4315, + "tests": [ + { + "DRAM Power_0": 0.6079297658862877, + "GT Power_0": 0.042712374581939765, + "IA Power_0": 3.448899665551839, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8258160535117076, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7454046822742483, + "GT Power_0": 0.14943143812709023, + "IA Power_0": 5.871986622073579, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.37919397993311, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7351270903010035, + "GT Power_0": 0.1480234113712374, + "IA Power_0": 5.924270903010034, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3913110367893, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7925852842809368, + "GT Power_0": 0.33249498327759214, + "IA Power_0": 6.389381270903008, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0684414715719095, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7471739130434784, + "GT Power_0": 0.15854515050167228, + "IA Power_0": 6.412070234113713, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.904150501672234, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4314, + "tests": [ + { + "DRAM Power_0": 0.6009295302013425, + "GT Power_0": 0.03682885906040265, + "IA Power_0": 3.687070469798658, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.997124161073827, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7411438127090304, + "GT Power_0": 0.1365250836120401, + "IA Power_0": 6.454755852842812, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.908434782608697, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7380401337792639, + "GT Power_0": 0.1306588628762542, + "IA Power_0": 6.283227424749163, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.725244147157193, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7970568561872913, + "GT Power_0": 0.29133110367893006, + "IA Power_0": 6.586377926421404, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1932374581939795, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7437591973244151, + "GT Power_0": 0.14384280936454852, + "IA Power_0": 6.461956521739138, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.913752508361204, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD118-A9", + "number": 4313, + "tests": [ + { + "DRAM Power_0": 0.6066275167785229, + "GT Power_0": 0.029785234899328838, + "IA Power_0": 3.489258389261745, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8269563758389245, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7489364548494986, + "GT Power_0": 0.10785618729097005, + "IA Power_0": 5.9950735785953215, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.482839464882941, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7985469798657723, + "GT Power_0": 0.1053255033557048, + "IA Power_0": 7.7500604026845625, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.18880201342282, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.795056856187291, + "GT Power_0": 0.24553846153846137, + "IA Power_0": 6.054367892976592, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.6144180602006735, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7462173913043484, + "GT Power_0": 0.11857525083612043, + "IA Power_0": 5.9333812709030065, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3302709030100335, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4312, + "tests": [ + { + "DRAM Power_0": 0.6019297658862879, + "GT Power_0": 0.031183946488294267, + "IA Power_0": 4.3477491638795955, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.651695652173913, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7414147157190639, + "GT Power_0": 0.11563879598662201, + "IA Power_0": 7.448678929765884, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.834147157190632, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7466889632107024, + "GT Power_0": 0.1176588628762542, + "IA Power_0": 7.491882943143814, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.983294314381275, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7977056856187289, + "GT Power_0": 0.2545217391304349, + "IA Power_0": 7.817414715719067, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.395832775919738, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7486979865771816, + "GT Power_0": 0.12715771812080529, + "IA Power_0": 8.119359060402683, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.54378187919463, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD136-A9", + "number": 4311, + "tests": [ + { + "DRAM Power_0": 0.6087090301003343, + "GT Power_0": 0.01515384615384615, + "IA Power_0": 3.2053511705685604, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.55710367892977, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396789297658861, + "GT Power_0": 0.10275250836120403, + "IA Power_0": 5.445725752508362, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.865157190635455, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7464515050167224, + "GT Power_0": 0.1001137123745819, + "IA Power_0": 5.803618729096991, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.222301003344478, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7961471571906353, + "GT Power_0": 0.21933110367892986, + "IA Power_0": 5.8294214046822725, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.379876254180603, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.754220735785953, + "GT Power_0": 0.10754849498327758, + "IA Power_0": 5.760033444816055, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.269993311036795, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD163-A9", + "number": 4310, + "tests": [ + { + "DRAM Power_0": 0.6018093645484948, + "GT Power_0": 0.029762541806020046, + "IA Power_0": 3.432839464882941, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.730280936454849, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.755530201342282, + "GT Power_0": 0.09812080536912755, + "IA Power_0": 6.681234899328862, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1457315436241515, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7497926421404684, + "GT Power_0": 0.09857525083612037, + "IA Power_0": 6.532836120401339, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.968264214046829, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8029397993311027, + "GT Power_0": 0.22865217391304343, + "IA Power_0": 6.498692307692308, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.109150501672238, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7481638795986623, + "GT Power_0": 0.10704013377926422, + "IA Power_0": 6.343377926421404, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.785605351170569, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4309, + "tests": [ + { + "DRAM Power_0": 0.6088187919463082, + "GT Power_0": 0.030238255033557013, + "IA Power_0": 3.9875167785234913, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.332765100671141, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7440200668896324, + "GT Power_0": 0.1265250836120402, + "IA Power_0": 6.657217391304346, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.126712374581937, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7505384615384615, + "GT Power_0": 0.123608695652174, + "IA Power_0": 6.659705685618728, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.268675585284281, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7956622073578588, + "GT Power_0": 0.250561872909699, + "IA Power_0": 6.904515050167227, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.493501672240799, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.745013377926422, + "GT Power_0": 0.1327491638795986, + "IA Power_0": 6.733244147157195, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.178003344481605, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD136-A9", + "number": 4308, + "tests": [ + { + "DRAM Power_0": 0.6065436241610739, + "GT Power_0": 0.02976845637583888, + "IA Power_0": 3.27539932885906, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6139597315436256, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.738946488294315, + "GT Power_0": 0.10362207357859526, + "IA Power_0": 5.607474916387959, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.030612040133776, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7442742474916387, + "GT Power_0": 0.09980602006688967, + "IA Power_0": 5.68807023411371, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.164993311036785, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8078528428093641, + "GT Power_0": 0.21896989966555186, + "IA Power_0": 5.928879598662205, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.6014615384615345, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7448963210702342, + "GT Power_0": 0.10516387959866216, + "IA Power_0": 5.87096655518395, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.308933110367897, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD173-A9", + "number": 4307, + "tests": [ + { + "DRAM Power_0": 0.6053110367892978, + "GT Power_0": 0.031173913043478243, + "IA Power_0": 3.9089264214046846, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2818628762541815, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7487157190635454, + "GT Power_0": 0.13082608695652173, + "IA Power_0": 7.133317725752506, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.621127090301002, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7383545150501672, + "GT Power_0": 0.13089297658862864, + "IA Power_0": 7.001043478260869, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4230969899665515, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7962742474916387, + "GT Power_0": 0.2718695652173915, + "IA Power_0": 7.2464749163879585, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.841260869565222, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.745657718120806, + "GT Power_0": 0.13472818791946312, + "IA Power_0": 7.416597315436242, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.864194630872479, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD161-A9", + "number": 4306, + "tests": [ + { + "DRAM Power_0": 0.5976476510067117, + "GT Power_0": 0.030194630872483207, + "IA Power_0": 3.192553691275169, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5064765100671136, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7538461538461537, + "GT Power_0": 0.1191003344481606, + "IA Power_0": 5.607628762541806, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.187471571906356, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7528929765886291, + "GT Power_0": 0.1187525083612041, + "IA Power_0": 5.523722408026755, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.141862876254179, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8084247491638799, + "GT Power_0": 0.24551839464882938, + "IA Power_0": 5.628625418060199, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.279474916387956, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451137123745821, + "GT Power_0": 0.1250535117056856, + "IA Power_0": 5.448899665551838, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.895591973244145, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD124-A9", + "number": 4305, + "tests": [ + { + "DRAM Power_0": 0.6043624161073822, + "GT Power_0": 0.036916107382550294, + "IA Power_0": 3.6678758389261725, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.01281879194631, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7400000000000005, + "GT Power_0": 0.13163545150501674, + "IA Power_0": 6.4828428093645485, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.922989966555183, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7421438127090304, + "GT Power_0": 0.13464548494983278, + "IA Power_0": 6.276742474916384, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.746113712374586, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.792080267558528, + "GT Power_0": 0.2857391304347826, + "IA Power_0": 6.5116588628762555, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1423377926421425, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7413478260869574, + "GT Power_0": 0.14314715719063545, + "IA Power_0": 6.334973244147155, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.789441471571905, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD118-A9", + "number": 4304, + "tests": [ + { + "DRAM Power_0": 0.6016510067114094, + "GT Power_0": 0.02745637583892616, + "IA Power_0": 3.4624731543624154, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8297718120805384, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7404347826086957, + "GT Power_0": 0.1137725752508362, + "IA Power_0": 5.967103678929767, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.392267558528426, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7370769230769234, + "GT Power_0": 0.10944147157190635, + "IA Power_0": 5.998428093645484, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.421103678929769, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8170602006688966, + "GT Power_0": 0.24529765886287638, + "IA Power_0": 6.212424749163881, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.881277591973244, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7457993311036796, + "GT Power_0": 0.11355518394648835, + "IA Power_0": 6.056989966555181, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.54659531772575, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4303, + "tests": [ + { + "DRAM Power_0": 0.606063545150501, + "GT Power_0": 0.02794314381270899, + "IA Power_0": 3.8185117056856206, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.140311036789299, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.741488294314381, + "GT Power_0": 0.12759531772575244, + "IA Power_0": 6.686515050167221, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.131692307692302, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7386688963210699, + "GT Power_0": 0.12425418060200667, + "IA Power_0": 6.693953177257526, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.155424749163878, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8091872909698996, + "GT Power_0": 0.2549832775919732, + "IA Power_0": 7.071759197324412, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.730110367892979, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7456254180602008, + "GT Power_0": 0.13322073578595314, + "IA Power_0": 6.996675585284276, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.412438127090303, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD140-A9", + "number": 4302, + "tests": [ + { + "DRAM Power_0": 0.6041275167785232, + "GT Power_0": 0.03298993288590601, + "IA Power_0": 3.4339362416107417, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7382583892617447, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7437633333333337, + "GT Power_0": 0.10244666666666673, + "IA Power_0": 6.054550000000003, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.468680000000001, + "name": "Video_720_MP4", + "samples": 300 + }, + { + "DRAM Power_0": 0.7396053511705688, + "GT Power_0": 0.10326421404682272, + "IA Power_0": 5.9100234113712355, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.329451505016722, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.797926421404682, + "GT Power_0": 0.2192441471571906, + "IA Power_0": 6.169254180602006, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.713100334448164, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7449230769230767, + "GT Power_0": 0.10710367892976588, + "IA Power_0": 6.001143812709029, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.44746488294314, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4301, + "tests": [ + { + "DRAM Power_0": 0.6554932432432432, + "GT Power_0": 0.025249999999999957, + "IA Power_0": 6.571787162162162, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9136182432432465, + "name": "Basic", + "samples": 296 + }, + { + "DRAM Power_0": 0.7396254180602008, + "GT Power_0": 0.12352173913043475, + "IA Power_0": 7.089444816053512, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5043043478260865, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7481270903010034, + "GT Power_0": 0.1206588628762543, + "IA Power_0": 7.039779264214047, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.53501672240802, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796739130434783, + "GT Power_0": 0.24583946488294314, + "IA Power_0": 7.270949832775918, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.836779264214045, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7442575250836125, + "GT Power_0": 0.12743478260869562, + "IA Power_0": 7.183769230769225, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.611207357859526, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4300, + "tests": [ + { + "DRAM Power_0": 0.6075050167224079, + "GT Power_0": 0.0307224080267558, + "IA Power_0": 3.272969899665556, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6051505016722403, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.74051839464883, + "GT Power_0": 0.14297324414715717, + "IA Power_0": 5.684511705685621, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.14608026755853, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7461672240802679, + "GT Power_0": 0.14212709030100343, + "IA Power_0": 5.643010033444815, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.14850836120401, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7962107023411377, + "GT Power_0": 0.27507357859531784, + "IA Power_0": 5.872732441471575, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.463257525083609, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743635451505017, + "GT Power_0": 0.14098327759197316, + "IA Power_0": 5.81646488294315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.267163879598664, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4299, + "tests": [ + { + "DRAM Power_0": 0.6067953020134226, + "GT Power_0": 0.03311744966442949, + "IA Power_0": 3.263536912751678, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.602046979865773, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7419866220735789, + "GT Power_0": 0.1003210702341137, + "IA Power_0": 5.592451505016723, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.02648829431438, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404013377926428, + "GT Power_0": 0.10015384615384615, + "IA Power_0": 5.547240802675584, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.979280936454851, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7983645484949834, + "GT Power_0": 0.2181070234113712, + "IA Power_0": 5.748311036789298, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.32008026755853, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7548829431438128, + "GT Power_0": 0.1038494983277593, + "IA Power_0": 5.954173913043478, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.432949832775927, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD157-A9", + "number": 4298, + "tests": [ + { + "DRAM Power_0": 0.6042684563758387, + "GT Power_0": 0.034385906040268435, + "IA Power_0": 3.853036912751676, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.179040268456379, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7450234113712373, + "GT Power_0": 0.12398327759197343, + "IA Power_0": 6.615344481605353, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.069692307692307, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7375752508361204, + "GT Power_0": 0.12222073578595316, + "IA Power_0": 6.582113712374581, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.025167224080272, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8019632107023412, + "GT Power_0": 0.2530267558528428, + "IA Power_0": 7.126595317725751, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.715638795986618, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7475852842809373, + "GT Power_0": 0.13495652173913036, + "IA Power_0": 6.724909698996655, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.162023411371235, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD159-A9", + "number": 4297, + "tests": [ + { + "DRAM Power_0": 0.6018489932885908, + "GT Power_0": 0.02603020134228185, + "IA Power_0": 3.240379194630871, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6296812080536944, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7493444816053513, + "GT Power_0": 0.12863879598662198, + "IA Power_0": 5.640397993311038, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.147468227424747, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.739702341137124, + "GT Power_0": 0.12759197324414717, + "IA Power_0": 5.684678929765891, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.116879598662205, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8008762541806023, + "GT Power_0": 0.25445484949832775, + "IA Power_0": 6.0827458193979895, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.667772575250837, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7539096989966557, + "GT Power_0": 0.1344548494983278, + "IA Power_0": 5.713655518394653, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.243852842809363, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD155-A9", + "number": 4296, + "tests": [ + { + "DRAM Power_0": 0.5956722408026758, + "GT Power_0": 0.010227424749163877, + "IA Power_0": 3.56116053511706, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.847735785953178, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7509063545150504, + "GT Power_0": 0.11890635451505016, + "IA Power_0": 6.443581939799333, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.96278929765887, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.744882943143813, + "GT Power_0": 0.12426421404682275, + "IA Power_0": 6.516090301003342, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.943050167224084, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8059798657718118, + "GT Power_0": 0.26474161073825525, + "IA Power_0": 6.693080536912754, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2994731543624205, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7465685618729095, + "GT Power_0": 0.12505016722408038, + "IA Power_0": 6.432040133779263, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.890956521739125, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4295, + "tests": [ + { + "DRAM Power_0": 0.6007424749163875, + "GT Power_0": 0.029478260869565193, + "IA Power_0": 4.35380602006689, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.68028762541806, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7428461538461542, + "GT Power_0": 0.11626086956521738, + "IA Power_0": 7.499040133779263, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.919779264214049, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7473143812709033, + "GT Power_0": 0.11659531772575252, + "IA Power_0": 7.530357859531776, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.053414715719063, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7986254180602007, + "GT Power_0": 0.2517123745819396, + "IA Power_0": 7.892200668896324, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.483123745819404, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7524682274247495, + "GT Power_0": 0.12201672240802675, + "IA Power_0": 7.517006688963212, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.006274247491648, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD165-A9", + "number": 4294, + "tests": [ + { + "DRAM Power_0": 0.5964765100671143, + "GT Power_0": 0.02378523489932884, + "IA Power_0": 4.023724832214766, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.314057046979862, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7384849498327762, + "GT Power_0": 0.11005351170568568, + "IA Power_0": 7.022635451505021, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4407591973244145, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7465652173913039, + "GT Power_0": 0.10904347826086949, + "IA Power_0": 6.917247491638796, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.392929765886287, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7940100334448156, + "GT Power_0": 0.2456889632107023, + "IA Power_0": 7.104906354515049, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.680337792642141, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7413511705685626, + "GT Power_0": 0.11518729096989963, + "IA Power_0": 6.9905518394648825, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4144581939799385, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD143-A9", + "number": 4293, + "tests": [ + { + "DRAM Power_0": 0.6079598662207355, + "GT Power_0": 0.028993311036789288, + "IA Power_0": 3.579050167224083, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.924227424749165, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.750020066889632, + "GT Power_0": 0.12120735785953182, + "IA Power_0": 5.899939799331107, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.368909698996655, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387725752508362, + "GT Power_0": 0.1201270903010034, + "IA Power_0": 5.866080267558526, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.285923076923074, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8052006688963207, + "GT Power_0": 0.25076923076923074, + "IA Power_0": 6.060729096989962, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.723976588628762, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451872909699001, + "GT Power_0": 0.138515050167224, + "IA Power_0": 5.868555183946486, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.305755852842813, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD135-A9", + "number": 4292, + "tests": [ + { + "DRAM Power_0": 0.6042341137123752, + "GT Power_0": 0.03648160535117054, + "IA Power_0": 4.687665551839466, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.990337792642139, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7441404682274249, + "GT Power_0": 0.15669230769230774, + "IA Power_0": 7.752357859531772, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.221709030100339, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7733946488294314, + "GT Power_0": 0.18809030100334462, + "IA Power_0": 8.638214046822736, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.211675585284269, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8091973244147156, + "GT Power_0": 0.3351973244147156, + "IA Power_0": 8.558568561872912, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.508872909698995, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7441872909699, + "GT Power_0": 0.16640133779264227, + "IA Power_0": 7.996889632107024, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.464404682274248, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4291, + "tests": [ + { + "DRAM Power_0": 0.6108896321070234, + "GT Power_0": 0.028200668896321054, + "IA Power_0": 3.4899030100334447, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8370468227424737, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7479597315436242, + "GT Power_0": 0.09668456375838931, + "IA Power_0": 5.619563758389262, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.113255033557047, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7386454849498333, + "GT Power_0": 0.09558862876254183, + "IA Power_0": 5.749006688963214, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.15863545150502, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8066006711409397, + "GT Power_0": 0.21010738255033556, + "IA Power_0": 5.900436241610743, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.481600671140938, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7443076923076926, + "GT Power_0": 0.10204682274247488, + "IA Power_0": 5.822625418060201, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2329230769230755, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4290, + "tests": [ + { + "DRAM Power_0": 0.601953177257525, + "GT Power_0": 0.027454849498327747, + "IA Power_0": 4.537040133779266, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.879123745819397, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7407023411371242, + "GT Power_0": 0.10455852842809372, + "IA Power_0": 7.889321070234116, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.27408026755853, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7400334448160536, + "GT Power_0": 0.10568227424749164, + "IA Power_0": 8.024762541806021, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.433056856187298, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7964949832775916, + "GT Power_0": 0.2352040133779263, + "IA Power_0": 8.384167224080269, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.951494983277598, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7461137123745823, + "GT Power_0": 0.11140468227424748, + "IA Power_0": 8.13568227424749, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.57082608695652, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD168-A9", + "number": 4289, + "tests": [ + { + "DRAM Power_0": 0.6600303030303026, + "GT Power_0": 0.036831649831649785, + "IA Power_0": 5.689562289562288, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.019653198653199, + "name": "Basic", + "samples": 297 + }, + { + "DRAM Power_0": 0.7409598662207364, + "GT Power_0": 0.12748160535117065, + "IA Power_0": 6.451257525083613, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.896812709030096, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404180602006689, + "GT Power_0": 0.12256856187290968, + "IA Power_0": 6.500548494983277, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.919809364548497, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7987357859531774, + "GT Power_0": 0.2574080267558527, + "IA Power_0": 6.6419933110367895, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.245531772575253, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7436153846153845, + "GT Power_0": 0.13173913043478272, + "IA Power_0": 6.473073578595315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.894434782608697, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD120-A9", + "number": 4288, + "tests": [ + { + "DRAM Power_0": 0.6618361204013375, + "GT Power_0": 0.03274247491638794, + "IA Power_0": 5.684933110367896, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.045153846153843, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7762040133779259, + "GT Power_0": 0.11683612040133776, + "IA Power_0": 9.852478260869562, + "Package Power Limit_0": 65.0, + "Processor Power_0": 10.276043478260874, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384715719063549, + "GT Power_0": 0.12022408026755851, + "IA Power_0": 6.3974214046822775, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.820461538461537, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7953892617449659, + "GT Power_0": 0.25649328859060416, + "IA Power_0": 6.675848993288591, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.27601677852349, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7448561872909706, + "GT Power_0": 0.127418060200669, + "IA Power_0": 6.44745819397994, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.887264214046821, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4287, + "tests": [ + { + "DRAM Power_0": 0.5959999999999995, + "GT Power_0": 0.026734899328859044, + "IA Power_0": 3.0628221476510076, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4293993288590587, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7444548494983279, + "GT Power_0": 0.10854180602006698, + "IA Power_0": 5.468411371237458, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.8769364548495, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7394949832775922, + "GT Power_0": 0.10688294314381273, + "IA Power_0": 5.412053511705682, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.842575250836123, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8052040133779264, + "GT Power_0": 0.22463879598662204, + "IA Power_0": 5.810471571906353, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.414230769230764, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7437190635451503, + "GT Power_0": 0.11255183946488284, + "IA Power_0": 5.433404682274248, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.876334448160535, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD137-A9", + "number": 4286, + "tests": [ + { + "DRAM Power_0": 0.6059464882943143, + "GT Power_0": 0.03294314381270901, + "IA Power_0": 4.159033444816052, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.490117056856188, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384816053511707, + "GT Power_0": 0.11288963210702345, + "IA Power_0": 7.243451505016725, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.685013377926418, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384113712374581, + "GT Power_0": 0.1109665551839464, + "IA Power_0": 7.2418060200668855, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.675759197324414, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8056956521739131, + "GT Power_0": 0.24101337792642147, + "IA Power_0": 7.65592642140468, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.345973244147158, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7554046822742478, + "GT Power_0": 0.12152842809364557, + "IA Power_0": 7.462414715719067, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.143822742474915, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD135-A9", + "number": 4285, + "tests": [ + { + "DRAM Power_0": 0.6039832775919732, + "GT Power_0": 0.03900668896321064, + "IA Power_0": 4.5300635451505, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.831143812709027, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7392408026755859, + "GT Power_0": 0.15180602006688965, + "IA Power_0": 7.799451505016723, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.249494983277593, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451605351170562, + "GT Power_0": 0.15045819397993324, + "IA Power_0": 7.43346488294314, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.967842809364554, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8010769230769235, + "GT Power_0": 0.3299264214046822, + "IA Power_0": 7.9256789297658825, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.66619732441471, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7420301003344482, + "GT Power_0": 0.1625083612040134, + "IA Power_0": 7.54750501672241, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.000214046822746, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4284, + "tests": [ + { + "DRAM Power_0": 0.601264214046823, + "GT Power_0": 0.024732441471571852, + "IA Power_0": 3.9889732441471564, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.295548494983278, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7452842809364544, + "GT Power_0": 0.11097993311036781, + "IA Power_0": 7.049909698996655, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.520384615384607, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7408127090301005, + "GT Power_0": 0.10922742474916393, + "IA Power_0": 6.8088829431438125, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.219347826086957, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796234113712375, + "GT Power_0": 0.23852508361203992, + "IA Power_0": 7.0530167224080325, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.613782608695653, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7450233333333333, + "GT Power_0": 0.11598333333333331, + "IA Power_0": 6.8999166666666705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3358633333333305, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 300 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4283, + "tests": [ + { + "DRAM Power_0": 0.6060838926174489, + "GT Power_0": 0.030778523489932853, + "IA Power_0": 3.8152147651006696, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.146798657718123, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7489933110367897, + "GT Power_0": 0.11976254180602011, + "IA Power_0": 7.04219732441472, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.479953177257522, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7401170568561871, + "GT Power_0": 0.11509030100334448, + "IA Power_0": 6.617739130434786, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.042488294314382, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7954080267558532, + "GT Power_0": 0.24697658862876226, + "IA Power_0": 6.905086956521738, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.505220735785951, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7579530201342288, + "GT Power_0": 0.12463087248322155, + "IA Power_0": 6.9434161073825535, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6055872483221485, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD170-A9", + "number": 4282, + "tests": [ + { + "DRAM Power_0": 0.6065418060200666, + "GT Power_0": 0.03260535117056854, + "IA Power_0": 3.5117023411371218, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8700702341137125, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7395551839464892, + "GT Power_0": 0.10967558528428091, + "IA Power_0": 5.970846153846157, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.393290969899663, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7457725752508371, + "GT Power_0": 0.10866889632107032, + "IA Power_0": 5.880197324414722, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.344441471571908, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8044381270903008, + "GT Power_0": 0.2464715719063544, + "IA Power_0": 6.293558528428093, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.968585284280937, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.746294314381271, + "GT Power_0": 0.1168528428093645, + "IA Power_0": 6.3251739130434785, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.751361204013369, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4281, + "tests": [ + { + "DRAM Power_0": 0.6073221476510072, + "GT Power_0": 0.03534228187919463, + "IA Power_0": 3.6939597315436234, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.06569463087248, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7446387959866223, + "GT Power_0": 0.1418795986622073, + "IA Power_0": 6.3917625418060195, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.896444816053513, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7389765886287628, + "GT Power_0": 0.13563879598662212, + "IA Power_0": 6.335655518394647, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.787618729096992, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7953812709030098, + "GT Power_0": 0.3053745819397994, + "IA Power_0": 6.640344481605346, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2933043478260835, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7477725752508364, + "GT Power_0": 0.1518494983277592, + "IA Power_0": 6.793892976588628, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2519397993311046, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD137-A9", + "number": 4280, + "tests": [ + { + "DRAM Power_0": 0.6114949832775923, + "GT Power_0": 0.014672240802675578, + "IA Power_0": 4.393618729096991, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.788036789297657, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7390533333333335, + "GT Power_0": 0.11583333333333339, + "IA Power_0": 7.496910000000001, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.92181000000001, + "name": "Video_720_MP4", + "samples": 300 + }, + { + "DRAM Power_0": 0.7369197324414715, + "GT Power_0": 0.11440802675585296, + "IA Power_0": 7.500729096989966, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.898464882943142, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7950836120401336, + "GT Power_0": 0.2458227424749164, + "IA Power_0": 7.764889632107021, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.32949163879599, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7530702341137127, + "GT Power_0": 0.1220836120401339, + "IA Power_0": 7.408498327759191, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.911214046822738, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD151-A9", + "number": 4279, + "tests": [ + { + "DRAM Power_0": 0.623260869565218, + "GT Power_0": 0.03136454849498324, + "IA Power_0": 4.477588628762543, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.795555183946488, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7374548494983278, + "GT Power_0": 0.10250501672240803, + "IA Power_0": 6.446117056856188, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.852879598662208, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404682274247496, + "GT Power_0": 0.10276923076923081, + "IA Power_0": 6.420401337792644, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.823357859531774, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7954581939799329, + "GT Power_0": 0.22493311036789287, + "IA Power_0": 6.70776923076923, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.265317725752507, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7535117056856191, + "GT Power_0": 0.1093177257525083, + "IA Power_0": 6.493892976588628, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.967224080267558, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4278, + "tests": [ + { + "DRAM Power_0": 0.6015183946488293, + "GT Power_0": 0.03823745819397993, + "IA Power_0": 3.7289732441471592, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.029715719063543, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7457290969899667, + "GT Power_0": 0.14590301003344483, + "IA Power_0": 6.40772575250836, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9337157190635486, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7463812709030107, + "GT Power_0": 0.1457892976588628, + "IA Power_0": 6.470752508361202, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.943829431438127, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7960301003344477, + "GT Power_0": 0.3015016722408028, + "IA Power_0": 6.858635451505015, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.492020066889625, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434749163879603, + "GT Power_0": 0.15564214046822739, + "IA Power_0": 6.705167224080266, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1665083612040075, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD143-A9", + "number": 4277, + "tests": [ + { + "DRAM Power_0": 0.6009060402684564, + "GT Power_0": 0.02906040268456374, + "IA Power_0": 3.2225100671140945, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.52230201342282, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7443612040133782, + "GT Power_0": 0.1219197324414715, + "IA Power_0": 5.670441471571908, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.125461538461536, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7383545150501681, + "GT Power_0": 0.11734448160535126, + "IA Power_0": 5.7262207357859545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.159143812709031, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8054648829431431, + "GT Power_0": 0.24453846153846157, + "IA Power_0": 5.9294882943143845, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.572625418060201, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7465819397993312, + "GT Power_0": 0.12661538461538457, + "IA Power_0": 5.831297658862876, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.276959866220734, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD21-B1", + "number": 4276, + "tests": [ + { + "DRAM Power_0": 0.6085469798657719, + "GT Power_0": 0.029258389261744934, + "IA Power_0": 3.570959731543625, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.174647651006713, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7418160535117054, + "GT Power_0": 0.1217892976588628, + "IA Power_0": 6.031053511705687, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6431237458193975, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7415719063545151, + "GT Power_0": 0.12122408026755854, + "IA Power_0": 6.02003678929766, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.654080267558529, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8064180602006692, + "GT Power_0": 0.2540167224080266, + "IA Power_0": 6.368270903010036, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.205063545150509, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7468060200668896, + "GT Power_0": 0.12947826086956515, + "IA Power_0": 6.199939799331104, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.828535117056865, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4275, + "tests": [ + { + "DRAM Power_0": 0.6044648829431443, + "GT Power_0": 0.03684615384615379, + "IA Power_0": 3.727752508361204, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.072066889632109, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7407993311036792, + "GT Power_0": 0.13109364548494987, + "IA Power_0": 6.629839464882944, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.070812709030098, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384046822742475, + "GT Power_0": 0.12942140468227417, + "IA Power_0": 6.613852842809365, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0507926421404665, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7962307692307686, + "GT Power_0": 0.2792508361204013, + "IA Power_0": 6.886421404682278, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4908829431438155, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7438561872909698, + "GT Power_0": 0.13613377926421413, + "IA Power_0": 6.90191304347826, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.342311036789294, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD21-B1", + "number": 4274, + "tests": [ + { + "DRAM Power_0": 0.6007625418060201, + "GT Power_0": 0.014963210702341122, + "IA Power_0": 3.4337959866220764, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.913929765886287, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7472474916387964, + "GT Power_0": 0.12313377926421405, + "IA Power_0": 6.168622073578598, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.856321070234106, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7417290969899676, + "GT Power_0": 0.1221270903010032, + "IA Power_0": 6.13423411371238, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.776371237458199, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7989030100334452, + "GT Power_0": 0.25700334448160544, + "IA Power_0": 6.41620735785953, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.178381270903005, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7631571906354513, + "GT Power_0": 0.13670568561872903, + "IA Power_0": 6.254371237458192, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.985578595317724, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4273, + "tests": [ + { + "DRAM Power_0": 0.6058795986622072, + "GT Power_0": 0.03359866220735782, + "IA Power_0": 3.8080535117056855, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.137200668896322, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7429163879598664, + "GT Power_0": 0.11825083612040131, + "IA Power_0": 6.614538461538463, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.059344481605349, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7471270903010033, + "GT Power_0": 0.11308361204013384, + "IA Power_0": 6.835454849498325, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.250321070234117, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7996321070234121, + "GT Power_0": 0.23693645484949827, + "IA Power_0": 6.85056856187291, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.442525083612041, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7545250836120404, + "GT Power_0": 0.11707023411371237, + "IA Power_0": 6.809267558528433, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.327622073578595, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD149-A9", + "number": 4272, + "tests": [ + { + "DRAM Power_0": 0.6028120805369129, + "GT Power_0": 0.02999328859060397, + "IA Power_0": 4.33745637583893, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.641560402684567, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7396555183946489, + "GT Power_0": 0.12738461538461537, + "IA Power_0": 7.430297658862877, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.855665551839467, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393578595317727, + "GT Power_0": 0.12281605351170567, + "IA Power_0": 7.374287625418061, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.817307692307689, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7952207357859533, + "GT Power_0": 0.27851505016722433, + "IA Power_0": 7.708571906354513, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.314956521739129, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7445953177257526, + "GT Power_0": 0.13129096989966557, + "IA Power_0": 7.3041605351170595, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.743752508361203, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4271, + "tests": [ + { + "DRAM Power_0": 0.6061644295302018, + "GT Power_0": 0.03752684563758384, + "IA Power_0": 3.819899328859061, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.186389261744965, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7383210702341134, + "GT Power_0": 0.14682943143812704, + "IA Power_0": 6.440903010033445, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.919762541806016, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7357625418060201, + "GT Power_0": 0.14203678929765878, + "IA Power_0": 6.531474916387961, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.973163879598658, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7966555183946493, + "GT Power_0": 0.29704013377926414, + "IA Power_0": 6.76790301003345, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.405230769230764, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7414983277591971, + "GT Power_0": 0.15290969899665555, + "IA Power_0": 6.760150501672239, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.214916387959864, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4270, + "tests": [ + { + "DRAM Power_0": 0.6099899665551838, + "GT Power_0": 0.022498327759197276, + "IA Power_0": 3.5025117056856194, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.834127090301003, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7444381270903012, + "GT Power_0": 0.14359531772575249, + "IA Power_0": 5.885789297658864, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.343481605351172, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404682274247488, + "GT Power_0": 0.14447491638795987, + "IA Power_0": 5.800143812709032, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.260996655518394, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8179866220735784, + "GT Power_0": 0.30569565217391315, + "IA Power_0": 6.065006688963209, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.931200668896327, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7535819397993315, + "GT Power_0": 0.15690301003344484, + "IA Power_0": 5.935715719063545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.465140468227425, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD163-A9", + "number": 4269, + "tests": [ + { + "DRAM Power_0": 0.604909698996656, + "GT Power_0": 0.015234113712374575, + "IA Power_0": 3.4964046822742456, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.836110367892973, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7394481605351165, + "GT Power_0": 0.11814715719063552, + "IA Power_0": 6.205006688963207, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.665822742474916, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7471471571906352, + "GT Power_0": 0.11893311036789293, + "IA Power_0": 6.563923076923077, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.991665551839457, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7966555183946491, + "GT Power_0": 0.26236454849498336, + "IA Power_0": 6.655230769230771, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.241719063545142, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.74276254180602, + "GT Power_0": 0.12297993311036783, + "IA Power_0": 6.520274247491639, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.95250501672241, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4268, + "tests": [ + { + "DRAM Power_0": 0.6013076923076923, + "GT Power_0": 0.014324414715719056, + "IA Power_0": 3.700802675585286, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.995324414715717, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7399598662207362, + "GT Power_0": 0.11479264214046825, + "IA Power_0": 6.382618729096988, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.78936120401338, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7389832775919732, + "GT Power_0": 0.1137190635451505, + "IA Power_0": 6.277361204013379, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.67816387959866, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8027491638795986, + "GT Power_0": 0.23874916387959874, + "IA Power_0": 6.478571906354513, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1346956521739155, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7545284280936457, + "GT Power_0": 0.11945484949832776, + "IA Power_0": 6.310789297658861, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.826896321070228, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4267, + "tests": [ + { + "DRAM Power_0": 0.6043557046979866, + "GT Power_0": 0.03614429530201339, + "IA Power_0": 4.711033557046978, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.037083892617449, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7397248322147654, + "GT Power_0": 0.10864093959731547, + "IA Power_0": 7.869738255033564, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.28496979865772, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7430969899665553, + "GT Power_0": 0.11177591973244151, + "IA Power_0": 8.093274247491646, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.508615384615386, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8643221476510069, + "GT Power_0": 0.24819798657718123, + "IA Power_0": 10.881714765100671, + "Package Power Limit_0": 65.0, + "Processor Power_0": 11.555315436241607, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.744307692307692, + "GT Power_0": 0.11770903010033437, + "IA Power_0": 7.914063545150504, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.324598662207352, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD178-A9", + "number": 4266, + "tests": [ + { + "DRAM Power_0": 0.612989932885906, + "GT Power_0": 0.02848322147651002, + "IA Power_0": 4.074355704697986, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.442127516778525, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7411571906354514, + "GT Power_0": 0.1044013377926422, + "IA Power_0": 6.441739130434784, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.86314381270903, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396588628762544, + "GT Power_0": 0.1098461538461539, + "IA Power_0": 6.428351170568559, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.831615384615387, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7968494983277591, + "GT Power_0": 0.2257993311036788, + "IA Power_0": 6.63952508361204, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.200591973244147, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7532709030100332, + "GT Power_0": 0.11031438127090307, + "IA Power_0": 6.584789297658864, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0778628762541835, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD149-A9", + "number": 4265, + "tests": [ + { + "DRAM Power_0": 0.6078993288590605, + "GT Power_0": 0.027389261744966403, + "IA Power_0": 4.42068456375839, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.7723288590604005, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7654395973154361, + "GT Power_0": 0.12753691275167783, + "IA Power_0": 8.260768456375839, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.770506711409388, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7614481605351172, + "GT Power_0": 0.14848494983277596, + "IA Power_0": 7.893745819397989, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.355872909699, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8031973244147159, + "GT Power_0": 0.27839130434782605, + "IA Power_0": 7.730755852842816, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.408598662207357, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7452073578595312, + "GT Power_0": 0.13115050167224077, + "IA Power_0": 7.426515050167222, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.841170568561864, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4264, + "tests": [ + { + "DRAM Power_0": 0.6017157190635452, + "GT Power_0": 0.031882943143812674, + "IA Power_0": 3.7442675585284304, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.049762541806022, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7365785953177263, + "GT Power_0": 0.13334448160535117, + "IA Power_0": 6.364989966555184, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.811588628762544, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7344448160535123, + "GT Power_0": 0.13177257525083613, + "IA Power_0": 6.423712374581936, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.86972575250836, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.793518394648829, + "GT Power_0": 0.30007023411371236, + "IA Power_0": 6.712765886287629, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.342441471571908, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7408160535117057, + "GT Power_0": 0.1400301003344481, + "IA Power_0": 6.544939799331104, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.019264214046819, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4263, + "tests": [ + { + "DRAM Power_0": 0.6052140468227425, + "GT Power_0": 0.02810033444816051, + "IA Power_0": 3.4954247491638792, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8558628762541804, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7410100334448169, + "GT Power_0": 0.09487959866220731, + "IA Power_0": 6.0827224080267515, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.498625418060205, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7359632107023416, + "GT Power_0": 0.09242140468227428, + "IA Power_0": 6.0775384615384604, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.463013377926427, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7975819397993308, + "GT Power_0": 0.21058528428093665, + "IA Power_0": 6.091327759197323, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.629484949832775, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7428026755852848, + "GT Power_0": 0.09563545150501682, + "IA Power_0": 5.973571906354512, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.386120401337794, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4262, + "tests": [ + { + "DRAM Power_0": 0.6089632107023407, + "GT Power_0": 0.03485618729096986, + "IA Power_0": 3.6282341137123733, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9458528428093604, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7472374581939809, + "GT Power_0": 0.12292307692307677, + "IA Power_0": 5.614090301003346, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.09017725752508, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7395503355704701, + "GT Power_0": 0.12290939597315435, + "IA Power_0": 5.813557046979863, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.240389261744964, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.7973311036789301, + "GT Power_0": 0.24289297658862852, + "IA Power_0": 5.679274247491642, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.254799331103678, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743508361204014, + "GT Power_0": 0.12858193979933105, + "IA Power_0": 5.57117391304348, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.0097491638795955, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD144-A9", + "number": 4261, + "tests": [ + { + "DRAM Power_0": 0.606174496644295, + "GT Power_0": 0.024875838926174475, + "IA Power_0": 4.066489932885909, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.431751677852351, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7468020134228188, + "GT Power_0": 0.11451342281879197, + "IA Power_0": 6.975070469798657, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.399728187919462, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7632809364548497, + "GT Power_0": 0.13727090301003328, + "IA Power_0": 6.932237458193983, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.395494983277591, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7942575250836118, + "GT Power_0": 0.23909364548494966, + "IA Power_0": 6.918712374581939, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.47771906354515, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7440468227424749, + "GT Power_0": 0.1200635451505018, + "IA Power_0": 6.863541806020064, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.296321070234111, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4260, + "tests": [ + { + "DRAM Power_0": 0.5954916387959873, + "GT Power_0": 0.032311036789297636, + "IA Power_0": 3.146515050167225, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4578729096989975, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387391304347829, + "GT Power_0": 0.12588963210702342, + "IA Power_0": 5.7718829431438134, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.192414715719066, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7371070234113709, + "GT Power_0": 0.12076588628762547, + "IA Power_0": 5.6935384615384645, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.139418060200671, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7963913043478259, + "GT Power_0": 0.2649163879598663, + "IA Power_0": 6.018311036789297, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.589685618729096, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7439364548494983, + "GT Power_0": 0.1282140468227424, + "IA Power_0": 5.929688963210698, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.358775919732443, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4259, + "tests": [ + { + "DRAM Power_0": 0.6024481605351167, + "GT Power_0": 0.035618729096989925, + "IA Power_0": 3.253033444816053, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5605785953177267, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7392508361204015, + "GT Power_0": 0.08912374581939796, + "IA Power_0": 5.611688963210705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.0123110367892965, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7360602006688971, + "GT Power_0": 0.08890635451505013, + "IA Power_0": 5.530782608695652, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.936806020066893, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7950969899665553, + "GT Power_0": 0.2031137123745821, + "IA Power_0": 5.746448160535118, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.284896321070236, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7420267558528435, + "GT Power_0": 0.0953444816053512, + "IA Power_0": 5.718217391304347, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.129110367892972, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD130-A9", + "number": 4258, + "tests": [ + { + "DRAM Power_0": 0.5990402684563759, + "GT Power_0": 0.03116442953020132, + "IA Power_0": 3.838046979865773, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.208580536912751, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7478595317725759, + "GT Power_0": 0.12146488294314388, + "IA Power_0": 7.1501438127090315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.60978595317725, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7358528428093649, + "GT Power_0": 0.11541471571906359, + "IA Power_0": 7.111230769230765, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.532227424749161, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8051438127090305, + "GT Power_0": 0.24732441471571884, + "IA Power_0": 7.469568561872908, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.085919732441468, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7519397993311043, + "GT Power_0": 0.12638127090301007, + "IA Power_0": 7.2829698996655505, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.720682274247499, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD146-A9", + "number": 4257, + "tests": [ + { + "DRAM Power_0": 0.6050268456375838, + "GT Power_0": 0.03443959731543623, + "IA Power_0": 3.4951543624161068, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8559966442953026, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7445585284280941, + "GT Power_0": 0.13558193979933128, + "IA Power_0": 6.151381270903011, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.57749163879599, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.737214046822743, + "GT Power_0": 0.12952508361204013, + "IA Power_0": 6.1285183946488315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.564103678929771, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7959632107023411, + "GT Power_0": 0.25900668896321105, + "IA Power_0": 6.334424749163875, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.906792642140469, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432508361204017, + "GT Power_0": 0.1358595317725753, + "IA Power_0": 6.387381270903009, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8435585284280895, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4256, + "tests": [ + { + "DRAM Power_0": 0.6068657718120799, + "GT Power_0": 0.033278523489932856, + "IA Power_0": 3.90169798657718, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.247590604026846, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7386688963210704, + "GT Power_0": 0.1540501672240802, + "IA Power_0": 6.385391304347828, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.848287625418062, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7453311036789304, + "GT Power_0": 0.15102341137123743, + "IA Power_0": 6.332494983277591, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.87592642140468, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7964046822742478, + "GT Power_0": 0.30491638795986625, + "IA Power_0": 6.692030100334448, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3257926421404695, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7419264214046827, + "GT Power_0": 0.1615284280936456, + "IA Power_0": 6.46963879598662, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.939521739130434, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4255, + "tests": [ + { + "DRAM Power_0": 0.6041170568561873, + "GT Power_0": 0.028050167224080227, + "IA Power_0": 3.9629331103678926, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.273247491638795, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7611610738255036, + "GT Power_0": 0.1257751677852349, + "IA Power_0": 6.908674496644293, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.424355704697986, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7575852842809371, + "GT Power_0": 0.14833444816053526, + "IA Power_0": 6.573046822742479, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.04676254180602, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7945351170568562, + "GT Power_0": 0.25138795986622076, + "IA Power_0": 6.657023411371232, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.239013377926423, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7453511705685619, + "GT Power_0": 0.1270434782608696, + "IA Power_0": 6.501354515050164, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9175083612040105, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4254, + "tests": [ + { + "DRAM Power_0": 0.6014113712374582, + "GT Power_0": 0.015193979933110372, + "IA Power_0": 3.642143812709026, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9321070234113713, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7381404682274257, + "GT Power_0": 0.10915050167224086, + "IA Power_0": 6.086374581939799, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.51191973244147, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7433812709030101, + "GT Power_0": 0.1134013377926422, + "IA Power_0": 6.118314381270904, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.61394983277592, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7950568561872909, + "GT Power_0": 0.24003678929765887, + "IA Power_0": 6.345153846153845, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.906230769230767, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7457725752508363, + "GT Power_0": 0.11816387959866224, + "IA Power_0": 6.252220735785957, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.68531772575251, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD118-A9", + "number": 4253, + "tests": [ + { + "DRAM Power_0": 0.599057046979866, + "GT Power_0": 0.024194630872483216, + "IA Power_0": 3.446694630872484, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.78606375838926, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7420836120401335, + "GT Power_0": 0.11092307692307696, + "IA Power_0": 6.1592474916388, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.608053511705684, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7376454849498327, + "GT Power_0": 0.1083110367892976, + "IA Power_0": 6.013856187290969, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.4333578595317755, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7971137123745813, + "GT Power_0": 0.24344481605351145, + "IA Power_0": 6.120939799331103, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.688795986622076, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7407792642140467, + "GT Power_0": 0.11454180602006696, + "IA Power_0": 5.922197324414717, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.356752508361204, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4252, + "tests": [ + { + "DRAM Power_0": 0.6096442953020131, + "GT Power_0": 0.03432885906040263, + "IA Power_0": 4.037748322147649, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.34579865771812, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7377023411371243, + "GT Power_0": 0.11420401337792642, + "IA Power_0": 6.071588628762536, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.492926421404682, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7371872909698999, + "GT Power_0": 0.11430769230769235, + "IA Power_0": 6.061163879598668, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.482969899665557, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7935618729096992, + "GT Power_0": 0.24385284280936442, + "IA Power_0": 6.287043478260872, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.878795986622076, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7438127090301014, + "GT Power_0": 0.1202107023411371, + "IA Power_0": 6.192705685618727, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.618287625418065, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4251, + "tests": [ + { + "DRAM Power_0": 0.604328859060403, + "GT Power_0": 0.030177852348993273, + "IA Power_0": 3.697687919463088, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.022634228187922, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7459130434782613, + "GT Power_0": 0.1104046822742475, + "IA Power_0": 6.7247692307692315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.183906354515051, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7411571906354518, + "GT Power_0": 0.10780602006688976, + "IA Power_0": 6.610688963210708, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.078304347826084, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7950869565217388, + "GT Power_0": 0.23649163879598667, + "IA Power_0": 6.915789297658861, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.475484949832776, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7438093645484952, + "GT Power_0": 0.11579933110367896, + "IA Power_0": 6.72457859531772, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.156678929765887, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4250, + "tests": [ + { + "DRAM Power_0": 0.6120535117056854, + "GT Power_0": 0.03309364548494981, + "IA Power_0": 3.4513344481605346, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.824404682274244, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7722876254180605, + "GT Power_0": 0.10793645484949832, + "IA Power_0": 6.875, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.306441471571901, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7668282828282823, + "GT Power_0": 0.11388888888888887, + "IA Power_0": 6.525397306397308, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.03041077441077, + "name": "Video_720_MP4_Fullscreen", + "samples": 297 + }, + { + "DRAM Power_0": 0.794625418060201, + "GT Power_0": 0.23323411371237437, + "IA Power_0": 5.701214046822743, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.270642140468229, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434983277591973, + "GT Power_0": 0.11447157190635453, + "IA Power_0": 5.487608695652174, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.923224080267562, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD178-A9", + "number": 4249, + "tests": [ + { + "DRAM Power_0": 0.6072550335570468, + "GT Power_0": 0.03032550335570466, + "IA Power_0": 3.828704697986577, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.1692147651006675, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7488829431438135, + "GT Power_0": 0.10929096989966554, + "IA Power_0": 6.530625418060206, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.962304347826089, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7452006688963213, + "GT Power_0": 0.10781939799331096, + "IA Power_0": 6.361789297658861, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.880357859531769, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7971066666666669, + "GT Power_0": 0.23225333333333326, + "IA Power_0": 6.781956666666664, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.34867, + "name": "Video_720_MP4_Underlay", + "samples": 300 + }, + { + "DRAM Power_0": 0.74494983277592, + "GT Power_0": 0.11443478260869556, + "IA Power_0": 6.581484949832775, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.011682274247492, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD145-A9", + "number": 4248, + "tests": [ + { + "DRAM Power_0": 0.6051006711409396, + "GT Power_0": 0.027671140939597286, + "IA Power_0": 3.4007315436241625, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.757110738255033, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.738598662207359, + "GT Power_0": 0.09566555183946486, + "IA Power_0": 5.742896321070235, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.148521739130436, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7378862876254177, + "GT Power_0": 0.09710033444816045, + "IA Power_0": 5.562535117056856, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.988551839464878, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7943010033444815, + "GT Power_0": 0.21809030100334453, + "IA Power_0": 5.7807759197324415, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.353819397993308, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7443244147157199, + "GT Power_0": 0.10463210702341141, + "IA Power_0": 5.676264214046825, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.104719063545151, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4247, + "tests": [ + { + "DRAM Power_0": 0.5953355704697985, + "GT Power_0": 0.025751677852348952, + "IA Power_0": 3.126087248322146, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4376174496644296, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7401003344481607, + "GT Power_0": 0.12428428093645492, + "IA Power_0": 5.531963210702344, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.964548494983278, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.74676254180602, + "GT Power_0": 0.12756856187290977, + "IA Power_0": 5.59579264214047, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.090829431438126, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7967692307692312, + "GT Power_0": 0.25347157190635444, + "IA Power_0": 5.717381270903012, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.322765886287626, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7584581939799333, + "GT Power_0": 0.1341772575250837, + "IA Power_0": 5.502374581939799, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.105377926421401, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4246, + "tests": [ + { + "DRAM Power_0": 0.6003712374581938, + "GT Power_0": 0.027301003344481576, + "IA Power_0": 3.633063545150502, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9642809364548492, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7504046822742474, + "GT Power_0": 0.10459866220735788, + "IA Power_0": 6.412608695652174, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.916715719063542, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7382976588628761, + "GT Power_0": 0.10102341137123742, + "IA Power_0": 6.304387959866221, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.718010033444816, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8011137123745818, + "GT Power_0": 0.22883277591973247, + "IA Power_0": 6.7297491638796, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.298474916387962, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7468227424749161, + "GT Power_0": 0.10460535117056854, + "IA Power_0": 6.319545150501676, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.74771906354515, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4245, + "tests": [ + { + "DRAM Power_0": 0.6061571906354515, + "GT Power_0": 0.03592642140468223, + "IA Power_0": 3.2326220735785935, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5723712374581944, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7466789297658863, + "GT Power_0": 0.11030100334448159, + "IA Power_0": 5.54361204013378, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.00417056856187, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7370836120401341, + "GT Power_0": 0.10802675585284285, + "IA Power_0": 5.452023411371239, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.864210702341139, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8013110367892979, + "GT Power_0": 0.22911036789297642, + "IA Power_0": 5.745234113712373, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.359133779264214, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.799265993265994, + "GT Power_0": 0.11199326599326605, + "IA Power_0": 7.31187542087542, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.746508417508421, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 297 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4244, + "tests": [ + { + "DRAM Power_0": 0.6084849498327752, + "GT Power_0": 0.017565217391304337, + "IA Power_0": 3.5072341137123746, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8519130434782616, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7427290969899671, + "GT Power_0": 0.14538461538461545, + "IA Power_0": 6.289424749163881, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.776130434782604, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7495033333333339, + "GT Power_0": 0.14791333333333326, + "IA Power_0": 6.6483933333333285, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.146229999999997, + "name": "Video_720_MP4_Fullscreen", + "samples": 300 + }, + { + "DRAM Power_0": 0.802086956521739, + "GT Power_0": 0.30076923076923096, + "IA Power_0": 6.691822742474917, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3737558528428115, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.749969899665552, + "GT Power_0": 0.15154515050167236, + "IA Power_0": 6.58438461538461, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.089301003344486, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD144-A9", + "number": 4243, + "tests": [ + { + "DRAM Power_0": 0.5971070234113711, + "GT Power_0": 0.029290969899665526, + "IA Power_0": 3.7147257525083606, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.018605351170569, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384448160535124, + "GT Power_0": 0.11041806020066897, + "IA Power_0": 6.493354515050164, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.915, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7417658862876255, + "GT Power_0": 0.1080301003344482, + "IA Power_0": 6.742762541806017, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.153070234113714, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7996409395973154, + "GT Power_0": 0.24168791946308715, + "IA Power_0": 7.170291946308726, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.734560402684567, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7448428093645487, + "GT Power_0": 0.11749832775919722, + "IA Power_0": 6.603949832775919, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.03127090301003, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4242, + "tests": [ + { + "DRAM Power_0": 0.6004715719063546, + "GT Power_0": 0.01684280936454849, + "IA Power_0": 3.832882943143817, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.127143812709029, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7362107023411373, + "GT Power_0": 0.13469565217391294, + "IA Power_0": 6.708852842809364, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1408561872909715, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7438695652173914, + "GT Power_0": 0.13249832775919723, + "IA Power_0": 6.762177257525084, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.266117056856186, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7933344481605349, + "GT Power_0": 0.27714046822742466, + "IA Power_0": 7.034341137123746, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.630274247491635, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7427658862876255, + "GT Power_0": 0.1384147157190635, + "IA Power_0": 6.8574782608695655, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.297237458193976, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4241, + "tests": [ + { + "DRAM Power_0": 0.6141939799331105, + "GT Power_0": 0.032779264214046824, + "IA Power_0": 4.341200668896317, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.703695652173912, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7423166666666673, + "GT Power_0": 0.14111, + "IA Power_0": 6.695590000000001, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.152706666666663, + "name": "Video_720_MP4", + "samples": 300 + }, + { + "DRAM Power_0": 0.7377391304347831, + "GT Power_0": 0.13757190635451508, + "IA Power_0": 6.560277591973239, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.996464882943145, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8025551839464882, + "GT Power_0": 0.2884983277591975, + "IA Power_0": 6.910010033444814, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.56570568561873, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7525819397993314, + "GT Power_0": 0.14627424749163873, + "IA Power_0": 6.77220066889632, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3170133779264175, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD132-A9", + "number": 4240, + "tests": [ + { + "DRAM Power_0": 0.5964429530201344, + "GT Power_0": 0.029120805369127496, + "IA Power_0": 3.9307281879194638, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2116845637583875, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7384648829431439, + "GT Power_0": 0.11331438127090294, + "IA Power_0": 7.020133779264208, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.432026755852846, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.757040133779264, + "GT Power_0": 0.11427759197324411, + "IA Power_0": 7.1342742474916365, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.769491638795982, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7974648829431442, + "GT Power_0": 0.23718060200668903, + "IA Power_0": 7.290735785953173, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.84914715719063, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7436655518394646, + "GT Power_0": 0.11809364548494977, + "IA Power_0": 6.91536454849498, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.335658862876257, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4239, + "tests": [ + { + "DRAM Power_0": 0.60596644295302, + "GT Power_0": 0.036634228187919435, + "IA Power_0": 4.223697986577183, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.554104026845638, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7393612040133785, + "GT Power_0": 0.1316321070234114, + "IA Power_0": 6.960484949832776, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.413789297658864, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7372675585284283, + "GT Power_0": 0.1325551839464882, + "IA Power_0": 7.012056856187288, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.454076923076922, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8041308724832216, + "GT Power_0": 0.25826510067114083, + "IA Power_0": 7.34370469798658, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.979318791946307, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7582307692307697, + "GT Power_0": 0.1364615384615385, + "IA Power_0": 7.214491638795985, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.751150501672241, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4238, + "tests": [ + { + "DRAM Power_0": 0.6013799999999999, + "GT Power_0": 0.016553333333333326, + "IA Power_0": 3.6870033333333354, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9775833333333335, + "name": "Basic", + "samples": 300 + }, + { + "DRAM Power_0": 0.7384381270903012, + "GT Power_0": 0.1228829431438127, + "IA Power_0": 6.444632107023413, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.87361872909699, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7355852842809361, + "GT Power_0": 0.12540468227424745, + "IA Power_0": 6.286123745819394, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.733879598662206, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7942575250836119, + "GT Power_0": 0.28731103678929776, + "IA Power_0": 6.614859531772576, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.244675585284279, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.744070234113713, + "GT Power_0": 0.13470568561872903, + "IA Power_0": 6.425602006688961, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.85419397993311, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4237, + "tests": [ + { + "DRAM Power_0": 0.6023120805369125, + "GT Power_0": 0.03363422818791943, + "IA Power_0": 3.426526845637583, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7101208053691237, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7383712374581942, + "GT Power_0": 0.12204347826086948, + "IA Power_0": 5.761749163879598, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.204555183946492, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7478461538461542, + "GT Power_0": 0.1230969899665553, + "IA Power_0": 5.796140468227421, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2958060200668875, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7953277591973247, + "GT Power_0": 0.24914715719063532, + "IA Power_0": 5.971364548494982, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.55803678929766, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743157190635452, + "GT Power_0": 0.128314381270903, + "IA Power_0": 5.932976588628763, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3750066889632055, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4236, + "tests": [ + { + "DRAM Power_0": 0.6057525083612039, + "GT Power_0": 0.03519397993311033, + "IA Power_0": 3.5967591973244133, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9643277591973254, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387759197324419, + "GT Power_0": 0.12360200668896329, + "IA Power_0": 6.119608695652172, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.560147157190632, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7421036789297656, + "GT Power_0": 0.12399665551839475, + "IA Power_0": 6.318541806020071, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.768371237458189, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8052693602693606, + "GT Power_0": 0.2513973063973065, + "IA Power_0": 7.172676767676766, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.773804713804712, + "name": "Video_720_MP4_Underlay", + "samples": 297 + }, + { + "DRAM Power_0": 0.7457826086956525, + "GT Power_0": 0.1272240802675586, + "IA Power_0": 6.4734381270903, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.916775919732442, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD161-A9", + "number": 4235, + "tests": [ + { + "DRAM Power_0": 0.6011711409395969, + "GT Power_0": 0.0342919463087248, + "IA Power_0": 3.0564228187919475, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.3724832214765073, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7386521739130433, + "GT Power_0": 0.11193979933110375, + "IA Power_0": 5.173511705685616, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.611020066889629, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7368361204013377, + "GT Power_0": 0.1130401337792643, + "IA Power_0": 5.316204013377928, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.733578595317729, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7952173913043474, + "GT Power_0": 0.24329096989966545, + "IA Power_0": 5.5331505016722415, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.111458193979932, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7582441471571908, + "GT Power_0": 0.12342140468227425, + "IA Power_0": 5.654819397993308, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.156862876254185, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4234, + "tests": [ + { + "DRAM Power_0": 0.6094731543624161, + "GT Power_0": 0.028302013422818777, + "IA Power_0": 3.5815469798657693, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8886275167785262, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7463913043478265, + "GT Power_0": 0.09505685618729098, + "IA Power_0": 5.78338795986622, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2464715719063495, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7500267558528436, + "GT Power_0": 0.090056856187291, + "IA Power_0": 5.830558528428091, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.291829431438123, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7986321070234114, + "GT Power_0": 0.20309698996655526, + "IA Power_0": 6.021775919732438, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.560478260869559, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7473678929765885, + "GT Power_0": 0.094438127090301, + "IA Power_0": 6.079665551839463, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.486301003344483, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD151-A9", + "number": 4233, + "tests": [ + { + "DRAM Power_0": 0.5996510067114096, + "GT Power_0": 0.025912751677852314, + "IA Power_0": 3.560550335570467, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8570805369127528, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7397926421404686, + "GT Power_0": 0.10946153846153849, + "IA Power_0": 6.4222173913043505, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.820903010033444, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7375050167224084, + "GT Power_0": 0.10911371237458196, + "IA Power_0": 6.392451505016726, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.811869565217394, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8125217391304345, + "GT Power_0": 0.24796321070234092, + "IA Power_0": 7.02304347826087, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.81220401337793, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7476956521739134, + "GT Power_0": 0.11754849498327763, + "IA Power_0": 6.8957826086956535, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.303324414715716, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4232, + "tests": [ + { + "DRAM Power_0": 0.6047281879194631, + "GT Power_0": 0.026456375838926148, + "IA Power_0": 3.392885906040269, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.753087248322148, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7385752508361201, + "GT Power_0": 0.08931438127090303, + "IA Power_0": 6.033030100334445, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.4240501672240855, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7491073825503353, + "GT Power_0": 0.09166442953020135, + "IA Power_0": 6.10142617449664, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.541979865771815, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.815208053691275, + "GT Power_0": 0.22932214765100672, + "IA Power_0": 6.543006711409398, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1085771812080525, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7938080808080809, + "GT Power_0": 0.10071043771043776, + "IA Power_0": 7.665117845117846, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.090986531986534, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 297 + } + ] + }, + { + "bot": "BUILD168-A9", + "number": 4231, + "tests": [ + { + "DRAM Power_0": 0.6000134228187919, + "GT Power_0": 0.035620805369127484, + "IA Power_0": 3.5738221476510055, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.88488255033557, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7400668896321071, + "GT Power_0": 0.12218394648829432, + "IA Power_0": 6.3048996655518375, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.7432976588628755, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7379665551839465, + "GT Power_0": 0.12193645484949822, + "IA Power_0": 6.307943143812711, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.754331103678931, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7947257525083615, + "GT Power_0": 0.25766889632107026, + "IA Power_0": 6.617354515050167, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.227217391304351, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7542441471571905, + "GT Power_0": 0.12994648829431432, + "IA Power_0": 6.568946488294316, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.09127090301003, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4230, + "tests": [ + { + "DRAM Power_0": 0.6057483221476507, + "GT Power_0": 0.028557046979865747, + "IA Power_0": 3.5636644295302013, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9031006711409373, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7549732441471576, + "GT Power_0": 0.12505016722408027, + "IA Power_0": 6.6694648829431395, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.147287625418059, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7391872909698994, + "GT Power_0": 0.1205919732441471, + "IA Power_0": 6.39754180602007, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.831966555183945, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8051806020066886, + "GT Power_0": 0.2547926421404684, + "IA Power_0": 6.697270903010034, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.306755852842813, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.756553691275168, + "GT Power_0": 0.1297248322147652, + "IA Power_0": 6.735073825503356, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.261674496644291, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD118-A9", + "number": 4229, + "tests": [ + { + "DRAM Power_0": 0.6074161073825501, + "GT Power_0": 0.030046979865771768, + "IA Power_0": 3.5207080536912763, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8709362416107376, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7393578595317726, + "GT Power_0": 0.10992976588628767, + "IA Power_0": 6.022749163879591, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.437317725752505, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7538862876254185, + "GT Power_0": 0.10536454849498327, + "IA Power_0": 5.8951571906354525, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.49870568561873, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.803498327759197, + "GT Power_0": 0.239010033444816, + "IA Power_0": 6.107836120401339, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.750678929765889, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7537658862876256, + "GT Power_0": 0.1104882943143813, + "IA Power_0": 5.876317725752508, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.390658862876253, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD156-A9", + "number": 4228, + "tests": [ + { + "DRAM Power_0": 0.6015785953177256, + "GT Power_0": 0.03332775919732439, + "IA Power_0": 3.4020468227424727, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.71927424749164, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7466956521739135, + "GT Power_0": 0.12204682274247498, + "IA Power_0": 5.761357859531772, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.23555518394649, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7529096989966562, + "GT Power_0": 0.1226220735785953, + "IA Power_0": 5.903364548494985, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.3909531772575265, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.804321070234114, + "GT Power_0": 0.260304347826087, + "IA Power_0": 6.209260869565218, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.8020033444816095, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7536387959866232, + "GT Power_0": 0.13109364548494978, + "IA Power_0": 5.701765886287622, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.1908160535117025, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4227, + "tests": [ + { + "DRAM Power_0": 0.606523489932886, + "GT Power_0": 0.02655369127516776, + "IA Power_0": 4.1258422818791916, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.4504597315436225, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7405484949832778, + "GT Power_0": 0.11588963210702345, + "IA Power_0": 6.793341137123751, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.212916387959866, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7456421404682283, + "GT Power_0": 0.11586287625418068, + "IA Power_0": 6.879294314381275, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.327712374581936, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8040836120401336, + "GT Power_0": 0.23948829431438132, + "IA Power_0": 7.022207357859535, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.628688963210704, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7453712374581944, + "GT Power_0": 0.11936789297658862, + "IA Power_0": 6.738792642140471, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.196066889632101, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD21-B1", + "number": 4226, + "tests": [ + { + "DRAM Power_0": 0.6031845637583891, + "GT Power_0": 0.029355704697986557, + "IA Power_0": 3.609889261744966, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.120392617449671, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7420635451505019, + "GT Power_0": 0.12335785953177263, + "IA Power_0": 6.137110367892982, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.752632107023415, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7510668896321071, + "GT Power_0": 0.12197324414715717, + "IA Power_0": 6.03674247491639, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.692896321070231, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7979397993311039, + "GT Power_0": 0.25614715719063547, + "IA Power_0": 6.215658862876251, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.9895719063545245, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7479130434782614, + "GT Power_0": 0.13260200668896327, + "IA Power_0": 6.059294314381269, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6989832775919815, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4225, + "tests": [ + { + "DRAM Power_0": 0.6114865771812079, + "GT Power_0": 0.03329865771812077, + "IA Power_0": 3.8882046979865756, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.29441946308725, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7379765886287628, + "GT Power_0": 0.1297123745819399, + "IA Power_0": 6.322561872909702, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.769692307692308, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7442307692307694, + "GT Power_0": 0.12857859531772584, + "IA Power_0": 6.331742474916391, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.84299331103679, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7923712374581943, + "GT Power_0": 0.2936187290969901, + "IA Power_0": 6.637959866220736, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.26099331103679, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7564715719063546, + "GT Power_0": 0.13737123745819405, + "IA Power_0": 6.5448829431438105, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.149648829431441, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4224, + "tests": [ + { + "DRAM Power_0": 0.6031103678929765, + "GT Power_0": 0.030809364548494964, + "IA Power_0": 3.357391304347824, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6693478260869563, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7399565217391314, + "GT Power_0": 0.1254882943143813, + "IA Power_0": 5.603254180602008, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.046939799331106, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7401438127090304, + "GT Power_0": 0.12243812709030104, + "IA Power_0": 5.69794983277592, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.13336120401338, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7988729096989972, + "GT Power_0": 0.24645150501672228, + "IA Power_0": 5.662628762541808, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.255953177257528, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7602441471571909, + "GT Power_0": 0.13794983277591963, + "IA Power_0": 5.962404682274247, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.386080267558531, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD120-A9", + "number": 4223, + "tests": [ + { + "DRAM Power_0": 0.6060704697986581, + "GT Power_0": 0.031157718120805315, + "IA Power_0": 3.751184563758391, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.124583892617447, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7434849498327759, + "GT Power_0": 0.12775919732441474, + "IA Power_0": 6.510816053511703, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.993979933110369, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7385618729096994, + "GT Power_0": 0.12382943143812718, + "IA Power_0": 6.527892976588627, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.945351170568563, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7951103678929773, + "GT Power_0": 0.26648160535117055, + "IA Power_0": 6.746688963210701, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.32018060200669, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7515986622073573, + "GT Power_0": 0.12886956521739135, + "IA Power_0": 6.656100334448163, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.145672240802676, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD136-A9", + "number": 4222, + "tests": [ + { + "DRAM Power_0": 0.606846153846154, + "GT Power_0": 0.031230769230769194, + "IA Power_0": 3.2037224080267577, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5650836120401337, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7377090301003347, + "GT Power_0": 0.10880267558528424, + "IA Power_0": 5.693153846153848, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.105498327759194, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7445752508361209, + "GT Power_0": 0.10938795986622077, + "IA Power_0": 5.679832775919732, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.122876254180603, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7956555183946489, + "GT Power_0": 0.2199331103678931, + "IA Power_0": 5.8172173913043475, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.395260869565214, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7448896321070236, + "GT Power_0": 0.11489966555183947, + "IA Power_0": 5.780856187290973, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.211474916387959, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4221, + "tests": [ + { + "DRAM Power_0": 0.6052147651006708, + "GT Power_0": 0.028701342281879167, + "IA Power_0": 3.184342281879196, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5439966442952993, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.738056856187291, + "GT Power_0": 0.11348829431438129, + "IA Power_0": 5.484963210702344, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.909033444816051, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393666666666668, + "GT Power_0": 0.11331999999999996, + "IA Power_0": 5.46363, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.914939999999999, + "name": "Video_720_MP4_Fullscreen", + "samples": 300 + }, + { + "DRAM Power_0": 0.8012341137123752, + "GT Power_0": 0.22658528428093624, + "IA Power_0": 5.874675585284279, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.44751170568562, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434280936454852, + "GT Power_0": 0.11986287625418057, + "IA Power_0": 5.526167224080273, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.974759197324413, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4220, + "tests": [ + { + "DRAM Power_0": 0.6101845637583896, + "GT Power_0": 0.02723154362416108, + "IA Power_0": 3.7051308724832204, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.0401375838926175, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7488120805369127, + "GT Power_0": 0.09559060402684559, + "IA Power_0": 6.163120805369125, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.610436241610739, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7403946488294318, + "GT Power_0": 0.09439799331103683, + "IA Power_0": 6.082237458193979, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.507605351170565, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7982976588628764, + "GT Power_0": 0.20124414715719066, + "IA Power_0": 6.050903010033443, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.596030100334448, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7563411371237458, + "GT Power_0": 0.09812709030100346, + "IA Power_0": 6.074648829431437, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.528294314381275, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4219, + "tests": [ + { + "DRAM Power_0": 0.6050535117056863, + "GT Power_0": 0.030933110367892914, + "IA Power_0": 3.686297658862877, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.048478260869568, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7486488294314384, + "GT Power_0": 0.11975585284280937, + "IA Power_0": 6.335127090301006, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.812250836120402, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.736488294314382, + "GT Power_0": 0.11508695652173916, + "IA Power_0": 6.188224080267562, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.603367892976584, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7958461538461542, + "GT Power_0": 0.2375752508361201, + "IA Power_0": 6.3521270903010025, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.886060200668891, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7433812709030103, + "GT Power_0": 0.1242842809364549, + "IA Power_0": 6.507538461538459, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.948190635451502, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4218, + "tests": [ + { + "DRAM Power_0": 0.6147625418060199, + "GT Power_0": 0.014471571906354511, + "IA Power_0": 3.3463645484949853, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7098127090300976, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7366655518394645, + "GT Power_0": 0.11322742474916396, + "IA Power_0": 5.537377926421401, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.952789297658866, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.736401337792642, + "GT Power_0": 0.10999665551839462, + "IA Power_0": 5.70402341137124, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.10980602006689, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7976053511705686, + "GT Power_0": 0.22827090301003336, + "IA Power_0": 5.81897658862876, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.388086956521735, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7445752508361202, + "GT Power_0": 0.11906688963210697, + "IA Power_0": 5.748511705685619, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.172491638795981, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4217, + "tests": [ + { + "DRAM Power_0": 0.6056127946127943, + "GT Power_0": 0.03399326599326594, + "IA Power_0": 3.4382558922558926, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.743370370370371, + "name": "Basic", + "samples": 297 + }, + { + "DRAM Power_0": 0.7381237458193982, + "GT Power_0": 0.11342474916387953, + "IA Power_0": 5.530083612040135, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.970652173913043, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7369498327759205, + "GT Power_0": 0.1150969899665552, + "IA Power_0": 5.603688963210705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.038548494983277, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7975484949832782, + "GT Power_0": 0.22931103678929754, + "IA Power_0": 5.659505016722412, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.228200668896318, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7482775919732443, + "GT Power_0": 0.11841137123745822, + "IA Power_0": 5.761006688963208, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.223123745819399, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD127-A9", + "number": 4216, + "tests": [ + { + "DRAM Power_0": 0.6231818181818187, + "GT Power_0": 0.026020202020201996, + "IA Power_0": 3.9774478114478127, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.3066531986531995, + "name": "Basic", + "samples": 297 + }, + { + "DRAM Power_0": 0.7387123745819405, + "GT Power_0": 0.09605685618729104, + "IA Power_0": 5.52646822742475, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.930063545150506, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7430234113712375, + "GT Power_0": 0.09955852842809362, + "IA Power_0": 5.596745819397996, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.030872909698996, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8030869565217393, + "GT Power_0": 0.20792307692307704, + "IA Power_0": 5.70466889632107, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.2815317725752555, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7598127090301007, + "GT Power_0": 0.09978595317725761, + "IA Power_0": 5.636200668896323, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.112518394648826, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4215, + "tests": [ + { + "DRAM Power_0": 0.6080869565217385, + "GT Power_0": 0.033846153846153804, + "IA Power_0": 3.4920936454849483, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.865729096989966, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7391103678929768, + "GT Power_0": 0.1362408026755852, + "IA Power_0": 5.703769230769228, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.123117056856189, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7369030100334455, + "GT Power_0": 0.13197658862876244, + "IA Power_0": 5.581943143812712, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.021769230769231, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8148929765886291, + "GT Power_0": 0.25621070234113696, + "IA Power_0": 5.649494983277595, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.454929765886286, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7416555183946489, + "GT Power_0": 0.14218060200668897, + "IA Power_0": 5.6538628762541805, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.098889632107021, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4214, + "tests": [ + { + "DRAM Power_0": 0.6057617449664433, + "GT Power_0": 0.027510067114093914, + "IA Power_0": 3.821697986577178, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.184416107382552, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7402709030100341, + "GT Power_0": 0.11826421404682273, + "IA Power_0": 6.9039030100334475, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.319545150501672, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7431237458193982, + "GT Power_0": 0.11909698996655516, + "IA Power_0": 6.877521739130439, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.307591973244146, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7991404682274247, + "GT Power_0": 0.2397859531772575, + "IA Power_0": 7.075642140468229, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.636103678929763, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7615752508361204, + "GT Power_0": 0.12990635451505017, + "IA Power_0": 7.140354515050167, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.823916387959862, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD173-A9", + "number": 4213, + "tests": [ + { + "DRAM Power_0": 0.5998929765886292, + "GT Power_0": 0.015030100334448168, + "IA Power_0": 3.945765886287625, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.242220735785953, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7503478260869565, + "GT Power_0": 0.13435785953177254, + "IA Power_0": 6.952237458193977, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.473919732441471, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7366521739130439, + "GT Power_0": 0.13295652173913047, + "IA Power_0": 7.0467391304347835, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4854816053511675, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.805642140468227, + "GT Power_0": 0.26529431438127105, + "IA Power_0": 7.211461538461539, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.850899665551842, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7438127090301007, + "GT Power_0": 0.13947157190635448, + "IA Power_0": 7.186478260869567, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.635294314381268, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD168-A9", + "number": 4212, + "tests": [ + { + "DRAM Power_0": 0.6109866220735787, + "GT Power_0": 0.010153846153846156, + "IA Power_0": 3.683886287625418, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.1876120401337795, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7377123745819406, + "GT Power_0": 0.1324648829431438, + "IA Power_0": 6.729498327759199, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.164304347826086, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7375551839464884, + "GT Power_0": 0.13127090301003344, + "IA Power_0": 6.699705685618725, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.15336120401338, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7965317725752512, + "GT Power_0": 0.2628528428093648, + "IA Power_0": 6.822190635451505, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.445913043478264, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7497993311036794, + "GT Power_0": 0.139505016722408, + "IA Power_0": 6.764521739130435, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.268973244147159, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4211, + "tests": [ + { + "DRAM Power_0": 0.6068255033557051, + "GT Power_0": 0.028694630872483216, + "IA Power_0": 3.589973154362416, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.901171140939595, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7389197324414715, + "GT Power_0": 0.10466889632107028, + "IA Power_0": 6.466397993311034, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.886244147157191, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7417147651006712, + "GT Power_0": 0.10159060402684571, + "IA Power_0": 6.795644295302007, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.199127516778521, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.8033779264214046, + "GT Power_0": 0.22812040133779277, + "IA Power_0": 6.511000000000001, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.159424749163878, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743946488294314, + "GT Power_0": 0.10903678929765882, + "IA Power_0": 6.6320668896321076, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.059314381270903, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4210, + "tests": [ + { + "DRAM Power_0": 0.6029431438127089, + "GT Power_0": 0.03685284280936452, + "IA Power_0": 4.678404682274247, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.981966555183947, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434214046822746, + "GT Power_0": 0.11853846153846158, + "IA Power_0": 8.06324080267558, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.54405685618729, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7372408026755858, + "GT Power_0": 0.11937792642140478, + "IA Power_0": 8.02827424749164, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.42642474916388, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8022140468227416, + "GT Power_0": 0.24414381270903, + "IA Power_0": 8.52675585284281, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.140351170568561, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7522642140468222, + "GT Power_0": 0.1258428093645485, + "IA Power_0": 8.383010033444819, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.833896321070227, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD173-A9", + "number": 4209, + "tests": [ + { + "DRAM Power_0": 0.6073120805369127, + "GT Power_0": 0.03615436241610734, + "IA Power_0": 3.9381476510067093, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.318986577181209, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7383277591973253, + "GT Power_0": 0.14470903010033445, + "IA Power_0": 7.010769230769228, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.456782608695649, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7436321070234113, + "GT Power_0": 0.1408896321070236, + "IA Power_0": 7.115317725752507, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.633401337792639, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7982408026755852, + "GT Power_0": 0.269916387959866, + "IA Power_0": 7.252050167224081, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.852284280936454, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7430066889632104, + "GT Power_0": 0.14155518394648822, + "IA Power_0": 7.36077257525084, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.80526755852843, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD144-A9", + "number": 4208, + "tests": [ + { + "DRAM Power_0": 0.601010067114094, + "GT Power_0": 0.026704697986577153, + "IA Power_0": 3.6286610738255014, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.929617449664429, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.740103678929766, + "GT Power_0": 0.11371237458193985, + "IA Power_0": 6.7315719063545165, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.156484949832773, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7362508361204017, + "GT Power_0": 0.11486287625418068, + "IA Power_0": 6.907317725752511, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.342769230769227, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.799250836120401, + "GT Power_0": 0.23802341137123745, + "IA Power_0": 7.0456020066889575, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.606869565217387, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7442675585284275, + "GT Power_0": 0.12219732441471584, + "IA Power_0": 7.068204013377928, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4914046822742435, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4207, + "tests": [ + { + "DRAM Power_0": 0.6037792642140465, + "GT Power_0": 0.03335117056856183, + "IA Power_0": 3.892321070234115, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.219387959866219, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.741013377926422, + "GT Power_0": 0.14565886287625424, + "IA Power_0": 6.547923076923081, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.023227424749157, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7370033444816056, + "GT Power_0": 0.14360200668896314, + "IA Power_0": 6.821444816053519, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.271468227424751, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7986789297658863, + "GT Power_0": 0.28615050167224115, + "IA Power_0": 6.962618729096988, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.579016722408029, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7534180602006686, + "GT Power_0": 0.16979598662207368, + "IA Power_0": 6.9608896321070235, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.431244147157193, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD157-A9", + "number": 4206, + "tests": [ + { + "DRAM Power_0": 0.6024949832775922, + "GT Power_0": 0.02600668896321068, + "IA Power_0": 3.894183946488295, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.258444816053516, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432516778523492, + "GT Power_0": 0.13247651006711414, + "IA Power_0": 7.00352348993288, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.422228187919462, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7354147157190639, + "GT Power_0": 0.12760200668896324, + "IA Power_0": 6.712939799331099, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.143408026755851, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7974515050167219, + "GT Power_0": 0.2522073578595317, + "IA Power_0": 6.773501672240801, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.365632107023413, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7431371237458192, + "GT Power_0": 0.14048829431438117, + "IA Power_0": 6.855979933110366, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.273976588628764, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD130-A9", + "number": 4205, + "tests": [ + { + "DRAM Power_0": 0.6020635451505016, + "GT Power_0": 0.015474916387959857, + "IA Power_0": 4.145364548494983, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.422571906354515, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.74658, + "GT Power_0": 0.12880333333333327, + "IA Power_0": 7.568616666666667, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.072713333333327, + "name": "Video_720_MP4", + "samples": 300 + }, + { + "DRAM Power_0": 0.7380702341137124, + "GT Power_0": 0.12795986622073582, + "IA Power_0": 7.419953177257523, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.847224080267562, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7962374581939804, + "GT Power_0": 0.2511505016722407, + "IA Power_0": 7.561394648829431, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.129685618729095, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7439698996655526, + "GT Power_0": 0.13818060200668897, + "IA Power_0": 7.650297658862865, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.103491638795985, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4204, + "tests": [ + { + "DRAM Power_0": 0.6045436241610737, + "GT Power_0": 0.033080536912751646, + "IA Power_0": 3.9569328859060384, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.310114093959731, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7378762541806023, + "GT Power_0": 0.12137458193979934, + "IA Power_0": 6.965678929765886, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.39692642140468, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7369999999999998, + "GT Power_0": 0.11716387959866224, + "IA Power_0": 6.740872909698997, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1695752508361235, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7959732441471572, + "GT Power_0": 0.2384949832775919, + "IA Power_0": 6.901100334448161, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.47554849498328, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7480668896321071, + "GT Power_0": 0.12295652173913049, + "IA Power_0": 7.083441471571905, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5308026755852815, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4203, + "tests": [ + { + "DRAM Power_0": 0.6018829431438122, + "GT Power_0": 0.014595317725752505, + "IA Power_0": 3.07331772575251, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.3758327759197324, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387290969899668, + "GT Power_0": 0.11909364548494979, + "IA Power_0": 5.531147157190635, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.94942474916388, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7436889632107024, + "GT Power_0": 0.11538127090301004, + "IA Power_0": 5.661913043478266, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.095140468227428, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8043779264214043, + "GT Power_0": 0.23188963210702343, + "IA Power_0": 5.634809364548489, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.231993311036787, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7504080267558537, + "GT Power_0": 0.12427090301003346, + "IA Power_0": 5.623438127090296, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.124133779264214, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD158-A9", + "number": 4202, + "tests": [ + { + "DRAM Power_0": 0.6089197324414714, + "GT Power_0": 0.01409364548494983, + "IA Power_0": 3.8713645484949835, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2299063545150535, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7368662207357857, + "GT Power_0": 0.14525083612040135, + "IA Power_0": 7.065688963210704, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.528615384615386, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7365250836120404, + "GT Power_0": 0.1456555183946488, + "IA Power_0": 7.258806020066895, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.693752508361209, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7973210702341138, + "GT Power_0": 0.28428428093645497, + "IA Power_0": 7.445715719063546, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.057150501672234, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7489799331103679, + "GT Power_0": 0.1590635451505016, + "IA Power_0": 7.348923076923071, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.881344481605356, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD162-A9", + "number": 4201, + "tests": [ + { + "DRAM Power_0": 0.6071040268456378, + "GT Power_0": 0.03604697986577179, + "IA Power_0": 3.545355704697986, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.861416107382549, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7395551839464882, + "GT Power_0": 0.13468227424749163, + "IA Power_0": 5.699314381270906, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.158983277591975, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7459464882943146, + "GT Power_0": 0.13585618729096993, + "IA Power_0": 5.630602006688962, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.12189632107024, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.797180602006689, + "GT Power_0": 0.2607090301003346, + "IA Power_0": 5.741668896321068, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.309986622073581, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7437458193979924, + "GT Power_0": 0.14294983277591966, + "IA Power_0": 5.6835150501672285, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.153170568561873, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD127-A9", + "number": 4200, + "tests": [ + { + "DRAM Power_0": 0.6022207357859529, + "GT Power_0": 0.0319498327759197, + "IA Power_0": 3.145237458193979, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.453739130434784, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7396321070234115, + "GT Power_0": 0.09615384615384619, + "IA Power_0": 5.601826086956522, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.982016722408027, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7411638795986618, + "GT Power_0": 0.09371237458193984, + "IA Power_0": 5.620709030100333, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.011458193979937, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7975953177257525, + "GT Power_0": 0.20987959866220743, + "IA Power_0": 5.527973244147164, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.075852842809363, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7440501672240807, + "GT Power_0": 0.10274247491638801, + "IA Power_0": 5.5011438127090315, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.050033444816058, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD159-A9", + "number": 4199, + "tests": [ + { + "DRAM Power_0": 0.6077986577181208, + "GT Power_0": 0.03306040268456373, + "IA Power_0": 3.458731543624159, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8388657718120798, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7405785953177262, + "GT Power_0": 0.13154515050167223, + "IA Power_0": 5.831675585284276, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.281424749163881, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7405016722408023, + "GT Power_0": 0.12835785953177262, + "IA Power_0": 5.885471571906352, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.341508361204017, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7972408026755853, + "GT Power_0": 0.2526321070234114, + "IA Power_0": 5.931227424749163, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.5321638795986585, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.8057046979865772, + "GT Power_0": 0.1368355704697987, + "IA Power_0": 7.769130872483219, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.210912751677858, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4198, + "tests": [ + { + "DRAM Power_0": 0.6041946308724835, + "GT Power_0": 0.03007718120805367, + "IA Power_0": 4.240359060402684, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.587000000000008, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7398628762541803, + "GT Power_0": 0.0977224080267559, + "IA Power_0": 6.130561872909703, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.541762541806017, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.743872909698997, + "GT Power_0": 0.09527759197324417, + "IA Power_0": 6.268906354515046, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.758458193979935, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7976120401337791, + "GT Power_0": 0.20905685618729122, + "IA Power_0": 6.390852842809363, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.934046822742469, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.745625418060201, + "GT Power_0": 0.0996521739130435, + "IA Power_0": 6.325130434782609, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.7430434782608675, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4197, + "tests": [ + { + "DRAM Power_0": 0.6032642140468228, + "GT Power_0": 0.014879598662207349, + "IA Power_0": 3.688408026755852, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9921906354515064, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7393979933110366, + "GT Power_0": 0.12306354515050169, + "IA Power_0": 6.561327759197322, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.016715719063545, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7372240802675586, + "GT Power_0": 0.12115384615384614, + "IA Power_0": 6.628551839464886, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0680100334448195, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8039464882943147, + "GT Power_0": 0.2494615384615385, + "IA Power_0": 6.863371237458194, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.513481605351175, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7445183946488301, + "GT Power_0": 0.1277558528428094, + "IA Power_0": 6.776448160535116, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.215160535117047, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD178-A9", + "number": 4196, + "tests": [ + { + "DRAM Power_0": 0.6102642140468222, + "GT Power_0": 0.013408026755852839, + "IA Power_0": 3.665351170568562, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.0080501672240745, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7579230769230773, + "GT Power_0": 0.10660869565217389, + "IA Power_0": 7.0421973244147145, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.503936454849495, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7380702341137124, + "GT Power_0": 0.1047056856187291, + "IA Power_0": 6.664799331103675, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.056662207357864, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8009060402684566, + "GT Power_0": 0.21894966442953015, + "IA Power_0": 6.955402684563757, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.497986577181202, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7439698996655516, + "GT Power_0": 0.11053846153846157, + "IA Power_0": 6.763899665551839, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.204795986622079, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4195, + "tests": [ + { + "DRAM Power_0": 0.6011505016722405, + "GT Power_0": 0.016515050167224075, + "IA Power_0": 3.5623678929765883, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8638361204013325, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7362307692307702, + "GT Power_0": 0.13366889632107026, + "IA Power_0": 6.625244147157189, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.073625418060202, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404615384615387, + "GT Power_0": 0.13704682274247487, + "IA Power_0": 6.734588628762544, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.243769230769232, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8007190635451498, + "GT Power_0": 0.29015384615384604, + "IA Power_0": 6.938471571906356, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5654715719063566, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7410267558528428, + "GT Power_0": 0.14433110367892973, + "IA Power_0": 6.768936454849499, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.22242809364548, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4194, + "tests": [ + { + "DRAM Power_0": 0.613771812080537, + "GT Power_0": 0.031093959731543584, + "IA Power_0": 3.9193859060402705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.328520134228186, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.738394648829432, + "GT Power_0": 0.1184247491638796, + "IA Power_0": 6.421816053511705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.850565217391303, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451103678929772, + "GT Power_0": 0.11718729096989977, + "IA Power_0": 6.2886220735785985, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.784605351170569, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8004530201342273, + "GT Power_0": 0.24044966442952995, + "IA Power_0": 6.8606946308724845, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.423882550335572, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.750979933110368, + "GT Power_0": 0.12583277591973244, + "IA Power_0": 6.564107023411373, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.092999999999995, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD180-A9", + "number": 4193, + "tests": [ + { + "DRAM Power_0": 0.606153846153846, + "GT Power_0": 0.0326755852842809, + "IA Power_0": 4.193063545150501, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.535140468227425, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7400033557046988, + "GT Power_0": 0.14026510067114098, + "IA Power_0": 7.143661073825507, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6475369127516775, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7438060200668896, + "GT Power_0": 0.1358729096989966, + "IA Power_0": 7.2678862876254176, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.797428093645485, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8079130434782602, + "GT Power_0": 0.31293979933110366, + "IA Power_0": 7.452334448160541, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.166267558528425, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7502006688963209, + "GT Power_0": 0.1535652173913044, + "IA Power_0": 7.331672240802674, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.872879598662215, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4192, + "tests": [ + { + "DRAM Power_0": 0.6059063545150498, + "GT Power_0": 0.030969899665551814, + "IA Power_0": 3.8334180602006698, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.177418060200667, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7414314381270906, + "GT Power_0": 0.1155852842809364, + "IA Power_0": 6.832418060200666, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2553143812709, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7383946488294315, + "GT Power_0": 0.11314381270902997, + "IA Power_0": 6.886424749163876, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3307424749163825, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7976053511705686, + "GT Power_0": 0.23370903010033436, + "IA Power_0": 7.005448160535115, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.567214046822749, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7433812709030103, + "GT Power_0": 0.11733110367892982, + "IA Power_0": 7.125712374581942, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.516719063545145, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4191, + "tests": [ + { + "DRAM Power_0": 0.6130234113712375, + "GT Power_0": 0.03608695652173911, + "IA Power_0": 3.4239264214046825, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.799581939799331, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7378829431438129, + "GT Power_0": 0.1273612040133779, + "IA Power_0": 5.597090301003346, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.03649498327759, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7373076923076922, + "GT Power_0": 0.1287357859531773, + "IA Power_0": 5.554401337792642, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.005849498327764, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7978896321070237, + "GT Power_0": 0.24838795986622073, + "IA Power_0": 5.733096989966554, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.324357859531775, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432274247491635, + "GT Power_0": 0.13512040133779268, + "IA Power_0": 5.630588628762543, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.08991638795987, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4190, + "tests": [ + { + "DRAM Power_0": 0.6193724832214769, + "GT Power_0": 0.024355704697986556, + "IA Power_0": 4.587842281879191, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.92740268456376, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7556622073578594, + "GT Power_0": 0.14012374581939796, + "IA Power_0": 7.5815585284281015, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.006899665551833, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7395418060200664, + "GT Power_0": 0.13854180602006702, + "IA Power_0": 6.656923076923082, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.076826086956523, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.808371237458194, + "GT Power_0": 0.2704247491638796, + "IA Power_0": 6.829046822742471, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5970936454849465, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7568294314381271, + "GT Power_0": 0.14230434782608706, + "IA Power_0": 6.841307692307695, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.309903010033444, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD136-A9", + "number": 4189, + "tests": [ + { + "DRAM Power_0": 0.606852842809365, + "GT Power_0": 0.03652842809364544, + "IA Power_0": 3.3872943143812746, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.763989966555184, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7385451505016722, + "GT Power_0": 0.11407357859531776, + "IA Power_0": 5.725775919732438, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.163290969899666, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7407491638795989, + "GT Power_0": 0.1147257525083612, + "IA Power_0": 5.625662207357856, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.05073578595318, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7965250836120398, + "GT Power_0": 0.2241304347826088, + "IA Power_0": 5.763090301003348, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.323170568561876, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7526020066889625, + "GT Power_0": 0.11893311036789303, + "IA Power_0": 5.694725752508363, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.192341137123743, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4188, + "tests": [ + { + "DRAM Power_0": 0.6053657718120808, + "GT Power_0": 0.030265100671140924, + "IA Power_0": 3.821241610738256, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.134939597315436, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7476755852842808, + "GT Power_0": 0.11929765886287623, + "IA Power_0": 6.612588628762545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0776789297658915, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7379331103678934, + "GT Power_0": 0.12024749163879599, + "IA Power_0": 6.503545150501674, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.944842809364549, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796377926421404, + "GT Power_0": 0.24661204013377902, + "IA Power_0": 6.738635451505016, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.300842809364548, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7470334448160537, + "GT Power_0": 0.1244147157190636, + "IA Power_0": 6.6401906354515, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.069906354515047, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD176-A9", + "number": 4187, + "tests": [ + { + "DRAM Power_0": 0.6013590604026846, + "GT Power_0": 0.02638926174496642, + "IA Power_0": 3.2458456375838933, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5549530201342274, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7390936454849505, + "GT Power_0": 0.12129096989966555, + "IA Power_0": 5.775150501672242, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.215645484949831, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7381404682274246, + "GT Power_0": 0.12334782608695657, + "IA Power_0": 5.783926421404683, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.217732441471575, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8035785953177259, + "GT Power_0": 0.2455384615384613, + "IA Power_0": 5.910678929765889, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.520026755852845, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743598662207358, + "GT Power_0": 0.12961204013377922, + "IA Power_0": 5.886311036789305, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.303488294314377, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD180-A9", + "number": 4186, + "tests": [ + { + "DRAM Power_0": 0.6081471571906353, + "GT Power_0": 0.015451505016722406, + "IA Power_0": 3.9454280936454857, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.251675585284281, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7350836120401343, + "GT Power_0": 0.13668896321070229, + "IA Power_0": 7.041033444816051, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.475862876254187, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7363344481605355, + "GT Power_0": 0.13466555183946488, + "IA Power_0": 6.961080267558526, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.3768762541805994, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8018628762541803, + "GT Power_0": 0.2708394648829432, + "IA Power_0": 7.291812709030099, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.984210702341137, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.745933110367893, + "GT Power_0": 0.14267224080267557, + "IA Power_0": 7.589016722408027, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.059705685618738, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4185, + "tests": [ + { + "DRAM Power_0": 0.6033444816053511, + "GT Power_0": 0.025698996655518357, + "IA Power_0": 3.9065451505016737, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.195869565217391, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7535451505016726, + "GT Power_0": 0.10691304347826085, + "IA Power_0": 7.403381270903014, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.807943143812716, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.760247491638796, + "GT Power_0": 0.12635785953177264, + "IA Power_0": 7.07252508361204, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.518799331103681, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8060635451505014, + "GT Power_0": 0.23295986622073556, + "IA Power_0": 7.255117056856189, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.906093645484948, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7422608695652178, + "GT Power_0": 0.11597658862876253, + "IA Power_0": 6.99107357859531, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.431227424749157, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD127-A9", + "number": 4184, + "tests": [ + { + "DRAM Power_0": 0.6069966442953021, + "GT Power_0": 0.030382550335570434, + "IA Power_0": 3.420895973154364, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7399060402684556, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7394782608695663, + "GT Power_0": 0.0981304347826087, + "IA Power_0": 5.671056856187291, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.086515050167224, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7371906354515053, + "GT Power_0": 0.10030100334448158, + "IA Power_0": 5.568906354515049, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.975478260869565, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7971571906354513, + "GT Power_0": 0.21352842809364556, + "IA Power_0": 5.608464882943146, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.164090301003346, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7481170568561872, + "GT Power_0": 0.1061438127090301, + "IA Power_0": 5.512063545150499, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.960692307692311, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4183, + "tests": [ + { + "DRAM Power_0": 0.6019565217391306, + "GT Power_0": 0.016401337792642134, + "IA Power_0": 3.685304347826087, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9664314381270933, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7381571906354516, + "GT Power_0": 0.13930434782608692, + "IA Power_0": 6.673030100334448, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.127591973244149, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7371471571906358, + "GT Power_0": 0.13640133779264219, + "IA Power_0": 6.771244147157191, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.234187290969905, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7970802675585282, + "GT Power_0": 0.27305685618729103, + "IA Power_0": 7.0084448160535135, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.614515050167234, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.748752508361204, + "GT Power_0": 0.14617391304347824, + "IA Power_0": 7.110806020066889, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5838762541806055, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD148-A9", + "number": 4182, + "tests": [ + { + "DRAM Power_0": 0.6034194630872486, + "GT Power_0": 0.036852348993288556, + "IA Power_0": 3.596466442953018, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9189731543624164, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7360702341137132, + "GT Power_0": 0.15412709030100333, + "IA Power_0": 6.085478260869563, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.554143812709037, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7400301003344479, + "GT Power_0": 0.1490468227424749, + "IA Power_0": 5.903254180602007, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.430377926421403, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7901739130434778, + "GT Power_0": 0.32511371237458203, + "IA Power_0": 6.179301003344479, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.827729096989963, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7418963210702345, + "GT Power_0": 0.1614247491638796, + "IA Power_0": 6.2882140468227385, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.757642140468224, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4181, + "tests": [ + { + "DRAM Power_0": 0.5989362416107387, + "GT Power_0": 0.025630872483221434, + "IA Power_0": 3.33060067114094, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6613020134228194, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7385050167224081, + "GT Power_0": 0.09742474916387968, + "IA Power_0": 6.185083612040135, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.586836120401337, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7458093645484956, + "GT Power_0": 0.09552173913043475, + "IA Power_0": 6.003046822742478, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.455575250836121, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7967692307692316, + "GT Power_0": 0.20741471571906375, + "IA Power_0": 6.159277591973245, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.700745819397999, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7455217391304357, + "GT Power_0": 0.10010367892976592, + "IA Power_0": 6.174812709030097, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.587983277591973, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD126-A9", + "number": 4180, + "tests": [ + { + "DRAM Power_0": 0.6023612040133776, + "GT Power_0": 0.03242140468227423, + "IA Power_0": 3.7393745819397974, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.040364548494986, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7391438127090305, + "GT Power_0": 0.11626421404682273, + "IA Power_0": 6.484839464882943, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.905658862876256, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7374548494983283, + "GT Power_0": 0.11576254180602004, + "IA Power_0": 6.423819397993313, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.823227424749166, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.795458193979933, + "GT Power_0": 0.23653511705685606, + "IA Power_0": 6.438030100334448, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.9601204013377895, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.749484949832776, + "GT Power_0": 0.1205484949832776, + "IA Power_0": 6.305742474916392, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.79201337792642, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD127-A9", + "number": 4179, + "tests": [ + { + "DRAM Power_0": 0.6068087248322149, + "GT Power_0": 0.032738255033557, + "IA Power_0": 3.1334328859060423, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4774127516778526, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7473444816053516, + "GT Power_0": 0.0969096989966555, + "IA Power_0": 5.4411739130434755, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.910431438127094, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7370301003344488, + "GT Power_0": 0.09591638795986628, + "IA Power_0": 5.485003344481605, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.867822742474915, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796120401337792, + "GT Power_0": 0.20856521739130443, + "IA Power_0": 5.5088227424749165, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.060327759197323, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7427357859531776, + "GT Power_0": 0.11113712374581941, + "IA Power_0": 5.6653177257525105, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.056046822742472, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD151-A9", + "number": 4178, + "tests": [ + { + "DRAM Power_0": 0.6094113712374584, + "GT Power_0": 0.023525083612040112, + "IA Power_0": 5.040712374581943, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.39696321070234, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387424749163878, + "GT Power_0": 0.11462876254180605, + "IA Power_0": 7.767678929765885, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.226043478260866, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7409030100334453, + "GT Power_0": 0.11655183946488296, + "IA Power_0": 8.077709030100333, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.622842809364546, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7981270903010032, + "GT Power_0": 0.23673578595317724, + "IA Power_0": 8.075367892976592, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.692571906354518, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7403377926421404, + "GT Power_0": 0.12325083612040133, + "IA Power_0": 8.112571906354516, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.601381270903016, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD121-A9", + "number": 4177, + "tests": [ + { + "DRAM Power_0": 0.6027080536912751, + "GT Power_0": 0.03224832214765097, + "IA Power_0": 3.895822147651008, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.234909395973154, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7377725752508362, + "GT Power_0": 0.1363578595317725, + "IA Power_0": 7.034023411371241, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.478438127090299, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7376722408026759, + "GT Power_0": 0.13197658862876252, + "IA Power_0": 7.101240802675589, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.528304347826095, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7981705685618724, + "GT Power_0": 0.2709030100334451, + "IA Power_0": 7.14784949832776, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.766879598662207, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7437859531772579, + "GT Power_0": 0.14055518394648825, + "IA Power_0": 7.367535117056855, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.7963712374581915, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4176, + "tests": [ + { + "DRAM Power_0": 0.607792642140468, + "GT Power_0": 0.03323745819397992, + "IA Power_0": 4.022829431438121, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.37218060200669, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7457859531772575, + "GT Power_0": 0.11558862876254183, + "IA Power_0": 6.920913043478256, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.486551839464884, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7514381270903011, + "GT Power_0": 0.11514715719063544, + "IA Power_0": 6.705247491638797, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.269856187290969, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7974682274247492, + "GT Power_0": 0.2333545150501671, + "IA Power_0": 6.885585284280933, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.455538461538462, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7518494983277589, + "GT Power_0": 0.11900000000000001, + "IA Power_0": 6.865454849498326, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.33557525083612, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4175, + "tests": [ + { + "DRAM Power_0": 0.6025167785234898, + "GT Power_0": 0.03251677852348988, + "IA Power_0": 4.010312080536911, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.338476510067112, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7426287625418061, + "GT Power_0": 0.12241471571906347, + "IA Power_0": 7.324916387959867, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.770494983277594, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7378662207357858, + "GT Power_0": 0.11775585284280943, + "IA Power_0": 7.242110367892975, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.639484949832775, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7983478260869562, + "GT Power_0": 0.23850167224080276, + "IA Power_0": 7.441612040133775, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.996598662207349, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7513043478260871, + "GT Power_0": 0.12491973244147155, + "IA Power_0": 7.18786287625418, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.646739130434775, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD21-B1", + "number": 4174, + "tests": [ + { + "DRAM Power_0": 0.5978489932885905, + "GT Power_0": 0.03182885906040265, + "IA Power_0": 3.4909496644295284, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.9913724832214745, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7406521739130434, + "GT Power_0": 0.13491304347826083, + "IA Power_0": 6.2357224080267555, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.828, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7461270903010037, + "GT Power_0": 0.12412709030100336, + "IA Power_0": 6.156177257525081, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.8531705685618665, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.803859531772575, + "GT Power_0": 0.2522541806020066, + "IA Power_0": 6.442826086956523, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.23458528428094, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451036789297666, + "GT Power_0": 0.13721070234113708, + "IA Power_0": 6.159498327759196, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.76807692307692, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD136-A9", + "number": 4173, + "tests": [ + { + "DRAM Power_0": 0.6008963210702343, + "GT Power_0": 0.026913043478260807, + "IA Power_0": 3.168076923076926, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.486204013377924, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7372909698996655, + "GT Power_0": 0.10935451505016729, + "IA Power_0": 5.619518394648827, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.040615384615383, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7373645484949835, + "GT Power_0": 0.107314381270903, + "IA Power_0": 5.579093645484952, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.003515050167229, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8032040133779264, + "GT Power_0": 0.22004013377926437, + "IA Power_0": 5.853421404682273, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.490193979933106, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7562541806020076, + "GT Power_0": 0.11551839464882946, + "IA Power_0": 5.830929765886285, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.454561872909696, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD132-A9", + "number": 4172, + "tests": [ + { + "DRAM Power_0": 0.6070802675585281, + "GT Power_0": 0.033050167224080225, + "IA Power_0": 3.9110802675585306, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.2443311036789275, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7462006688963213, + "GT Power_0": 0.12178595317725756, + "IA Power_0": 6.879441471571914, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.40321739130435, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7373043478260864, + "GT Power_0": 0.11823411371237458, + "IA Power_0": 6.826712374581943, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.254010033444818, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7981605351170569, + "GT Power_0": 0.23567558528428098, + "IA Power_0": 7.080083612040134, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.633006688963207, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7436454849498331, + "GT Power_0": 0.12444481605351176, + "IA Power_0": 7.006976588628762, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.447849498327758, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD158-A9", + "number": 4171, + "tests": [ + { + "DRAM Power_0": 0.6018187919463087, + "GT Power_0": 0.03151006711409394, + "IA Power_0": 3.9918791946308714, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.304536912751677, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7357491638795999, + "GT Power_0": 0.14761872909699003, + "IA Power_0": 7.08502341137123, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.5448896321070285, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7357993311036787, + "GT Power_0": 0.14554515050167238, + "IA Power_0": 7.156759197324412, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.601040133779266, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8161839464882942, + "GT Power_0": 0.29171906354515076, + "IA Power_0": 7.469959866220737, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.211478260869564, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432675585284284, + "GT Power_0": 0.1569632107023411, + "IA Power_0": 7.39515719063545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.86863545150502, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD157-A9", + "number": 4170, + "tests": [ + { + "DRAM Power_0": 0.5956241610738253, + "GT Power_0": 0.02871140939597314, + "IA Power_0": 3.574895973154363, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8734362416107433, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7477123745819398, + "GT Power_0": 0.12805685618729093, + "IA Power_0": 6.660996655518395, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.156200668896323, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7360702341137125, + "GT Power_0": 0.1253010033444816, + "IA Power_0": 6.7364381270903015, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.127903010033448, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7999096989966561, + "GT Power_0": 0.2550501672240802, + "IA Power_0": 6.99569899665552, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.605856187290968, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7538929765886284, + "GT Power_0": 0.13707692307692318, + "IA Power_0": 6.98740468227425, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.514324414715719, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4169, + "tests": [ + { + "DRAM Power_0": 0.5908724832214761, + "GT Power_0": 0.03386241610738252, + "IA Power_0": 4.464731543624163, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.8063221476510085, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7090735785953177, + "GT Power_0": 0.13578260869565217, + "IA Power_0": 7.311096989966554, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.745585284280933, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7066421404682275, + "GT Power_0": 0.13267558528428103, + "IA Power_0": 7.286668896321069, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.703866220735789, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7764749163879598, + "GT Power_0": 0.2682909698996655, + "IA Power_0": 7.593451505016718, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.267591973244143, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7289096989966553, + "GT Power_0": 0.14066889632107016, + "IA Power_0": 8.033454849498336, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.47778595317726, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD118-A9", + "number": 4168, + "tests": [ + { + "DRAM Power_0": 0.5990033557046976, + "GT Power_0": 0.02625167785234897, + "IA Power_0": 3.284258389261745, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.6308355704697988, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7391505016722412, + "GT Power_0": 0.1122173913043478, + "IA Power_0": 6.090046822742474, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.519986622073578, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7451404682274254, + "GT Power_0": 0.11207357859531769, + "IA Power_0": 6.335943143812709, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.837023411371234, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8761812080536916, + "GT Power_0": 0.2436442953020136, + "IA Power_0": 8.302969798657713, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.023983221476517, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.750053511705686, + "GT Power_0": 0.1165117056856188, + "IA Power_0": 6.350090301003339, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.84467892976589, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4167, + "tests": [ + { + "DRAM Power_0": 0.6051912751677849, + "GT Power_0": 0.029822147651006665, + "IA Power_0": 3.4785805369127516, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8084496644295274, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7382274247491639, + "GT Power_0": 0.09296989966555189, + "IA Power_0": 6.007107023411373, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.4186354515050175, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.788605351170569, + "GT Power_0": 0.08740133779264216, + "IA Power_0": 7.860204013377927, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.283518394648825, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8355551839464882, + "GT Power_0": 0.19857525083612035, + "IA Power_0": 9.345906354515044, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.920511705685625, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7461471571906357, + "GT Power_0": 0.09706354515050167, + "IA Power_0": 5.943872909698993, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.368030100334443, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4166, + "tests": [ + { + "DRAM Power_0": 0.6014515050167228, + "GT Power_0": 0.014521739130434782, + "IA Power_0": 3.4382943143812716, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7497190635451503, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7489264214046825, + "GT Power_0": 0.1288227424749163, + "IA Power_0": 6.250816053511705, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.767829431438126, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7368494983277593, + "GT Power_0": 0.12597993311036787, + "IA Power_0": 6.272327759197321, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.718735785953178, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7965050167224085, + "GT Power_0": 0.2521973244147157, + "IA Power_0": 6.4895083612040105, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.091200668896322, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7590367892976593, + "GT Power_0": 0.13941137123745823, + "IA Power_0": 6.53985618729097, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.194652173913044, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4165, + "tests": [ + { + "DRAM Power_0": 0.6067491638795989, + "GT Power_0": 0.013819397993311026, + "IA Power_0": 4.216311036789298, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.5178494983277595, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7426789297658867, + "GT Power_0": 0.1221003344481606, + "IA Power_0": 7.047010033444816, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.518040133779265, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7386789297658864, + "GT Power_0": 0.12001003344481613, + "IA Power_0": 7.070943143812709, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.496856187290968, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.810906040268456, + "GT Power_0": 0.24282550335570474, + "IA Power_0": 7.637942953020142, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.269738255033552, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7467725752508361, + "GT Power_0": 0.13163879598662204, + "IA Power_0": 7.264695652173909, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.725441471571905, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4164, + "tests": [ + { + "DRAM Power_0": 0.6078691275167784, + "GT Power_0": 0.034016778523489916, + "IA Power_0": 3.3649026845637575, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.7226778523489923, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.740903010033445, + "GT Power_0": 0.11609698996655521, + "IA Power_0": 5.617916387959867, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.057244147157189, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.737448160535117, + "GT Power_0": 0.11171906354515054, + "IA Power_0": 5.541929765886287, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.985230769230768, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7977926421404686, + "GT Power_0": 0.2301237458193979, + "IA Power_0": 5.586100334448156, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.166481605351167, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7421633333333334, + "GT Power_0": 0.11810000000000005, + "IA Power_0": 5.519480000000003, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.942616666666664, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 300 + } + ] + }, + { + "bot": "BUILD163-A9", + "number": 4163, + "tests": [ + { + "DRAM Power_0": 0.608063758389262, + "GT Power_0": 0.02955033557046978, + "IA Power_0": 3.782073825503358, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.120637583892617, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7377257525083614, + "GT Power_0": 0.1340100334448161, + "IA Power_0": 6.241277591973244, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.666498327759196, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7519866220735792, + "GT Power_0": 0.13207692307692304, + "IA Power_0": 6.300909698996652, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.978866220735778, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7971371237458202, + "GT Power_0": 0.2624682274247492, + "IA Power_0": 6.374555183946487, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.966826086956524, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7426153846153851, + "GT Power_0": 0.13702006688963195, + "IA Power_0": 6.364976588628765, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.808040133779261, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD131-A9", + "number": 4162, + "tests": [ + { + "DRAM Power_0": 0.6048154362416106, + "GT Power_0": 0.036201342281879184, + "IA Power_0": 3.6729362416107363, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.9136241610738254, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7511070234113716, + "GT Power_0": 0.1286722408026757, + "IA Power_0": 6.08772240802676, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.5499230769230765, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7491672240802683, + "GT Power_0": 0.12638795986622078, + "IA Power_0": 5.9796923076923045, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.442889632107029, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8053311036789302, + "GT Power_0": 0.2587759197324416, + "IA Power_0": 6.321638795986621, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.84579598662207, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.750715719063546, + "GT Power_0": 0.130428093645485, + "IA Power_0": 6.239899665551841, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.663304347826088, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4161, + "tests": [ + { + "DRAM Power_0": 0.5983110367892978, + "GT Power_0": 0.033257525083612016, + "IA Power_0": 3.1860802675585296, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.493384615384617, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7454515050167224, + "GT Power_0": 0.1475351170568562, + "IA Power_0": 5.969989966555184, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.4906856187290956, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7379096989966559, + "GT Power_0": 0.14533779264214045, + "IA Power_0": 6.074307692307692, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.549143812709026, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7972976588628763, + "GT Power_0": 0.2739230769230772, + "IA Power_0": 6.229311036789295, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.84719732441472, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7466789297658866, + "GT Power_0": 0.15285953177257525, + "IA Power_0": 6.150207357859532, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.624986622073575, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD169-A9", + "number": 4160, + "tests": [ + { + "DRAM Power_0": 0.607578595317726, + "GT Power_0": 0.014772575250836117, + "IA Power_0": 3.770836120401339, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.1139665551839455, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387826086956525, + "GT Power_0": 0.12347157190635454, + "IA Power_0": 6.528949832775921, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.959678929765885, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7404849498327758, + "GT Power_0": 0.12182943143812704, + "IA Power_0": 6.573839464882943, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0028494983277545, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7981237458193976, + "GT Power_0": 0.24741471571906337, + "IA Power_0": 6.6912508361204, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.279719063545146, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7516387959866222, + "GT Power_0": 0.1356153846153846, + "IA Power_0": 6.460575250836119, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.948595317725752, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4159, + "tests": [ + { + "DRAM Power_0": 0.6043892617449668, + "GT Power_0": 0.0320167785234899, + "IA Power_0": 3.4837583892617427, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.829389261744965, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7398127090301009, + "GT Power_0": 0.09856521739130442, + "IA Power_0": 6.1160301003344495, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.526889632107024, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7388428093645486, + "GT Power_0": 0.09756856187290969, + "IA Power_0": 6.301297658862878, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.689541806020064, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8030503355704696, + "GT Power_0": 0.2113020134228188, + "IA Power_0": 6.667597315436245, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.218661073825504, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7457959866220734, + "GT Power_0": 0.10266889632107028, + "IA Power_0": 6.5009364548495, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.933695652173912, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4158, + "tests": [ + { + "DRAM Power_0": 0.6036140939597312, + "GT Power_0": 0.03680536912751673, + "IA Power_0": 3.9380570469798664, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.248523489932888, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7501739130434779, + "GT Power_0": 0.11741137123745828, + "IA Power_0": 7.222448160535116, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.778846153846155, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7448327759197321, + "GT Power_0": 0.1171638795986622, + "IA Power_0": 7.1491839464883, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.658173913043475, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796782608695653, + "GT Power_0": 0.24396989966555185, + "IA Power_0": 7.298672240802672, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.864662207357855, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.743030100334448, + "GT Power_0": 0.1257859531772577, + "IA Power_0": 7.286371237458189, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.711494983277585, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD173-A9", + "number": 4157, + "tests": [ + { + "DRAM Power_0": 0.5965150501672243, + "GT Power_0": 0.03126755852842806, + "IA Power_0": 3.8899264214046827, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.186224080267558, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.738257525083612, + "GT Power_0": 0.1393578595317725, + "IA Power_0": 7.1206287625418065, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.544280936454848, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7383913043478266, + "GT Power_0": 0.13748494983277595, + "IA Power_0": 6.951655518394644, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.399183946488303, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7951705685618727, + "GT Power_0": 0.2844816053511705, + "IA Power_0": 7.144190635451503, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.720187290969901, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7555317725752507, + "GT Power_0": 0.1428628762541806, + "IA Power_0": 7.12149163879599, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.7852976588628815, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4156, + "tests": [ + { + "DRAM Power_0": 0.6052608695652179, + "GT Power_0": 0.03393979933110364, + "IA Power_0": 3.9798260869565203, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.286397993311037, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7561839464882949, + "GT Power_0": 0.12793979933110358, + "IA Power_0": 6.949725752508362, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.588608695652171, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7398160535117065, + "GT Power_0": 0.1250301003344482, + "IA Power_0": 6.895739130434779, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.328598662207359, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7998087248322149, + "GT Power_0": 0.24172483221476512, + "IA Power_0": 7.228469798657716, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.799224832214762, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7433511705685616, + "GT Power_0": 0.13003678929765888, + "IA Power_0": 7.004083612040134, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.44230434782609, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4155, + "tests": [ + { + "DRAM Power_0": 0.6020535117056853, + "GT Power_0": 0.034157190635451494, + "IA Power_0": 3.509341137123744, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.8192575250836107, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7494214046822746, + "GT Power_0": 0.1234682274247492, + "IA Power_0": 6.151247491638797, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.7043110367892975, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.738548494983278, + "GT Power_0": 0.12281605351170567, + "IA Power_0": 6.025324414715724, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.45179933110368, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8076187290969903, + "GT Power_0": 0.2428227424749164, + "IA Power_0": 6.142377926421409, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.802438127090303, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7532608695652175, + "GT Power_0": 0.13670568561872914, + "IA Power_0": 5.973428093645483, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.453177257525081, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4154, + "tests": [ + { + "DRAM Power_0": 0.608607382550335, + "GT Power_0": 0.03390939597315434, + "IA Power_0": 3.493161073825505, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.854241610738256, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7450735785953181, + "GT Power_0": 0.14490301003344488, + "IA Power_0": 6.173515050167227, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.626755852842805, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7434046822742474, + "GT Power_0": 0.14444481605351178, + "IA Power_0": 5.959013377926427, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.4612775919732375, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7970401337792642, + "GT Power_0": 0.28343812709030103, + "IA Power_0": 5.930906354515044, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.523147157190636, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7528595317725753, + "GT Power_0": 0.16015719063545156, + "IA Power_0": 5.938083612040132, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.51407023411371, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4153, + "tests": [ + { + "DRAM Power_0": 0.6028260869565215, + "GT Power_0": 0.0324849498327759, + "IA Power_0": 4.099010033444818, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.396872909698995, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.74275585284281, + "GT Power_0": 0.12018394648829428, + "IA Power_0": 7.280033444816054, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.670816053511709, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7459498327759203, + "GT Power_0": 0.11296321070234117, + "IA Power_0": 6.97842474916388, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.458618729096993, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7988795986622078, + "GT Power_0": 0.23728428093645482, + "IA Power_0": 7.000939799331108, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.565033444816054, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7440066889632111, + "GT Power_0": 0.12057859531772565, + "IA Power_0": 6.922896321070232, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.346083612040136, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD155-A9", + "number": 4152, + "tests": [ + { + "DRAM Power_0": 0.6031711409395976, + "GT Power_0": 0.03657382550335568, + "IA Power_0": 3.696661073825506, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.009426174496645, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7497090301003345, + "GT Power_0": 0.13967224080267565, + "IA Power_0": 6.712434782608696, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.239916387959871, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7394581939799335, + "GT Power_0": 0.13489297658862887, + "IA Power_0": 6.672909698996657, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.110056856187286, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.804578595317726, + "GT Power_0": 0.2579397993311036, + "IA Power_0": 6.8766856187291046, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.50865217391305, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7444280936454857, + "GT Power_0": 0.14787625418060193, + "IA Power_0": 6.761662207357861, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2383210702341145, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4151, + "tests": [ + { + "DRAM Power_0": 0.6063020134228188, + "GT Power_0": 0.038429530201342266, + "IA Power_0": 3.99168791946309, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.344661073825503, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7385117056856195, + "GT Power_0": 0.14880602006688964, + "IA Power_0": 6.84944481605351, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.307254180602012, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.736491638795987, + "GT Power_0": 0.14959197324414708, + "IA Power_0": 6.734341137123753, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1846856187290955, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8040702341137124, + "GT Power_0": 0.2945819397993315, + "IA Power_0": 7.011538461538464, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.659073578595321, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.814442953020135, + "GT Power_0": 0.15777852348993285, + "IA Power_0": 9.337614093959733, + "Package Power Limit_0": 65.0, + "Processor Power_0": 9.814442953020137, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 298 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4150, + "tests": [ + { + "DRAM Power_0": 0.5967684563758392, + "GT Power_0": 0.029181208053691256, + "IA Power_0": 3.776305369127515, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.059617449664428, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7473444816053522, + "GT Power_0": 0.14029765886287623, + "IA Power_0": 7.172344481605351, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.655143812709031, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7378394648829435, + "GT Power_0": 0.1408093645484949, + "IA Power_0": 7.358702341137124, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.768107023411378, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8090434782608693, + "GT Power_0": 0.2589933110367893, + "IA Power_0": 7.541525083612039, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.289214046822744, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7440635451505015, + "GT Power_0": 0.14708026755852838, + "IA Power_0": 7.456769230769235, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.909608695652172, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4149, + "tests": [ + { + "DRAM Power_0": 0.6116187290969901, + "GT Power_0": 0.013983277591973238, + "IA Power_0": 3.2883779264214037, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.648130434782609, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7376354515050169, + "GT Power_0": 0.09747157190635451, + "IA Power_0": 5.619605351170563, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.039762541806022, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7381304347826086, + "GT Power_0": 0.09571237458193983, + "IA Power_0": 5.724929765886291, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.127468227424752, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7939698996655523, + "GT Power_0": 0.2047558528428093, + "IA Power_0": 5.868170568561873, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.402608695652178, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.750795986622074, + "GT Power_0": 0.09905351170568556, + "IA Power_0": 5.82977926421405, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.312538461538463, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4148, + "tests": [ + { + "DRAM Power_0": 0.6068154362416109, + "GT Power_0": 0.029869127516778518, + "IA Power_0": 3.714664429530202, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.049667785234896, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7464314381270902, + "GT Power_0": 0.13162876254180594, + "IA Power_0": 6.836163879598661, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.277033444816054, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.738257525083613, + "GT Power_0": 0.13051170568561868, + "IA Power_0": 6.634976588628763, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.0736421404682295, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7961103678929756, + "GT Power_0": 0.25495317725752503, + "IA Power_0": 6.755404682274247, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.338956521739135, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7454949832775926, + "GT Power_0": 0.13860200668896316, + "IA Power_0": 6.724193979933107, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.187397993311039, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD166-A9", + "number": 4147, + "tests": [ + { + "DRAM Power_0": 0.62115100671141, + "GT Power_0": 0.03495973154362412, + "IA Power_0": 5.827922818791945, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.211996644295298, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7360802675585287, + "GT Power_0": 0.1380066889632108, + "IA Power_0": 7.594953177257528, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.102799331103684, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.6921638795986619, + "GT Power_0": 0.13262207357859523, + "IA Power_0": 12.642826086956527, + "Package Power Limit_0": 65.0, + "Processor Power_0": 13.077327759197326, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7947224080267559, + "GT Power_0": 0.27714715719063576, + "IA Power_0": 8.033862876254183, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.693525083612036, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.737234113712375, + "GT Power_0": 0.13876923076923078, + "IA Power_0": 7.92179264214047, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.45045150501672, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4146, + "tests": [ + { + "DRAM Power_0": 0.6106287625418058, + "GT Power_0": 0.030491638795986584, + "IA Power_0": 3.42128093645485, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.787859531772574, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7384381270903009, + "GT Power_0": 0.14818729096989958, + "IA Power_0": 5.843973244147155, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.323508361204009, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7415418060200671, + "GT Power_0": 0.14415050167224078, + "IA Power_0": 5.94754180602007, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.429518394648833, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7985872483221476, + "GT Power_0": 0.2720201342281882, + "IA Power_0": 6.065557046979865, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.6688422818792, + "name": "Video_720_MP4_Underlay", + "samples": 298 + }, + { + "DRAM Power_0": 0.7435685618729097, + "GT Power_0": 0.15368896321070238, + "IA Power_0": 6.037488294314378, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.496080267558532, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD140-A9", + "number": 4145, + "tests": [ + { + "DRAM Power_0": 0.6061404682274251, + "GT Power_0": 0.030548494983277552, + "IA Power_0": 3.321451505016724, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.68712040133779, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7410570469798659, + "GT Power_0": 0.12761744966442962, + "IA Power_0": 6.225046979865773, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.66979194630873, + "name": "Video_720_MP4", + "samples": 298 + }, + { + "DRAM Power_0": 0.7377792642140467, + "GT Power_0": 0.12946488294314382, + "IA Power_0": 6.009949832775922, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.470819397993311, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8003545150501674, + "GT Power_0": 0.2474581939799331, + "IA Power_0": 6.273745819397995, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.819364548494982, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7445451505016727, + "GT Power_0": 0.13401337792642137, + "IA Power_0": 6.122193979933113, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.585595317725749, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD121-A9", + "number": 4144, + "tests": [ + { + "DRAM Power_0": 0.6065805369127516, + "GT Power_0": 0.03587583892617446, + "IA Power_0": 4.088889261744967, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.458986577181208, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7407525083612043, + "GT Power_0": 0.1400234113712374, + "IA Power_0": 7.234468227424748, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.672367892976583, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7387324414715718, + "GT Power_0": 0.13726086956521752, + "IA Power_0": 7.112715719063542, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.563140468227425, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7999096989966551, + "GT Power_0": 0.27825083612040147, + "IA Power_0": 7.379698996655522, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.992120401337793, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7452474916387958, + "GT Power_0": 0.14519063545150507, + "IA Power_0": 7.028314381270899, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.47834448160535, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4143, + "tests": [ + { + "DRAM Power_0": 0.5968456375838924, + "GT Power_0": 0.02956040268456373, + "IA Power_0": 3.5951375838926176, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.892557046979867, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7392742474916386, + "GT Power_0": 0.15810367892976576, + "IA Power_0": 6.660882943143811, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.133538461538464, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7377424749163882, + "GT Power_0": 0.15356187290969894, + "IA Power_0": 6.596528428093648, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.068080267558525, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7949665551839463, + "GT Power_0": 0.293836120401338, + "IA Power_0": 6.884588628762545, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.498735785953178, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7420501672240803, + "GT Power_0": 0.1628461538461538, + "IA Power_0": 6.743672240802677, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.2223210702341145, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4142, + "tests": [ + { + "DRAM Power_0": 0.5823993288590604, + "GT Power_0": 0.03453355704697981, + "IA Power_0": 3.423442953020137, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.753077181208052, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7186622073578594, + "GT Power_0": 0.13939130434782612, + "IA Power_0": 6.380839464882943, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.830113712374581, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7236488294314378, + "GT Power_0": 0.13855518394648828, + "IA Power_0": 6.368508361204014, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.88389966555184, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.781254180602006, + "GT Power_0": 0.271377926421405, + "IA Power_0": 6.601284280936457, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.196200668896323, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7212608695652173, + "GT Power_0": 0.14772909698996645, + "IA Power_0": 6.489806020066891, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.929782608695652, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD160-A9", + "number": 4141, + "tests": [ + { + "DRAM Power_0": 0.5777658862876248, + "GT Power_0": 0.034381270903009985, + "IA Power_0": 2.8099431438127103, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.112267558528428, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7195217391304355, + "GT Power_0": 0.13108695652173907, + "IA Power_0": 5.38424080267559, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.836545150501672, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.717675585284281, + "GT Power_0": 0.13060869565217395, + "IA Power_0": 5.367839464882944, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.805073578595313, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7801973244147156, + "GT Power_0": 0.24702006688963218, + "IA Power_0": 5.547267558528429, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.126555183946486, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7220602006688962, + "GT Power_0": 0.13950167224080268, + "IA Power_0": 5.294411371237461, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.746889632107027, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD121-A9", + "number": 4140, + "tests": [ + { + "DRAM Power_0": 0.6128791946308726, + "GT Power_0": 0.03797651006711408, + "IA Power_0": 4.772120805369129, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.106862416107382, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7501003344481606, + "GT Power_0": 0.1340066889632106, + "IA Power_0": 7.294976588628765, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.814856187290967, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7464013377926426, + "GT Power_0": 0.13212040133779268, + "IA Power_0": 7.058832775919731, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.596755852842809, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7990100334448159, + "GT Power_0": 0.2690668896321074, + "IA Power_0": 7.3101672240802715, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.860769230769225, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7521103678929769, + "GT Power_0": 0.1381237458193981, + "IA Power_0": 7.2385618729097, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.771745819397991, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4139, + "tests": [ + { + "DRAM Power_0": 0.6058428093645485, + "GT Power_0": 0.0300602006688963, + "IA Power_0": 3.1675250836120408, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.5360769230769233, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7376688963210707, + "GT Power_0": 0.11633444816053519, + "IA Power_0": 5.577735785953172, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.019103678929765, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.737936454849499, + "GT Power_0": 0.11492307692307695, + "IA Power_0": 5.533347826086954, + "Package Power Limit_0": 65.0, + "Processor Power_0": 5.970441471571905, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7974347826086958, + "GT Power_0": 0.23210033444816042, + "IA Power_0": 5.684802675585284, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.26122742474916, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7527123745819397, + "GT Power_0": 0.11727759197324414, + "IA Power_0": 5.723785953177254, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.219397993311038, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4138, + "tests": [ + { + "DRAM Power_0": 0.6014395973154361, + "GT Power_0": 0.03355704697986575, + "IA Power_0": 3.7081677852348998, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.0135973154362405, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7367558528428096, + "GT Power_0": 0.15010033444816062, + "IA Power_0": 6.61527424749163, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.102698996655514, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7377892976588631, + "GT Power_0": 0.14779598662207355, + "IA Power_0": 6.632926421404678, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.084729096989966, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8027257525083619, + "GT Power_0": 0.28350501672240785, + "IA Power_0": 6.770317725752503, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.467344481605349, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7432775919732444, + "GT Power_0": 0.154695652173913, + "IA Power_0": 6.954632107023412, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.4061906354515035, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD131-A9", + "number": 4137, + "tests": [ + { + "DRAM Power_0": 0.604304347826087, + "GT Power_0": 0.029411371237458152, + "IA Power_0": 3.7421872909698988, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.0046254180602014, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7425050167224083, + "GT Power_0": 0.1236086956521739, + "IA Power_0": 6.1917324414715695, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.57902341137124, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7453913043478263, + "GT Power_0": 0.11870234113712372, + "IA Power_0": 6.12904347826087, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.510107023411365, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8117826086956521, + "GT Power_0": 0.24646822742474903, + "IA Power_0": 6.1860100334448145, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.755879598662208, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7487625418060203, + "GT Power_0": 0.12799999999999992, + "IA Power_0": 6.1550367892976565, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.527926421404685, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD142-A9", + "number": 4136, + "tests": [ + { + "DRAM Power_0": 0.6054999999999993, + "GT Power_0": 0.03370469798657714, + "IA Power_0": 3.7793355704697986, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.149127516778523, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7470903010033451, + "GT Power_0": 0.1390735785953178, + "IA Power_0": 6.624137123745819, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.154652173913045, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.741341137123746, + "GT Power_0": 0.13784280936454857, + "IA Power_0": 6.630859531772577, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.1244247491638815, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8026454849498329, + "GT Power_0": 0.27426421404682283, + "IA Power_0": 6.6378461538461515, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.264163879598653, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7401003344481616, + "GT Power_0": 0.14328428093645496, + "IA Power_0": 6.667892976588629, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.120591973244148, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4135, + "tests": [ + { + "DRAM Power_0": 0.6051174496644294, + "GT Power_0": 0.03285234899328856, + "IA Power_0": 3.7933557046979844, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.131251677852351, + "name": "Basic", + "samples": 298 + }, + { + "DRAM Power_0": 0.7402341137123747, + "GT Power_0": 0.14055518394648844, + "IA Power_0": 7.034220735785952, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.468257525083618, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7372943143812712, + "GT Power_0": 0.14383612040133778, + "IA Power_0": 7.128167224080267, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.568836120401341, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.8064347826086955, + "GT Power_0": 0.2597023411371238, + "IA Power_0": 7.307581939799332, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.019046822742474, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7429096989966566, + "GT Power_0": 0.1468628762541805, + "IA Power_0": 7.289280936454854, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.725702341137124, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD173-A9", + "number": 4134, + "tests": [ + { + "DRAM Power_0": 0.6042173913043474, + "GT Power_0": 0.03345150501672236, + "IA Power_0": 3.7865284280936455, + "Package Power Limit_0": 65.0, + "Processor Power_0": 4.107782608695651, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7448829431438132, + "GT Power_0": 0.1362274247491639, + "IA Power_0": 6.927150501672245, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.435739130434785, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7390501672240801, + "GT Power_0": 0.13594314381270906, + "IA Power_0": 7.068411371237462, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.524066889632108, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.7966655518394646, + "GT Power_0": 0.265444816053512, + "IA Power_0": 7.185521739130432, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.781127090301012, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.746026755852843, + "GT Power_0": 0.1405083612040133, + "IA Power_0": 7.24333444816054, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.6762474916388, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4133, + "tests": [ + { + "DRAM Power_0": 0.5758628762541806, + "GT Power_0": 0.03318729096989964, + "IA Power_0": 2.9963411371237467, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.2960501672240796, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.7164916387959869, + "GT Power_0": 0.11933444816053498, + "IA Power_0": 6.361234113712374, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.77804347826087, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.7254581939799333, + "GT Power_0": 0.12377926421404674, + "IA Power_0": 6.312989966555184, + "Package Power Limit_0": 65.0, + "Processor Power_0": 6.829581939799331, + "name": "Video_720_MP4_Fullscreen", + "samples": 299 + }, + { + "DRAM Power_0": 0.796515050167224, + "GT Power_0": 0.26046822742474945, + "IA Power_0": 6.733187290969901, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.37816387959866, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7253478260869569, + "GT Power_0": 0.12507692307692309, + "IA Power_0": 6.642153846153843, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.086762541806019, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4132, + "tests": [ + { + "DRAM Power_0": 0.5682943143812711, + "GT Power_0": 0.010645484949832772, + "IA Power_0": 3.2202742474916404, + "Package Power Limit_0": 65.0, + "Processor Power_0": 3.4879665551839505, + "name": "Basic", + "samples": 299 + }, + { + "DRAM Power_0": 0.722377926421405, + "GT Power_0": 0.1407023411371237, + "IA Power_0": 6.864715719063549, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.309354515050171, + "name": "Video_720_MP4", + "samples": 299 + }, + { + "DRAM Power_0": 0.757100671140939, + "GT Power_0": 0.1405469798657718, + "IA Power_0": 8.247070469798663, + "Package Power Limit_0": 65.0, + "Processor Power_0": 8.660926174496637, + "name": "Video_720_MP4_Fullscreen", + "samples": 298 + }, + { + "DRAM Power_0": 0.788849498327759, + "GT Power_0": 0.27827759197324425, + "IA Power_0": 6.862297658862874, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.478772575250836, + "name": "Video_720_MP4_Underlay", + "samples": 299 + }, + { + "DRAM Power_0": 0.7234682274247491, + "GT Power_0": 0.1444816053511707, + "IA Power_0": 6.806297658862874, + "Package Power Limit_0": 65.0, + "Processor Power_0": 7.247989966555185, + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": 299 + } + ] + } + ] +} \ No newline at end of file
diff --git a/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4370_4425_repeat3.json b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4370_4425_repeat3.json new file mode 100644 index 0000000..89dcece --- /dev/null +++ b/content/test/gpu/power_measurement_results/win10_intel_hd_630/build_4370_4425_repeat3.json
@@ -0,0 +1,9409 @@ +{ + "builds": [ + { + "bot": "BUILD151-A9", + "number": 4425, + "tests": [ + { + "DRAM Power_0": [ + 0.6059533333333331, + 0.6119599999999996, + 0.5979666666666662 + ], + "GT Power_0": [ + 0.030166666666666658, + 0.013706666666666667, + 0.014026666666666665 + ], + "IA Power_0": [ + 4.046633333333333, + 3.670619999999999, + 4.006120000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.3478266666666645, + 4.099286666666666, + 4.245900000000002 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7510666666666663, + 0.75387417218543, + 0.7398466666666664 + ], + "GT Power_0": [ + 0.10328666666666667, + 0.10989403973509934, + 0.10628666666666671 + ], + "IA Power_0": [ + 6.323999999999999, + 6.417589403973515, + 7.15069333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.825793333333332, + 6.942649006622514, + 7.510126666666666 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7343666666666667, + 0.7336688741721848, + 0.7349266666666665 + ], + "GT Power_0": [ + 0.10666, + 0.10443708609271532, + 0.10371333333333337 + ], + "IA Power_0": [ + 6.482886666666668, + 6.4280662251655665, + 6.540373333333336 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.829733333333333, + 6.810251655629134, + 6.909833333333332 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7925000000000003, + 0.8098133333333335, + 0.8156000000000002 + ], + "GT Power_0": [ + 0.22833333333333333, + 0.23080666666666672, + 0.2482666666666667 + ], + "IA Power_0": [ + 6.72464, + 6.895526666666668, + 6.9380266666666675 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.24249333333333, + 7.540426666666666, + 7.598773333333334 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7379072847682115, + 0.75214, + 0.7373199999999995 + ], + "GT Power_0": [ + 0.11159602649006627, + 0.11059333333333335, + 0.10814000000000004 + ], + "IA Power_0": [ + 6.505145695364238, + 6.810873333333331, + 6.541193333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.920761589403971, + 7.24751333333333, + 6.9189533333333335 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD130-A9", + "number": 4424, + "tests": [ + { + "DRAM Power_0": [ + 0.6067350993377479, + 0.5971125827814567, + 0.5965033112582779 + ], + "GT Power_0": [ + 0.04444370860927149, + 0.014993377483443707, + 0.01480794701986755 + ], + "IA Power_0": [ + 4.208026490066228, + 4.3103046357615895, + 3.953423841059605 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.516668874172185, + 4.553059602649007, + 4.209145695364241 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7362185430463574, + 0.7422933333333329, + 0.7328933333333327 + ], + "GT Power_0": [ + 0.1237549668874172, + 0.12464666666666668, + 0.12045333333333337 + ], + "IA Power_0": [ + 7.2400927152317855, + 7.522206666666666, + 7.190420000000004 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.594629139072848, + 8.012239999999998, + 7.548286666666666 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7455266666666662, + 0.7334900662251655, + 0.7371523178807944 + ], + "GT Power_0": [ + 0.11943333333333325, + 0.11930463576158934, + 0.12460927152317877 + ], + "IA Power_0": [ + 7.174340000000001, + 7.0238344370860935, + 7.323701986754968 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.600033333333334, + 7.440649006622516, + 7.69761589403973 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7934066666666673, + 0.7951400000000005, + 0.7919266666666673 + ], + "GT Power_0": [ + 0.25088000000000005, + 0.2503400000000001, + 0.2506600000000001 + ], + "IA Power_0": [ + 7.716326666666663, + 7.564366666666668, + 7.44269333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.284413333333333, + 8.044826666666669, + 7.974746666666666 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7580728476821191, + 0.7402800000000002, + 0.7409133333333329 + ], + "GT Power_0": [ + 0.13318543046357623, + 0.13277999999999995, + 0.12999333333333332 + ], + "IA Power_0": [ + 7.666490066225169, + 7.244446666666668, + 7.262160000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.131649006622517, + 7.621073333333337, + 7.632639999999999 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD178-A9", + "number": 4423, + "tests": [ + { + "DRAM Power_0": [ + 0.6158199999999999, + 0.597278145695364, + 0.5985761589403974 + ], + "GT Power_0": [ + 0.034806666666666666, + 0.012576158940397354, + 0.012576158940397347 + ], + "IA Power_0": [ + 4.454206666666667, + 3.476245033112583, + 3.5754304635761605 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.733373333333335, + 3.7034105960264903, + 3.814609271523177 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7427152317880792, + 0.7388666666666663, + 0.7349199999999996 + ], + "GT Power_0": [ + 0.1060331125827815, + 0.08950000000000001, + 0.0853666666666667 + ], + "IA Power_0": [ + 7.073953642384108, + 6.657339999999994, + 6.205206666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.362192052980137, + 7.0330533333333305, + 6.550953333333336 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.736246666666666, + 0.7343377483443708, + 0.7520199999999995 + ], + "GT Power_0": [ + 0.08229999999999998, + 0.08551655629139071, + 0.08782000000000002 + ], + "IA Power_0": [ + 6.145893333333334, + 6.476178807947023, + 6.135320000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.4719333333333315, + 6.7825695364238445, + 6.705620000000002 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7908344370860931, + 0.790446666666667, + 0.8362133333333331 + ], + "GT Power_0": [ + 0.19705960264900665, + 0.19657999999999998, + 0.2001133333333333 + ], + "IA Power_0": [ + 6.442271523178807, + 6.775586666666666, + 6.469086666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.9129403973509955, + 7.226713333333327, + 7.371266666666663 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.738291390728477, + 0.7556556291390721, + 0.74028476821192 + ], + "GT Power_0": [ + 0.09060927152317881, + 0.09175496688741724, + 0.09056291390728476 + ], + "IA Power_0": [ + 6.2451059602649, + 6.202291390728476, + 6.2379735099337745 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.569072847682122, + 6.687695364238411, + 6.581304635761589 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4422, + "tests": [ + { + "DRAM Power_0": [ + 0.5957933333333331, + 0.5950200000000003, + 0.6162266666666665 + ], + "GT Power_0": [ + 0.014159999999999997, + 0.014560000000000002, + 0.013473333333333332 + ], + "IA Power_0": [ + 3.8121933333333335, + 3.9778800000000025, + 3.928893333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.042806666666666, + 4.182359999999998, + 4.253353333333334 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7329466666666665, + 0.6401523178807946, + 0.7438266666666666 + ], + "GT Power_0": [ + 0.11140666666666671, + 0.43235099337748334, + 0.12324 + ], + "IA Power_0": [ + 6.672053333333336, + 7.667490066225167, + 6.780833333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.037293333333333, + 8.30082119205298, + 7.255060000000003 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7319266666666667, + 0.7349533333333333, + 0.7346158940397348 + ], + "GT Power_0": [ + 0.11139333333333337, + 0.11013333333333333, + 0.11383443708609278 + ], + "IA Power_0": [ + 6.742379999999998, + 7.456566666666666, + 6.844304635761589 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.105173333333334, + 7.7957, + 7.249390728476819 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.789266666666667, + 0.9219666666666672, + 0.7973000000000002 + ], + "GT Power_0": [ + 0.2441333333333333, + 0.24647999999999995, + 0.26826666666666665 + ], + "IA Power_0": [ + 7.093559999999999, + 11.755666666666668, + 7.157880000000003 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.582799999999999, + 12.395146666666662, + 7.712766666666666 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7364999999999993, + 0.73669536423841, + 0.7364999999999997 + ], + "GT Power_0": [ + 0.11922000000000002, + 0.11968211920529806, + 0.11699333333333341 + ], + "IA Power_0": [ + 7.174806666666668, + 6.950198675496689, + 6.890833333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.543599999999998, + 7.289900662251655, + 7.270306666666666 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD120-A9", + "number": 4421, + "tests": [ + { + "DRAM Power_0": [ + 0.5981266666666661, + 0.5983533333333327, + 0.6125430463576156 + ], + "GT Power_0": [ + 0.015559999999999994, + 0.015906666666666666, + 0.015450331125827813 + ], + "IA Power_0": [ + 3.587233333333334, + 3.6513600000000004, + 3.6445165562913915 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.853993333333334, + 3.889040000000001, + 3.932317880794705 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7402533333333325, + 0.7399599999999997, + 0.7381266666666665 + ], + "GT Power_0": [ + 0.12650666666666666, + 0.1277666666666667, + 0.1238733333333334 + ], + "IA Power_0": [ + 6.716820000000002, + 6.8600666666666665, + 6.442519999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.056320000000004, + 7.2339333333333355, + 6.835193333333332 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7330794701986751, + 0.7332866666666663, + 0.7352799999999995 + ], + "GT Power_0": [ + 0.12704635761589406, + 0.12663333333333324, + 0.12528000000000003 + ], + "IA Power_0": [ + 6.640026490066226, + 6.448166666666667, + 6.355926666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.028973509933777, + 6.779946666666666, + 6.7160133333333345 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7921200000000006, + 0.7913400000000005, + 0.8128666666666671 + ], + "GT Power_0": [ + 0.2620866666666669, + 0.2650266666666667, + 0.26688000000000006 + ], + "IA Power_0": [ + 6.592533333333335, + 6.567246666666664, + 6.848706666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.16968666666667, + 7.109586666666662, + 7.717406666666669 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7387333333333327, + 0.7395866666666667, + 0.7400794701986754 + ], + "GT Power_0": [ + 0.12989333333333333, + 0.1302666666666667, + 0.13745033112582786 + ], + "IA Power_0": [ + 6.473879999999998, + 6.502726666666667, + 6.765463576158943 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.861886666666669, + 6.8662399999999995, + 7.1263642384105985 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD137-A9", + "number": 4420, + "tests": [ + { + "DRAM Power_0": [ + 0.6053333333333331, + 0.5990399999999996, + 0.6138940397350988 + ], + "GT Power_0": [ + 0.043566666666666656, + 0.014853333333333338, + 0.014980132450331127 + ], + "IA Power_0": [ + 4.218273333333333, + 4.4121466666666675, + 4.139715231788079 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.56486, + 4.66852, + 4.4790198675496695 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7339933333333335, + 0.7444533333333329, + 0.735553333333333 + ], + "GT Power_0": [ + 0.10984666666666675, + 0.11736000000000006, + 0.11206666666666668 + ], + "IA Power_0": [ + 7.297113333333334, + 7.7067999999999985, + 7.545793333333338 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.640046666666667, + 8.157359999999995, + 7.8797666666666695 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.752733333333333, + 0.7614238410596028, + 0.7350866666666661 + ], + "GT Power_0": [ + 0.10666000000000002, + 0.12180794701986761, + 0.11097333333333331 + ], + "IA Power_0": [ + 8.131313333333337, + 7.479264900662254, + 7.416486666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.411086666666659, + 8.333609271523178, + 7.720726666666669 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7899866666666674, + 0.8018741721854311, + 0.80412 + ], + "GT Power_0": [ + 0.2400266666666666, + 0.2406953642384106, + 0.23836666666666667 + ], + "IA Power_0": [ + 8.084533333333333, + 7.8474238410596024, + 7.779806666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.541406666666667, + 8.375596026490063, + 8.49282 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7532251655629136, + 0.7389466666666664, + 0.7747933333333333 + ], + "GT Power_0": [ + 0.11725165562913906, + 0.11680000000000007, + 0.11866000000000002 + ], + "IA Power_0": [ + 7.736953642384109, + 7.444726666666664, + 7.454220000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.206099337748343, + 7.804613333333333, + 8.16587333333333 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD165-A9", + "number": 4419, + "tests": [ + { + "DRAM Power_0": [ + 0.6010133333333333, + 0.6037733333333334, + 0.5997399999999999 + ], + "GT Power_0": [ + 0.03513333333333331, + 0.014999999999999998, + 0.016019999999999993 + ], + "IA Power_0": [ + 4.14396, + 4.386020000000001, + 4.02612 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.397140000000002, + 4.634326666666668, + 4.236926666666668 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7349066666666667, + 0.7372266666666667, + 0.7458333333333328 + ], + "GT Power_0": [ + 0.1085733333333334, + 0.11249333333333335, + 0.10848000000000006 + ], + "IA Power_0": [ + 6.958026666666666, + 6.910106666666664, + 7.040653333333336 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.34053333333333, + 7.286566666666665, + 7.434019999999998 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7568799999999998, + 0.7604799999999995, + 0.7541466666666661 + ], + "GT Power_0": [ + 0.10831999999999999, + 0.11222666666666671, + 0.11154000000000008 + ], + "IA Power_0": [ + 6.945800000000002, + 7.032026666666664, + 6.932726666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.610286666666667, + 7.586319999999999, + 7.412646666666666 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7926225165562917, + 0.802393333333334, + 0.8003533333333334 + ], + "GT Power_0": [ + 0.25009933774834436, + 0.25118000000000007, + 0.2533933333333333 + ], + "IA Power_0": [ + 7.671847682119204, + 8.112799999999995, + 7.319626666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.212006622516556, + 8.615933333333338, + 7.839066666666665 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7409133333333332, + 0.7555533333333335, + 0.7425866666666663 + ], + "GT Power_0": [ + 0.11748666666666667, + 0.11948, + 0.11909333333333336 + ], + "IA Power_0": [ + 7.443379999999998, + 8.242366666666669, + 7.019599999999997 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.84332666666667, + 8.59826, + 7.367413333333334 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD138-A9", + "number": 4418, + "tests": [ + { + "DRAM Power_0": [ + 0.6028533333333328, + 0.6151324503311256, + 0.5970728476821192 + ], + "GT Power_0": [ + 0.044273333333333297, + 0.014569536423841055, + 0.015344370860927154 + ], + "IA Power_0": [ + 3.048233333333334, + 3.163072847682119, + 3.039172185430463 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.3550133333333334, + 3.47594701986755, + 3.2910794701986776 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7355066666666664, + 0.7452600000000001, + 0.734953333333333 + ], + "GT Power_0": [ + 0.10445333333333337, + 0.10784666666666666, + 0.1045066666666667 + ], + "IA Power_0": [ + 5.485160000000002, + 5.458333333333331, + 5.323106666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.821433333333332, + 5.859760000000002, + 5.687626666666668 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7482847682119201, + 0.7332847682119203, + 0.742066666666666 + ], + "GT Power_0": [ + 0.10661589403973512, + 0.10498013245033111, + 0.10424666666666667 + ], + "IA Power_0": [ + 5.261715231788078, + 5.290529801324505, + 5.332406666666669 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.717536423841057, + 5.695013245033111, + 5.754573333333334 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7931000000000006, + 0.7939266666666676, + 0.7916600000000006 + ], + "GT Power_0": [ + 0.2291066666666667, + 0.2302600000000001, + 0.23089333333333328 + ], + "IA Power_0": [ + 5.580593333333334, + 5.5110399999999995, + 5.535800000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.082219999999999, + 6.032200000000002, + 6.068293333333331 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7467999999999994, + 0.7764765100671138, + 0.750973509933775 + ], + "GT Power_0": [ + 0.11353333333333342, + 0.11434899328859058, + 0.12342384105960261 + ], + "IA Power_0": [ + 5.74654666666667, + 6.691859060402686, + 5.515867549668872 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.15778, + 7.0310939597315425, + 5.969132450331124 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 149, + 151 + ] + } + ] + }, + { + "bot": "BUILD121-A9", + "number": 4417, + "tests": [ + { + "DRAM Power_0": [ + 0.6305167785234895, + 0.6125199999999998, + 0.6004172185430461 + ], + "GT Power_0": [ + 0.02875167785234898, + 0.01481333333333333, + 0.0165364238410596 + ], + "IA Power_0": [ + 5.606791946308728, + 3.8528933333333337, + 3.8866423841059596 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.968838926174498, + 4.294033333333334, + 4.103013245033113 + ], + "name": "Basic", + "samples": [ + 149, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7387999999999996, + 0.7381266666666664, + 0.74282 + ], + "GT Power_0": [ + 0.11665999999999994, + 0.11717999999999996, + 0.11578666666666663 + ], + "IA Power_0": [ + 7.284946666666662, + 6.837640000000001, + 6.874073333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.572633333333333, + 7.197826666666671, + 7.1973 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.737526666666666, + 0.7558066666666664, + 0.7379733333333334 + ], + "GT Power_0": [ + 0.11533333333333343, + 0.11377333333333339, + 0.12084 + ], + "IA Power_0": [ + 6.806353333333331, + 7.005073333333335, + 7.14028 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.157286666666666, + 7.4948466666666675, + 7.440146666666668 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7929800000000004, + 0.8110993377483446, + 0.7969602649006624 + ], + "GT Power_0": [ + 0.25133333333333324, + 0.2538874172185432, + 0.253933774834437 + ], + "IA Power_0": [ + 7.175553333333328, + 7.189172185430462, + 7.459185430463579 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.647500000000004, + 7.801880794701984, + 7.954735099337753 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7666333333333332, + 0.7439266666666668, + 0.7607799999999997 + ], + "GT Power_0": [ + 0.12009333333333336, + 0.12307333333333335, + 0.12302000000000007 + ], + "IA Power_0": [ + 6.935700000000003, + 6.925846666666663, + 7.287346666666669 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.56571333333333, + 7.357700000000003, + 7.820546666666669 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD148-A9", + "number": 4416, + "tests": [ + { + "DRAM Power_0": [ + 0.5966490066225165, + 0.5925033112582777, + 0.6062933333333332 + ], + "GT Power_0": [ + 0.05843708609271522, + 0.029079470198675485, + 0.03323999999999998 + ], + "IA Power_0": [ + 5.79199337748344, + 6.140112582781455, + 6.351793333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.2464900662251654, + 6.467218543046357, + 6.762653333333329 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7337284768211918, + 0.7115099337748342, + 0.7415695364238408 + ], + "GT Power_0": [ + 0.1620927152317881, + 0.15958940397350987, + 0.15972185430463573 + ], + "IA Power_0": [ + 8.21237086092715, + 8.294119205298015, + 9.11066887417218 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.042609271523183, + 8.782874172185435, + 9.740900662251656 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7239599999999998, + 0.7121059602649003, + 0.7109801324503312 + ], + "GT Power_0": [ + 0.16117333333333334, + 0.15827152317880785, + 0.1606026490066225 + ], + "IA Power_0": [ + 8.61384, + 8.288059602649012, + 8.658913907284772 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.168979999999992, + 8.81635099337748, + 9.164456953642382 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7841854304635768, + 0.8134701986754973, + 0.8162999999999998 + ], + "GT Power_0": [ + 0.40707284768211927, + 0.40213245033112593, + 0.41127333333333327 + ], + "IA Power_0": [ + 9.014105960264898, + 8.968966887417224, + 8.571053333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.770860927152313, + 9.762264900662249, + 9.423913333333335 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7180397350993373, + 0.7239006622516555, + 0.7543973509933773 + ], + "GT Power_0": [ + 0.17986092715231788, + 0.1844834437086093, + 0.180066225165563 + ], + "IA Power_0": [ + 8.642847682119202, + 8.930218543046358, + 8.842708609271517 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.172655629139086, + 9.398933774834434, + 9.382364238410595 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4415, + "tests": [ + { + "DRAM Power_0": [ + 0.6058733333333334, + 0.59824, + 0.5987417218543044 + ], + "GT Power_0": [ + 0.039446666666666644, + 0.012693333333333329, + 0.013509933774834438 + ], + "IA Power_0": [ + 3.434353333333335, + 3.441646666666665, + 3.448814569536422 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.7916866666666653, + 3.6513266666666677, + 3.6753642384105962 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7606133333333327, + 0.749313333333333, + 0.7356533333333327 + ], + "GT Power_0": [ + 0.09035333333333331, + 0.09414666666666666, + 0.0912 + ], + "IA Power_0": [ + 6.000846666666666, + 6.954493333333332, + 6.057506666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.491173333333333, + 7.33862666666667, + 6.391113333333333 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7355099337748341, + 0.7443666666666664, + 0.7549999999999997 + ], + "GT Power_0": [ + 0.10662251655629143, + 0.08666666666666668, + 0.08695333333333341 + ], + "IA Power_0": [ + 6.14184105960265, + 6.412706666666666, + 6.008313333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.451920529801326, + 6.8233066666666655, + 6.5103133333333325 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7939866666666673, + 0.7924105960264902, + 0.7973266666666669 + ], + "GT Power_0": [ + 0.2065533333333334, + 0.2071920529801325, + 0.2025266666666667 + ], + "IA Power_0": [ + 6.405493333333333, + 6.516794701986753, + 6.3190800000000005 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.88962, + 6.996251655629136, + 6.807780000000001 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7412933333333329, + 0.7412913907284767, + 0.7385466666666665 + ], + "GT Power_0": [ + 0.09287333333333338, + 0.09191390728476823, + 0.09462000000000005 + ], + "IA Power_0": [ + 6.469953333333331, + 6.143344370860926, + 6.052946666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.80877333333333, + 6.469304635761589, + 6.392873333333331 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4414, + "tests": [ + { + "DRAM Power_0": [ + 0.6125066666666665, + 0.5977152317880794, + 0.5964437086092713 + ], + "GT Power_0": [ + 0.014526666666666662, + 0.014662251655629139, + 0.014794701986754965 + ], + "IA Power_0": [ + 3.9591600000000016, + 4.207496688741724, + 3.8996556291390747 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.212786666666668, + 4.425490066225167, + 4.104079470198674 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7321866666666662, + 0.7327682119205297, + 0.7477947019867544 + ], + "GT Power_0": [ + 0.11352000000000007, + 0.11478145695364239, + 0.11557615894039738 + ], + "IA Power_0": [ + 6.773680000000001, + 7.1418940397350985, + 6.82524503311258 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.170953333333335, + 7.546066225165562, + 7.250278145695364 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7323466666666659, + 0.7494733333333327, + 0.7335333333333328 + ], + "GT Power_0": [ + 0.11018666666666665, + 0.10952666666666667, + 0.11238000000000002 + ], + "IA Power_0": [ + 6.853233333333333, + 6.876586666666664, + 6.825026666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.181426666666663, + 7.332706666666668, + 7.191146666666667 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7907600000000005, + 0.7918333333333338, + 0.791741721854305 + ], + "GT Power_0": [ + 0.2411133333333332, + 0.24104000000000003, + 0.24329801324503325 + ], + "IA Power_0": [ + 7.104546666666665, + 7.05552, + 7.180304635761586 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.659366666666665, + 7.574873333333336, + 7.686046357615899 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7420066666666665, + 0.8330671140939596, + 0.7382733333333329 + ], + "GT Power_0": [ + 0.11935333333333344, + 0.11800000000000005, + 0.11714000000000006 + ], + "IA Power_0": [ + 7.228813333333334, + 9.00703355704698, + 6.927320000000004 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.577066666666666, + 10.10604026845637, + 7.283740000000001 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 149, + 150 + ] + } + ] + }, + { + "bot": "BUILD153-A9", + "number": 4413, + "tests": [ + { + "DRAM Power_0": [ + 0.624476821192053, + 0.5973533333333331, + 0.6106199999999997 + ], + "GT Power_0": [ + 0.014390728476821196, + 0.013566666666666671, + 0.014066666666666672 + ], + "IA Power_0": [ + 3.240152317880797, + 3.155720000000001, + 3.223133333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.822642384105959, + 3.4142, + 3.5858466666666673 + ], + "name": "Basic", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.735413333333333, + 0.755393333333333, + 0.7361721854304634 + ], + "GT Power_0": [ + 0.10534000000000004, + 0.10278666666666668, + 0.10248344370860928 + ], + "IA Power_0": [ + 5.5686399999999985, + 5.923846666666669, + 5.630317880794701 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.959653333333333, + 6.497173333333331, + 6.003476821192053 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7337814569536419, + 0.7342933333333331, + 0.7334066666666662 + ], + "GT Power_0": [ + 0.10133112582781466, + 0.09672666666666667, + 0.09941333333333337 + ], + "IA Power_0": [ + 5.552397350993379, + 5.769040000000003, + 5.624593333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.9119801324503305, + 6.149806666666667, + 5.9704066666666655 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7917400000000006, + 0.8069000000000007, + 0.8141866666666666 + ], + "GT Power_0": [ + 0.2189400000000001, + 0.21804666666666678, + 0.21546666666666667 + ], + "IA Power_0": [ + 5.699480000000001, + 5.73738, + 5.858293333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.264213333333334, + 6.445053333333334, + 6.47042 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7387350993377481, + 0.7536026490066224, + 0.7420800000000001 + ], + "GT Power_0": [ + 0.10494701986754967, + 0.10843046357615894, + 0.10808666666666669 + ], + "IA Power_0": [ + 5.848450331125829, + 5.6706953642384095, + 5.688566666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.245596026490065, + 6.104463576158938, + 6.040660000000001 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4412, + "tests": [ + { + "DRAM Power_0": [ + 0.59994, + 0.5995066666666663, + 0.5988133333333329 + ], + "GT Power_0": [ + 0.014306666666666665, + 0.014359999999999996, + 0.015293333333333334 + ], + "IA Power_0": [ + 4.3300800000000015, + 3.99442, + 3.923100000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.560913333333332, + 4.223160000000003, + 4.168806666666666 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7357466666666663, + 0.7345133333333331, + 0.7359801324503306 + ], + "GT Power_0": [ + 0.10782666666666668, + 0.10581999999999998, + 0.11098013245033117 + ], + "IA Power_0": [ + 6.9960666666666675, + 6.9628466666666675, + 7.088788079470195 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.301366666666667, + 7.292259999999996, + 7.467172185430463 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7408211920529797, + 0.731913333333333, + 0.7338466666666662 + ], + "GT Power_0": [ + 0.1079403973509934, + 0.11175333333333337, + 0.10845333333333332 + ], + "IA Power_0": [ + 6.971364238410596, + 7.0521600000000015, + 7.333506666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.425483443708607, + 7.369753333333332, + 7.662046666666667 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8058266666666672, + 0.8060533333333338, + 0.8144466666666673 + ], + "GT Power_0": [ + 0.24334000000000008, + 0.24485333333333328, + 0.2462066666666666 + ], + "IA Power_0": [ + 7.302733333333337, + 7.2957333333333345, + 7.926739999999997 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.93939333333334, + 8.009006666666663, + 8.805946666666669 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7563533333333328, + 0.7588533333333329, + 0.7395866666666665 + ], + "GT Power_0": [ + 0.11959999999999998, + 0.12053333333333334, + 0.12199333333333333 + ], + "IA Power_0": [ + 7.092066666666672, + 7.076373333333335, + 7.4451800000000015 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.554313333333333, + 7.614919999999997, + 7.79510666666667 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD147-A9", + "number": 4411, + "tests": [ + { + "DRAM Power_0": [ + 0.6079266666666668, + 0.5983178807947016, + 0.5987019867549664 + ], + "GT Power_0": [ + 0.04690666666666665, + 0.01633112582781457, + 0.015496688741721854 + ], + "IA Power_0": [ + 3.390586666666666, + 3.248668874172186, + 3.233013245033115 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.7128133333333326, + 3.512721854304636, + 3.475814569536422 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7635333333333332, + 0.7440066666666663, + 0.7508211920529799 + ], + "GT Power_0": [ + 0.1346933333333334, + 0.13885333333333327, + 0.14380794701986754 + ], + "IA Power_0": [ + 6.007300000000004, + 5.777486666666667, + 5.760443708609273 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.797266666666663, + 6.185986666666665, + 6.300231788079471 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.736278145695364, + 0.7386933333333325, + 0.7464733333333331 + ], + "GT Power_0": [ + 0.13703311258278147, + 0.13840000000000008, + 0.13461333333333333 + ], + "IA Power_0": [ + 6.090854304635761, + 6.156773333333333, + 5.7690933333333305 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.458940397350995, + 6.575333333333331, + 6.200073333333335 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7947066666666669, + 0.792260000000001, + 0.7928800000000006 + ], + "GT Power_0": [ + 0.26646000000000003, + 0.2677466666666665, + 0.2687066666666667 + ], + "IA Power_0": [ + 6.410380000000003, + 5.964673333333336, + 6.0025933333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.966280000000003, + 6.5284800000000045, + 6.577493333333334 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7483133333333333, + 0.7412715231788076, + 0.7407199999999997 + ], + "GT Power_0": [ + 0.14589333333333332, + 0.14235099337748347, + 0.14175333333333337 + ], + "IA Power_0": [ + 5.937826666666666, + 5.864463576158946, + 5.853486666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.319346666666662, + 6.2545430463576155, + 6.2650999999999994 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4410, + "tests": [ + { + "DRAM Power_0": [ + 0.600344370860927, + 0.5978609271523174, + 0.5986291390728475 + ], + "GT Power_0": [ + 0.03394701986754965, + 0.017158940397350993, + 0.018066225165562916 + ], + "IA Power_0": [ + 3.8787748344370874, + 3.9157682119205304, + 3.8322781456953656 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.123503311258277, + 4.152059602649007, + 4.08700662251656 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7348666666666659, + 0.7535894039735095, + 0.7529933774834432 + ], + "GT Power_0": [ + 0.1363999999999999, + 0.13628476821192057, + 0.14416556291390728 + ], + "IA Power_0": [ + 6.699320000000003, + 6.965410596026492, + 6.878682119205297 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.120033333333334, + 7.49549668874172, + 7.3550794701986755 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7358543046357611, + 0.7535430463576158, + 0.7342516556291391 + ], + "GT Power_0": [ + 0.13927152317880787, + 0.13984768211920529, + 0.13827152317880798 + ], + "IA Power_0": [ + 6.729841059602647, + 7.108231788079467, + 6.785490066225163 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.156529801324503, + 7.65672847682119, + 7.172304635761591 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7903400000000006, + 0.7915800000000004, + 0.7904800000000005 + ], + "GT Power_0": [ + 0.29209999999999997, + 0.2957199999999999, + 0.29843333333333333 + ], + "IA Power_0": [ + 7.053586666666669, + 7.043553333333335, + 7.039986666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.589819999999998, + 7.593339999999999, + 7.626019999999999 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7427549668874169, + 0.7482599999999997, + 0.7666400000000001 + ], + "GT Power_0": [ + 0.14974172185430468, + 0.15742666666666666, + 0.1589066666666668 + ], + "IA Power_0": [ + 7.236960264900662, + 6.918493333333332, + 6.859493333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.6332119205298, + 7.420340000000001, + 7.603046666666666 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD133-A9", + "number": 4409, + "tests": [ + { + "DRAM Power_0": [ + 0.6079271523178805, + 0.6062847682119201, + 0.6003112582781454 + ], + "GT Power_0": [ + 0.04287417218543045, + 0.016953642384105957, + 0.01549006622516556 + ], + "IA Power_0": [ + 3.463364238410595, + 3.400920529801325, + 3.4170860927152313 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.8298476821192056, + 3.7323576158940406, + 3.673192052980133 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7361655629139073, + 0.7390999999999996, + 0.7358666666666664 + ], + "GT Power_0": [ + 0.12678807947019877, + 0.1271066666666667, + 0.13443333333333335 + ], + "IA Power_0": [ + 6.208099337748346, + 5.946533333333332, + 5.930220000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.592145695364242, + 6.357426666666668, + 6.285893333333332 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7345799999999998, + 0.7352781456953638, + 0.6392200000000003 + ], + "GT Power_0": [ + 0.1315600000000001, + 0.12958940397350993, + 0.5512866666666667 + ], + "IA Power_0": [ + 6.025739999999998, + 5.87666225165563, + 6.03744 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.442273333333332, + 6.290046357615895, + 6.819306666666671 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7905761589403975, + 0.8052582781456953, + 0.7936800000000004 + ], + "GT Power_0": [ + 0.260317880794702, + 0.2574370860927152, + 0.2629666666666666 + ], + "IA Power_0": [ + 6.155900662251657, + 6.140516556291387, + 6.434153333333336 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.658410596026489, + 6.723410596026492, + 6.9726000000000035 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7436423841059597, + 0.7678333333333328, + 0.754213333333333 + ], + "GT Power_0": [ + 0.14777483443708608, + 0.13882, + 0.13862666666666662 + ], + "IA Power_0": [ + 6.22066225165563, + 6.0835199999999965, + 6.2228733333333315 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.578503311258275, + 6.896606666666667, + 6.663846666666666 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD143-A9", + "number": 4408, + "tests": [ + { + "DRAM Power_0": [ + 0.6178199999999996, + 0.5992466666666664, + 0.6126291390728472 + ], + "GT Power_0": [ + 0.04547333333333332, + 0.014740000000000005, + 0.014980132450331128 + ], + "IA Power_0": [ + 3.7627599999999983, + 3.278766666666667, + 3.2478940397350993 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.104313333333335, + 3.541273333333333, + 3.612536423841059 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7366291390728475, + 0.7348066666666664, + 0.7371192052980131 + ], + "GT Power_0": [ + 0.11618543046357618, + 0.11490666666666667, + 0.11757615894039739 + ], + "IA Power_0": [ + 5.570814569536421, + 5.862966666666669, + 5.805668874172183 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.977688741721856, + 6.230953333333334, + 6.196304635761591 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8552483221476508, + 0.7359599999999996, + 0.7357284768211919 + ], + "GT Power_0": [ + 0.11381208053691275, + 0.11838000000000003, + 0.1160662251655629 + ], + "IA Power_0": [ + 9.234000000000002, + 5.9832866666666655, + 5.646556291390729 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.67611409395973, + 6.305573333333336, + 6.045880794701986 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 149, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7923066666666673, + 0.7918940397350995, + 0.7915933333333338 + ], + "GT Power_0": [ + 0.24647999999999995, + 0.24873509933774846, + 0.24704666666666653 + ], + "IA Power_0": [ + 5.864646666666668, + 5.9560264900662245, + 5.868139999999996 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.410026666666668, + 6.455456953642385, + 6.423053333333335 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7479006622516556, + 0.7408079470198675, + 0.741960264900662 + ], + "GT Power_0": [ + 0.12862251655629145, + 0.12599999999999995, + 0.12443708609271532 + ], + "IA Power_0": [ + 5.790496688741721, + 5.714516556291392, + 5.798701986754966 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.258483443708611, + 6.152529801324504, + 6.1842185430463585 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4407, + "tests": [ + { + "DRAM Power_0": [ + 0.6001390728476818, + 0.6000666666666661, + 0.5974999999999996 + ], + "GT Power_0": [ + 0.0426026490066225, + 0.017220000000000003, + 0.015013333333333335 + ], + "IA Power_0": [ + 4.497735099337747, + 4.436400000000001, + 4.339179999999996 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.727225165562913, + 4.651913333333334, + 4.545146666666664 + ], + "name": "Basic", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7355799999999996, + 0.7645999999999998, + 0.7336599999999999 + ], + "GT Power_0": [ + 0.11545333333333334, + 0.11792666666666664, + 0.11815999999999997 + ], + "IA Power_0": [ + 7.988326666666668, + 8.201200000000002, + 7.628180000000005 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.31296666666667, + 8.731486666666667, + 7.969086666666662 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7360533333333329, + 0.7476225165562912, + 0.7404304635761582 + ], + "GT Power_0": [ + 0.11702, + 0.11973509933774838, + 0.11600662251655625 + ], + "IA Power_0": [ + 7.991520000000003, + 7.628827814569532, + 7.6606821192053 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.343340000000001, + 8.073576158940396, + 8.091827814569541 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7907466666666675, + 0.874556291390729, + 0.806553333333334 + ], + "GT Power_0": [ + 0.25394666666666665, + 0.254701986754967, + 0.25316 + ], + "IA Power_0": [ + 7.952333333333333, + 11.297629139072844, + 7.932240000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.445239999999997, + 11.823218543046355, + 8.578453333333341 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.741576158940397, + 0.7386666666666662, + 0.7434333333333333 + ], + "GT Power_0": [ + 0.1252980132450331, + 0.12178666666666667, + 0.12236000000000002 + ], + "IA Power_0": [ + 7.7218741721854345, + 7.681113333333336, + 8.633906666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.062079470198675, + 8.05999333333333, + 8.951359999999994 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD129-A9", + "number": 4406, + "tests": [ + { + "DRAM Power_0": [ + 0.6067066666666666, + 0.5996688741721853, + 0.599573333333333 + ], + "GT Power_0": [ + 0.03783999999999999, + 0.013463576158940394, + 0.012846666666666668 + ], + "IA Power_0": [ + 3.463413333333333, + 3.429278145695364, + 3.7527533333333327 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.822139999999999, + 3.6799470198675497, + 4.000906666666665 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7551399999999998, + 0.7525695364238404, + 0.7691059602649004 + ], + "GT Power_0": [ + 0.0879866666666667, + 0.09259602649006622, + 0.09134437086092714 + ], + "IA Power_0": [ + 5.979939999999997, + 6.056231788079471, + 6.0611059602648965 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.465526666666669, + 6.531682119205301, + 6.94171523178808 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7346199999999992, + 0.7349799999999993, + 0.7479735099337745 + ], + "GT Power_0": [ + 0.08908666666666669, + 0.08805333333333336, + 0.08635761589403973 + ], + "IA Power_0": [ + 6.030340000000002, + 6.285019999999996, + 5.966662251655626 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.375053333333335, + 6.631866666666669, + 6.407728476821195 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8083933333333335, + 0.7915133333333336, + 0.791853333333334 + ], + "GT Power_0": [ + 0.20529999999999998, + 0.21023999999999993, + 0.2066733333333334 + ], + "IA Power_0": [ + 6.194699999999999, + 6.487633333333337, + 6.180159999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.738119999999999, + 6.9683600000000006, + 6.709126666666665 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7819133333333332, + 0.739133333333333, + 0.7405231788079469 + ], + "GT Power_0": [ + 0.1096000000000001, + 0.09435333333333339, + 0.09617880794701987 + ], + "IA Power_0": [ + 6.098253333333334, + 6.396200000000002, + 6.095357615894043 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.7171666666666665, + 6.749126666666663, + 6.453417218543047 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4405, + "tests": [ + { + "DRAM Power_0": [ + 0.6136666666666666, + 0.5996866666666663, + 0.5989133333333332 + ], + "GT Power_0": [ + 0.03645333333333331, + 0.014639999999999995, + 0.01447333333333333 + ], + "IA Power_0": [ + 4.847659999999998, + 3.9104933333333336, + 3.9054933333333355 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.089753333333335, + 4.16132666666667, + 4.1711066666666685 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7371399999999998, + 0.7534866666666669, + 0.7516490066225161 + ], + "GT Power_0": [ + 0.11163333333333342, + 0.11442666666666665, + 0.11166887417218542 + ], + "IA Power_0": [ + 7.227406666666667, + 6.913993333333331, + 6.84117880794702 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.564253333333338, + 7.307033333333332, + 7.349999999999998 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7363533333333331, + 0.7377466666666664, + 0.7350666666666663 + ], + "GT Power_0": [ + 0.10927333333333335, + 0.11279333333333336, + 0.11538000000000001 + ], + "IA Power_0": [ + 6.863553333333336, + 6.935793333333331, + 7.062840000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.290586666666666, + 7.2685933333333335, + 7.4499333333333375 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7931125827814574, + 0.8118333333333337, + 0.7923245033112586 + ], + "GT Power_0": [ + 0.24360264900662257, + 0.2414333333333333, + 0.24109271523178794 + ], + "IA Power_0": [ + 7.113814569536425, + 7.058840000000002, + 7.515059602649003 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.636927152317882, + 7.877833333333334, + 7.990543046357611 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7415066666666666, + 0.7394133333333331, + 0.7418476821192049 + ], + "GT Power_0": [ + 0.12027333333333333, + 0.12186666666666665, + 0.1208145695364239 + ], + "IA Power_0": [ + 6.913353333333333, + 6.924606666666666, + 7.253410596026491 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.31502, + 7.3052133333333344, + 7.6124370860927115 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD162-A9", + "number": 4404, + "tests": [ + { + "DRAM Power_0": [ + 0.6011066666666661, + 0.6156399999999997, + 0.6014866666666662 + ], + "GT Power_0": [ + 0.015193333333333333, + 0.015313333333333328, + 0.01622666666666667 + ], + "IA Power_0": [ + 3.241420000000001, + 3.2372666666666667, + 3.2676866666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.529193333333335, + 3.561326666666668, + 3.5156999999999994 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7552533333333331, + 0.7400066666666664, + 0.7380933333333332 + ], + "GT Power_0": [ + 0.13147333333333333, + 0.1286533333333334, + 0.12760000000000007 + ], + "IA Power_0": [ + 5.773946666666668, + 5.964219999999996, + 5.719053333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.29440666666667, + 6.3508133333333365, + 6.105026666666669 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7438066666666661, + 0.745406666666666, + 0.7368466666666668 + ], + "GT Power_0": [ + 0.12927333333333332, + 0.13821333333333327, + 0.1295 + ], + "IA Power_0": [ + 5.822093333333336, + 6.027773333333334, + 5.692519999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.208806666666667, + 6.502046666666665, + 6.0711266666666655 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.794946666666667, + 0.7926333333333336, + 0.7914000000000001 + ], + "GT Power_0": [ + 0.26418000000000014, + 0.2674866666666668, + 0.26256000000000007 + ], + "IA Power_0": [ + 5.962233333333334, + 5.924106666666664, + 5.912319999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.51388, + 6.48788, + 6.45741333333333 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7455165562913907, + 0.7423774834437082, + 0.7569133333333328 + ], + "GT Power_0": [ + 0.1394900662251656, + 0.1397814569536424, + 0.13978666666666673 + ], + "IA Power_0": [ + 6.107649006622523, + 5.794774834437088, + 5.788053333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.500112582781458, + 6.196152317880793, + 6.314113333333335 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD155-A9", + "number": 4403, + "tests": [ + { + "DRAM Power_0": [ + 0.6017152317880791, + 0.6124900662251654, + 0.6126357615894036 + ], + "GT Power_0": [ + 0.014139072847682115, + 0.014397350993377482, + 0.014735099337748345 + ], + "IA Power_0": [ + 3.761794701986756, + 3.971384105960264, + 3.5848410596026494 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.992927152317881, + 4.271900662251654, + 3.907721854304637 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7518599999999998, + 0.7358999999999997, + 0.7381788079470195 + ], + "GT Power_0": [ + 0.12949333333333335, + 0.11842666666666668, + 0.11492052980132456 + ], + "IA Power_0": [ + 6.292959999999999, + 6.304859999999997, + 6.350324503311261 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.867919999999998, + 6.656326666666667, + 6.709132450331127 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7373733333333331, + 0.7381133333333331, + 0.7520199999999996 + ], + "GT Power_0": [ + 0.11248000000000007, + 0.11458666666666673, + 0.11172666666666664 + ], + "IA Power_0": [ + 6.3044533333333295, + 6.445586666666667, + 6.391286666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.674346666666666, + 6.7938399999999985, + 6.8745866666666675 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7931200000000006, + 0.8187600000000006, + 0.7921800000000003 + ], + "GT Power_0": [ + 0.2413533333333333, + 0.2422466666666667, + 0.24196666666666677 + ], + "IA Power_0": [ + 6.936433333333333, + 6.638153333333334, + 6.576380000000003 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.4577, + 7.534973333333334, + 7.13078 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7437999999999997, + 0.7615266666666666, + 0.7649072847682116 + ], + "GT Power_0": [ + 0.11992666666666665, + 0.1211133333333333, + 0.11790728476821198 + ], + "IA Power_0": [ + 6.772526666666666, + 6.535986666666667, + 6.4168278145695385 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.1492400000000025, + 7.077153333333337, + 7.053258278145694 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4402, + "tests": [ + { + "DRAM Power_0": [ + 0.6085099337748343, + 0.6002466666666664, + 0.6001266666666664 + ], + "GT Power_0": [ + 0.03418543046357614, + 0.013513333333333334, + 0.013120000000000001 + ], + "IA Power_0": [ + 3.3131059602649007, + 3.2961666666666676, + 3.2788533333333345 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.5848807947019874, + 3.5493133333333335, + 3.520986666666666 + ], + "name": "Basic", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7592666666666663, + 0.7627599999999998, + 0.7388476821192048 + ], + "GT Power_0": [ + 0.09758666666666668, + 0.09830000000000005, + 0.09396688741721855 + ], + "IA Power_0": [ + 5.652166666666671, + 6.0322266666666655, + 5.747033112582783 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.201526666666665, + 6.62217333333333, + 6.101463576158941 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7479139072847681, + 0.7378609271523178, + 0.75154 + ], + "GT Power_0": [ + 0.09180132450331123, + 0.0898940397350993, + 0.09287333333333334 + ], + "IA Power_0": [ + 5.856026490066228, + 5.969172185430465, + 5.7440200000000035 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.209317880794699, + 6.312807947019866, + 6.144226666666668 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.796306666666667, + 0.7936133333333341, + 0.8037133333333341 + ], + "GT Power_0": [ + 0.20484666666666668, + 0.20167333333333326, + 0.20286666666666672 + ], + "IA Power_0": [ + 5.955779999999999, + 5.947793333333336, + 5.916233333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.450973333333329, + 6.427413333333334, + 6.4989866666666645 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7572666666666666, + 0.7439666666666664, + 0.7431799999999997 + ], + "GT Power_0": [ + 0.09616666666666672, + 0.09678666666666669, + 0.09728666666666673 + ], + "IA Power_0": [ + 6.025080000000003, + 5.819679999999999, + 5.861913333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.485793333333333, + 6.15464666666667, + 6.1732733333333325 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD181-A9", + "number": 4401, + "tests": [ + { + "DRAM Power_0": [ + 0.60224, + 0.600456953642384, + 0.6150799999999998 + ], + "GT Power_0": [ + 0.03205999999999999, + 0.014443708609271523, + 0.014713333333333335 + ], + "IA Power_0": [ + 4.169186666666667, + 3.783470198675496, + 4.4113400000000045 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.422246666666666, + 4.0186754966887435, + 4.743653333333333 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7373266666666667, + 0.7371986754966886, + 0.7565733333333332 + ], + "GT Power_0": [ + 0.11448666666666668, + 0.11378145695364236, + 0.11239333333333335 + ], + "IA Power_0": [ + 6.4768533333333345, + 6.484794701986754, + 6.913086666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.841213333333335, + 6.84439735099338, + 7.424713333333334 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7379666666666663, + 0.7557799999999998, + 0.7380066666666666 + ], + "GT Power_0": [ + 0.11349999999999995, + 0.11050000000000004, + 0.13060000000000005 + ], + "IA Power_0": [ + 6.451106666666663, + 6.63913333333333, + 6.861040000000003 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.834366666666663, + 7.152306666666662, + 7.200113333333335 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7932866666666673, + 0.8209200000000002, + 0.794113333333334 + ], + "GT Power_0": [ + 0.23650666666666667, + 0.25453333333333333, + 0.23684666666666648 + ], + "IA Power_0": [ + 6.778073333333333, + 6.812046666666664, + 6.79214 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.282713333333336, + 7.6407066666666665, + 7.280666666666666 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7522733333333327, + 0.7613973509933776, + 0.7453046357615887 + ], + "GT Power_0": [ + 0.11528666666666666, + 0.11613907284768216, + 0.12035099337748348 + ], + "IA Power_0": [ + 6.625193333333333, + 6.932125827814566, + 6.576430463576156 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.038206666666668, + 7.459582781456956, + 6.966841059602649 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD163-A9", + "number": 4400, + "tests": [ + { + "DRAM Power_0": [ + 0.612794701986755, + 0.5990198675496682, + 0.5992052980132448 + ], + "GT Power_0": [ + 0.041132450331125815, + 0.015245033112582776, + 0.014847682119205298 + ], + "IA Power_0": [ + 3.920192052980132, + 3.407423841059604, + 3.4300596026490062 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.197741721854304, + 3.6468807947019872, + 3.69274834437086 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7381399999999995, + 0.738273333333333, + 0.7338199999999996 + ], + "GT Power_0": [ + 0.10475333333333336, + 0.10168000000000003, + 0.10607333333333333 + ], + "IA Power_0": [ + 6.558646666666669, + 6.120493333333335, + 6.17192 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.886113333333338, + 6.469686666666666, + 6.452539999999999 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7472066666666665, + 0.735253333333333, + 0.7480533333333332 + ], + "GT Power_0": [ + 0.09775333333333336, + 0.09615333333333333, + 0.0992 + ], + "IA Power_0": [ + 6.4382999999999955, + 6.110413333333332, + 6.129639999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.882686666666668, + 6.464013333333332, + 6.548146666666668 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8248344370860932, + 0.7921390728476826, + 0.8019000000000007 + ], + "GT Power_0": [ + 0.24773509933774834, + 0.22675496688741742, + 0.23309333333333346 + ], + "IA Power_0": [ + 6.729794701986755, + 6.38813907284768, + 7.184846666666671 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.711145695364237, + 6.902953642384106, + 7.709353333333336 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7395999999999999, + 0.7431986754966885, + 0.7585799999999998 + ], + "GT Power_0": [ + 0.10327333333333338, + 0.10419867549668878, + 0.10071999999999999 + ], + "IA Power_0": [ + 6.261173333333331, + 6.324642384105958, + 6.631426666666664 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.59974666666667, + 6.638708609271525, + 7.116466666666665 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4399, + "tests": [ + { + "DRAM Power_0": [ + 0.6300728476821195, + 0.7267852348993288, + 0.593437086092715 + ], + "GT Power_0": [ + 0.022735099337748338, + 0.025040268456375837, + 0.021086092715231788 + ], + "IA Power_0": [ + 5.020801324503309, + 9.031651006711405, + 6.986596026490062 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.261384105960264, + 9.269409395973152, + 7.2952450331125815 + ], + "name": "Basic", + "samples": [ + 151, + 149, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7414370860927151, + 0.7210728476821188, + 0.7213708609271516 + ], + "GT Power_0": [ + 0.12023841059602645, + 0.12119867549668885, + 0.1187880794701987 + ], + "IA Power_0": [ + 9.104807947019872, + 9.246609271523178, + 9.363576158940399 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.728092715231785, + 9.656947019867545, + 9.795509933774829 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7204172185430462, + 0.7160198675496683, + 0.7351324503311253 + ], + "GT Power_0": [ + 0.1190728476821192, + 0.11818543046357619, + 0.12176158940397351 + ], + "IA Power_0": [ + 9.288317880794699, + 9.693112582781456, + 9.590410596026489 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.645953642384113, + 10.155192052980135, + 10.337781456953646 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8045266666666672, + 0.7977399999999997, + 0.7987483443708616 + ], + "GT Power_0": [ + 0.27071333333333336, + 0.27545333333333344, + 0.2863907284768213 + ], + "IA Power_0": [ + 9.622993333333337, + 13.557466666666667, + 11.136900662251653 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 10.240133333333333, + 14.086899999999998, + 11.72481456953642 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7417400000000002, + 0.7404333333333328, + 0.7409199999999998 + ], + "GT Power_0": [ + 0.1286733333333334, + 0.12436000000000004, + 0.12499333333333337 + ], + "IA Power_0": [ + 6.949306666666668, + 7.094466666666664, + 7.270706666666662 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.349599999999996, + 7.428026666666669, + 7.693213333333334 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD172-A9", + "number": 4398, + "tests": [ + { + "DRAM Power_0": [ + 0.6070666666666664, + 0.6125761589403972, + 0.5986026490066221 + ], + "GT Power_0": [ + 0.02794666666666666, + 0.013741721854304634, + 0.013986754966887418 + ], + "IA Power_0": [ + 3.2159733333333325, + 3.2996556291390733, + 3.0733377483443705 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.558739999999999, + 3.642152317880794, + 3.3139403973509927 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7520266666666666, + 0.7406599999999995, + 0.7357880794701983 + ], + "GT Power_0": [ + 0.09635333333333337, + 0.09744000000000003, + 0.09517218543046356 + ], + "IA Power_0": [ + 5.369700000000003, + 5.891186666666665, + 5.4079205298013235 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.875900000000001, + 6.264573333333333, + 5.7190198675496715 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7367682119205299, + 0.7367666666666666, + 0.7376066666666665 + ], + "GT Power_0": [ + 0.09764238410596031, + 0.09686000000000003, + 0.09549333333333333 + ], + "IA Power_0": [ + 5.352132450331126, + 5.617753333333334, + 5.325619999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.724509933774834, + 6.023633333333333, + 5.679273333333333 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8064400000000004, + 0.80658940397351, + 0.815423841059603 + ], + "GT Power_0": [ + 0.2136866666666668, + 0.2199801324503312, + 0.21650331125827815 + ], + "IA Power_0": [ + 5.609640000000002, + 5.665754966887417, + 5.547139072847682 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.2596133333333315, + 6.290894039735098, + 6.4679933774834435 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7572913907284762, + 0.7667733333333334, + 0.7423576158940391 + ], + "GT Power_0": [ + 0.10378807947019868, + 0.10087333333333337, + 0.1010066225165563 + ], + "IA Power_0": [ + 5.411304635761589, + 5.8228333333333335, + 5.417410596026489 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.92925165562914, + 6.315493333333332, + 5.825172185430462 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD174-A9", + "number": 4397, + "tests": [ + { + "DRAM Power_0": [ + 0.5994503311258276, + 0.6162980132450327, + 0.5999205298013239 + ], + "GT Power_0": [ + 0.016099337748344367, + 0.017894039735099336, + 0.017112582781456952 + ], + "IA Power_0": [ + 3.9159337748344396, + 3.927185430463577, + 3.926470198675498 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.156033112582779, + 4.2500331125827815, + 4.170198675496687 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7356291390728471, + 0.7352133333333329, + 0.7362052980132445 + ], + "GT Power_0": [ + 0.12984105960264905, + 0.13126000000000004, + 0.12657615894039734 + ], + "IA Power_0": [ + 6.8133973509933785, + 7.11634, + 6.878960264900662 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.22605298013245, + 7.492540000000001, + 7.250543046357618 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7439199999999996, + 0.7344199999999995, + 0.7536533333333325 + ], + "GT Power_0": [ + 0.1271666666666667, + 0.12766000000000005, + 0.1278733333333334 + ], + "IA Power_0": [ + 6.873979999999999, + 7.20756, + 6.9143399999999975 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.301953333333335, + 7.562859999999999, + 7.425940000000001 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8073066666666676, + 0.7916026490066229, + 0.7994039735099345 + ], + "GT Power_0": [ + 0.27402666666666675, + 0.27319205298013255, + 0.27472847682119195 + ], + "IA Power_0": [ + 7.231426666666663, + 7.440635761589402, + 7.236774834437087 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.9920333333333335, + 8.040549668874176, + 7.876092715231787 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7401589403973508, + 0.7386933333333328, + 0.7496400000000004 + ], + "GT Power_0": [ + 0.14031125827814572, + 0.14138, + 0.13667333333333334 + ], + "IA Power_0": [ + 6.919006622516554, + 7.04506, + 7.022786666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.315887417218543, + 7.4050933333333315, + 7.421253333333328 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD145-A9", + "number": 4396, + "tests": [ + { + "DRAM Power_0": [ + 0.6096799999999996, + 0.6017218543046354, + 0.6001599999999998 + ], + "GT Power_0": [ + 0.03313333333333331, + 0.013562913907284766, + 0.013813333333333334 + ], + "IA Power_0": [ + 3.391740000000001, + 3.3996490066225173, + 3.327946666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.7640000000000002, + 3.656311258278146, + 3.578546666666666 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7382847682119205, + 0.7546754966887417, + 0.7375999999999997 + ], + "GT Power_0": [ + 0.10054304635761595, + 0.10110596026490065, + 0.10312000000000003 + ], + "IA Power_0": [ + 5.970947019867549, + 5.667834437086095, + 5.701613333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.363006622516559, + 6.121920529801324, + 6.050079999999998 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7459, + 0.7350264900662249, + 0.7506953642384103 + ], + "GT Power_0": [ + 0.09942666666666672, + 0.09857615894039737, + 0.10018543046357614 + ], + "IA Power_0": [ + 6.054820000000001, + 5.711112582781458, + 5.7376556291390735 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.497066666666665, + 6.061834437086093, + 6.244807947019865 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8067533333333337, + 0.8074133333333333, + 0.819606666666667 + ], + "GT Power_0": [ + 0.23433333333333328, + 0.22028666666666666, + 0.21702666666666665 + ], + "IA Power_0": [ + 6.070046666666664, + 6.026246666666667, + 6.339153333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.598513333333331, + 6.651139999999997, + 6.963946666666668 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7662715231788076, + 0.7576466666666665, + 0.7424799999999997 + ], + "GT Power_0": [ + 0.10500000000000004, + 0.11947333333333338, + 0.10423333333333334 + ], + "IA Power_0": [ + 5.7465695364238405, + 5.830459999999999, + 6.009593333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.2604635761589424, + 6.263066666666666, + 6.3942533333333325 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD157-A9", + "number": 4395, + "tests": [ + { + "DRAM Power_0": [ + 0.6013245033112581, + 0.6005298013245028, + 0.6032715231788078 + ], + "GT Power_0": [ + 0.015821192052980125, + 0.015052980132450326, + 0.015655629139072844 + ], + "IA Power_0": [ + 3.75685430463576, + 3.703099337748344, + 3.832079470198675 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.985841059602648, + 3.927774834437084, + 4.037900662251656 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7433576158940395, + 0.7464799999999996, + 0.7370933333333329 + ], + "GT Power_0": [ + 0.12051655629139073, + 0.12599333333333335, + 0.12393333333333326 + ], + "IA Power_0": [ + 6.5378675496688725, + 6.797653333333329, + 6.456813333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.888165562913911, + 7.332793333333334, + 6.822500000000001 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7340794701986751, + 0.7348476821192047, + 0.7359602649006616 + ], + "GT Power_0": [ + 0.1234569536423842, + 0.12788079470198674, + 0.12132450331125832 + ], + "IA Power_0": [ + 6.365364238410596, + 6.904966887417218, + 6.527456953642383 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.735119205298014, + 7.207827814569537, + 6.892225165562914 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7911000000000005, + 0.8013466666666671, + 0.7923066666666672 + ], + "GT Power_0": [ + 0.2547933333333334, + 0.25505333333333335, + 0.2563266666666667 + ], + "IA Power_0": [ + 6.833700000000002, + 6.78686, + 6.778266666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.377153333333332, + 7.460673333333336, + 7.283953333333337 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7422999999999996, + 0.7612333333333329, + 0.7536999999999995 + ], + "GT Power_0": [ + 0.1279866666666666, + 0.12833999999999993, + 0.13058666666666666 + ], + "IA Power_0": [ + 6.959159999999997, + 6.580066666666667, + 6.583699999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.326099999999999, + 7.14358, + 7.017679999999998 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4394, + "tests": [ + { + "DRAM Power_0": [ + 0.6045, + 0.5987682119205294, + 0.600039735099337 + ], + "GT Power_0": [ + 0.04585333333333331, + 0.017609271523178805, + 0.01719867549668874 + ], + "IA Power_0": [ + 3.913686666666666, + 3.6686092715231804, + 3.7299536423841078 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.2592533333333344, + 3.900761589403971, + 3.9662582781456943 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7343443708609276, + 0.7642799999999997, + 0.731886666666666 + ], + "GT Power_0": [ + 0.13958940397350994, + 0.1393866666666667, + 0.13632666666666673 + ], + "IA Power_0": [ + 6.703205298013242, + 6.451653333333334, + 6.354139999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.1171788079470195, + 7.195646666666665, + 6.773260000000003 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.731576158940397, + 0.7353112582781455, + 0.7338013245033109 + ], + "GT Power_0": [ + 0.1346887417218543, + 0.13394701986754967, + 0.13586092715231787 + ], + "IA Power_0": [ + 6.338827814569538, + 6.535304635761588, + 6.733430463576158 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.748311258278145, + 6.924827814569534, + 7.119913907284767 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7892266666666673, + 0.7889933774834442, + 0.7889006622516558 + ], + "GT Power_0": [ + 0.2827733333333333, + 0.2873112582781457, + 0.2878874172185431 + ], + "IA Power_0": [ + 6.757886666666668, + 6.800192052980134, + 6.968013245033111 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.3449599999999995, + 7.342112582781459, + 7.5360331125827775 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7389733333333331, + 0.7437733333333331, + 0.7393245033112582 + ], + "GT Power_0": [ + 0.1439133333333333, + 0.14048000000000005, + 0.1448278145695364 + ], + "IA Power_0": [ + 6.5262733333333305, + 6.580046666666668, + 6.839410596026495 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.851133333333332, + 7.059839999999998, + 7.235026490066227 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4393, + "tests": [ + { + "DRAM Power_0": [ + 0.6070866666666664, + 0.6163999999999996, + 0.6021799999999996 + ], + "GT Power_0": [ + 0.04237999999999999, + 0.014686666666666669, + 0.013926666666666667 + ], + "IA Power_0": [ + 4.209886666666666, + 4.070693333333333, + 4.423926666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.5664266666666675, + 4.406993333333332, + 4.6345866666666655 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8423112582781458, + 0.7358999999999993, + 0.7368724832214766 + ], + "GT Power_0": [ + 0.10805298013245039, + 0.11046000000000002, + 0.11217449664429531 + ], + "IA Power_0": [ + 19.237145695364227, + 6.935373333333332, + 7.371456375838927 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 19.48021854304635, + 7.270006666666668, + 7.685020134228191 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 149 + ] + }, + { + "DRAM Power_0": [ + 0.7356199999999998, + 0.7390066666666661, + 0.7373333333333332 + ], + "GT Power_0": [ + 0.10653333333333337, + 0.11170000000000009, + 0.10872 + ], + "IA Power_0": [ + 6.888893333333331, + 7.641373333333334, + 6.919233333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.26986666666667, + 8.007460000000002, + 7.2913200000000025 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7914304635761598, + 0.7994866666666673, + 0.7904933333333334 + ], + "GT Power_0": [ + 0.24409933774834444, + 0.24640666666666666, + 0.24773333333333325 + ], + "IA Power_0": [ + 7.304754966887421, + 7.644080000000002, + 7.260080000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.790026490066229, + 8.143213333333334, + 7.784406666666672 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7747733333333329, + 0.7416133333333333, + 0.7522000000000003 + ], + "GT Power_0": [ + 0.12485333333333337, + 0.11720666666666661, + 0.11554000000000002 + ], + "IA Power_0": [ + 7.0855733333333335, + 7.491566666666674, + 7.107993333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.036686666666668, + 7.83644, + 7.615173333333336 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD125-A9", + "number": 4392, + "tests": [ + { + "DRAM Power_0": [ + 0.6093533333333334, + 0.6140397350993375, + 0.6003377483443705 + ], + "GT Power_0": [ + 0.039986666666666636, + 0.015463576158940397, + 0.016788079470198676 + ], + "IA Power_0": [ + 4.600446666666665, + 4.765602649006622, + 4.373860927152318 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 5.007420000000002, + 5.136827814569535, + 4.604198675496689 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.754635761589404, + 0.7432666666666667, + 0.7387466666666667 + ], + "GT Power_0": [ + 0.1139470198675497, + 0.11325333333333336, + 0.11381333333333335 + ], + "IA Power_0": [ + 7.71937748344371, + 8.189499999999999, + 7.5949199999999975 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.309867549668876, + 8.521566666666661, + 7.942826666666671 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7381466666666664, + 0.7390333333333331, + 0.7384333333333334 + ], + "GT Power_0": [ + 0.11061333333333337, + 0.10962666666666673, + 0.10965333333333338 + ], + "IA Power_0": [ + 8.039753333333335, + 7.7239200000000015, + 7.592293333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.346046666666659, + 8.060106666666664, + 7.937353333333334 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8113466666666667, + 0.8002200000000005, + 0.7955761589403976 + ], + "GT Power_0": [ + 0.24683333333333318, + 0.2452200000000001, + 0.2441721854304637 + ], + "IA Power_0": [ + 8.341866666666666, + 8.324726666666669, + 8.104211920529805 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 9.06201333333333, + 8.785146666666671, + 8.610728476821194 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7604437086092716, + 0.7433841059602652, + 0.742397350993377 + ], + "GT Power_0": [ + 0.12532450331125825, + 0.12050331125827818, + 0.12098013245033111 + ], + "IA Power_0": [ + 7.766774834437087, + 7.792814569536421, + 8.23237748344371 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.447331125827814, + 8.151973509933773, + 8.592264900662247 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD123-A9", + "number": 4390, + "tests": [ + { + "DRAM Power_0": [ + 0.6067333333333328, + 0.6000662251655625, + 0.6007152317880792 + ], + "GT Power_0": [ + 0.035906666666666635, + 0.015728476821192054, + 0.015827814569536424 + ], + "IA Power_0": [ + 4.144726666666667, + 3.8104768211920543, + 3.7651456953642386 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.505300000000004, + 4.035807947019866, + 4.032291390728476 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7551333333333332, + 0.738443708609271, + 0.7376133333333328 + ], + "GT Power_0": [ + 0.12263333333333333, + 0.12283443708609272, + 0.11830666666666668 + ], + "IA Power_0": [ + 7.161446666666667, + 6.685185430463576, + 6.784113333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.59494666666667, + 7.083662251655629, + 7.143620000000001 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7367466666666662, + 0.736344370860927, + 0.7356887417218537 + ], + "GT Power_0": [ + 0.11828666666666673, + 0.12119867549668865, + 0.11743046357615898 + ], + "IA Power_0": [ + 6.682453333333334, + 6.75092715231788, + 7.071456953642385 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.056826666666666, + 7.112238410596024, + 7.447158940397352 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7933774834437088, + 0.7931721854304637, + 0.7935827814569536 + ], + "GT Power_0": [ + 0.2530860927152318, + 0.26147019867549676, + 0.25098675496688744 + ], + "IA Power_0": [ + 7.031754966887417, + 7.081821192052983, + 7.346715231788076 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.543437086092715, + 7.573781456953639, + 7.875377483443706 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7437483443708607, + 0.7488278145695363, + 0.7596887417218542 + ], + "GT Power_0": [ + 0.13031125827814563, + 0.12858940397350999, + 0.12907284768211916 + ], + "IA Power_0": [ + 6.870238410596028, + 6.995125827814567, + 7.656443708609272 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.232549668874171, + 7.364781456953643, + 8.074158940397355 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD128-A9", + "number": 4389, + "tests": [ + { + "DRAM Power_0": [ + 0.6076999999999999, + 0.6001733333333333, + 0.5995733333333333 + ], + "GT Power_0": [ + 0.034926666666666654, + 0.014453333333333332, + 0.014353333333333336 + ], + "IA Power_0": [ + 3.9927266666666665, + 3.9169866666666673, + 4.272626666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.2869333333333355, + 4.146966666666666, + 4.500353333333332 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7525133333333329, + 0.7529799999999996, + 0.7375799999999993 + ], + "GT Power_0": [ + 0.1089866666666667, + 0.10720000000000003, + 0.11096666666666671 + ], + "IA Power_0": [ + 6.831579999999999, + 6.873279999999999, + 6.853726666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.283733333333336, + 7.282126666666667, + 7.193479999999999 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7537599999999995, + 0.7522466666666667, + 0.7384599999999997 + ], + "GT Power_0": [ + 0.10603333333333329, + 0.11983333333333336, + 0.10567333333333333 + ], + "IA Power_0": [ + 6.850713333333331, + 7.1826733333333355, + 6.950813333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.350073333333338, + 7.714426666666662, + 7.231553333333333 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8079602649006626, + 0.802953333333334, + 0.791506666666667 + ], + "GT Power_0": [ + 0.2346622516556292, + 0.23754666666666666, + 0.23678666666666676 + ], + "IA Power_0": [ + 7.204443708609272, + 7.4660866666666665, + 7.095913333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.8895894039735115, + 8.023173333333332, + 7.614913333333332 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7424799999999995, + 0.7448733333333333, + 0.7427086092715229 + ], + "GT Power_0": [ + 0.11262666666666671, + 0.11221333333333336, + 0.11345695364238415 + ], + "IA Power_0": [ + 6.891693333333336, + 7.533946666666667, + 7.0137086092715215 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.260906666666665, + 7.8914066666666685, + 7.314947019867551 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD177-A9", + "number": 4388, + "tests": [ + { + "DRAM Power_0": [ + 0.6062733333333331, + 0.6010599999999997, + 0.6005364238410595 + ], + "GT Power_0": [ + 0.04202666666666666, + 0.013873333333333333, + 0.015026490066225166 + ], + "IA Power_0": [ + 3.993159999999998, + 3.9179266666666663, + 3.929443708609271 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.276353333333334, + 4.164553333333333, + 4.178139072847683 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.757233333333333, + 0.7529066666666666, + 0.7404799999999998 + ], + "GT Power_0": [ + 0.10716000000000006, + 0.10584, + 0.10296000000000002 + ], + "IA Power_0": [ + 6.722919999999998, + 7.115346666666669, + 7.072880000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.597213333333334, + 7.6167399999999965, + 7.453933333333328 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7363133333333329, + 0.7731599999999995, + 0.7530066666666664 + ], + "GT Power_0": [ + 0.10884666666666667, + 0.10655333333333332, + 0.10826000000000002 + ], + "IA Power_0": [ + 6.731120000000001, + 8.099739999999999, + 6.789159999999996 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.120400000000001, + 8.572266666666666, + 7.2989600000000046 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8203800000000006, + 0.7944666666666667, + 0.7948533333333335 + ], + "GT Power_0": [ + 0.242346666666667, + 0.2416666666666666, + 0.23984000000000005 + ], + "IA Power_0": [ + 7.23595333333333, + 7.21897333333333, + 7.163633333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.885846666666665, + 7.724606666666668, + 7.698206666666667 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7445364238410594, + 0.76412, + 0.7413733333333328 + ], + "GT Power_0": [ + 0.11605960264900661, + 0.12441999999999998, + 0.11706000000000003 + ], + "IA Power_0": [ + 7.322019867549668, + 7.007213333333335, + 6.914186666666669 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.671801324503312, + 7.685006666666664, + 7.252266666666666 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4387, + "tests": [ + { + "DRAM Power_0": [ + 0.6086599999999996, + 0.6125466666666668, + 0.6149470198675495 + ], + "GT Power_0": [ + 0.03295999999999999, + 0.014773333333333334, + 0.015059602649006623 + ], + "IA Power_0": [ + 3.8010266666666683, + 4.014073333333332, + 3.720867549668875 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.132746666666666, + 4.31715333333333, + 4.042536423841059 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7388145695364233, + 0.7382266666666665, + 0.7517417218543045 + ], + "GT Power_0": [ + 0.1255827814569536, + 0.12664666666666657, + 0.12917880794701986 + ], + "IA Power_0": [ + 6.439900662251659, + 6.426793333333332, + 6.396781456953642 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.823139072847683, + 6.794813333333333, + 6.909125827814571 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.73914, + 0.7569199999999998, + 0.7541599999999999 + ], + "GT Power_0": [ + 0.12952000000000005, + 0.1277466666666667, + 0.1289733333333334 + ], + "IA Power_0": [ + 6.7384, + 6.6038733333333335, + 6.4549133333333355 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.135139999999995, + 7.119873333333332, + 6.890533333333336 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7927800000000008, + 0.8072266666666671, + 0.8134400000000007 + ], + "GT Power_0": [ + 0.26199999999999996, + 0.2664666666666667, + 0.26385333333333344 + ], + "IA Power_0": [ + 7.012806666666665, + 6.952393333333331, + 6.850566666666662 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.543266666666664, + 7.638240000000002, + 7.529446666666668 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.745213333333333, + 0.7504900662251657, + 0.7444666666666662 + ], + "GT Power_0": [ + 0.13992666666666667, + 0.14057615894039735, + 0.1399733333333334 + ], + "IA Power_0": [ + 6.879213333333331, + 6.728940397350997, + 6.551773333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.272553333333334, + 7.112940397350991, + 6.88748 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD119-A9", + "number": 4386, + "tests": [ + { + "DRAM Power_0": [ + 0.6011333333333333, + 0.6132185430463574, + 0.6036225165562913 + ], + "GT Power_0": [ + 0.03550666666666665, + 0.015006622516556288, + 0.014231788079470198 + ], + "IA Power_0": [ + 3.9550199999999993, + 3.7715231788079455, + 3.8612516556291396 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.193633333333333, + 4.12676821192053, + 4.172238410596027 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7365562913907284, + 0.7519866666666665, + 0.7713733333333328 + ], + "GT Power_0": [ + 0.11472847682119207, + 0.11471333333333333, + 0.12085333333333334 + ], + "IA Power_0": [ + 7.039688741721855, + 6.741886666666662, + 6.862279999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.414251655629134, + 7.147413333333331, + 7.672113333333338 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7467814569536422, + 0.7375827814569532, + 0.7394666666666663 + ], + "GT Power_0": [ + 0.11906622516556288, + 0.11432450331125829, + 0.11205333333333338 + ], + "IA Power_0": [ + 7.068132450331127, + 6.800105960264901, + 6.913266666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.57893377483444, + 7.160913907284764, + 7.262646666666665 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8095960264900672, + 0.7930866666666665, + 0.7946866666666671 + ], + "GT Power_0": [ + 0.23794039735099348, + 0.24192666666666673, + 0.24574666666666672 + ], + "IA Power_0": [ + 7.00573509933775, + 7.053713333333335, + 7.127746666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.737483443708613, + 7.575660000000001, + 7.691886666666668 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7426066666666664, + 0.7429271523178809, + 0.7485799999999998 + ], + "GT Power_0": [ + 0.1192666666666666, + 0.11971523178807945, + 0.11752666666666672 + ], + "IA Power_0": [ + 6.870240000000002, + 6.911311258278149, + 8.005440000000005 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.242899999999998, + 7.30930463576159, + 8.338399999999998 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD132-A9", + "number": 4385, + "tests": [ + { + "DRAM Power_0": [ + 0.610576158940397, + 0.6068543046357616, + 0.6113377483443706 + ], + "GT Power_0": [ + 0.03191390728476819, + 0.013165562913907282, + 0.013847682119205298 + ], + "IA Power_0": [ + 4.159887417218541, + 3.786768211920529, + 3.7934768211920527 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.59143046357616, + 4.078033112582781, + 4.098549668874171 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7521390728476818, + 0.7523907284768204, + 0.7690266666666662 + ], + "GT Power_0": [ + 0.09274834437086091, + 0.09604635761589407, + 0.09340666666666674 + ], + "IA Power_0": [ + 7.041125827814568, + 6.8399801324503295, + 7.287239999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.495688741721857, + 7.3259139072847645, + 7.770000000000003 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7365599999999995, + 0.7354999999999998, + 0.7404832214765096 + ], + "GT Power_0": [ + 0.09494666666666668, + 0.09477333333333342, + 0.09351677852348993 + ], + "IA Power_0": [ + 6.808613333333334, + 6.773106666666666, + 7.458114093959732 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.153346666666663, + 7.11988, + 7.803234899328857 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 149 + ] + }, + { + "DRAM Power_0": [ + 0.7942200000000007, + 0.792513333333334, + 0.7946688741721858 + ], + "GT Power_0": [ + 0.21220000000000003, + 0.21097333333333332, + 0.21310596026490078 + ], + "IA Power_0": [ + 7.06912, + 7.017966666666666, + 7.344701986754962 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.5581533333333315, + 7.508313333333335, + 7.824854304635761 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7416466666666663, + 0.7432266666666661, + 0.7649666666666666 + ], + "GT Power_0": [ + 0.10149333333333337, + 0.10324666666666674, + 0.10269333333333336 + ], + "IA Power_0": [ + 6.893426666666666, + 6.94007333333333, + 6.872293333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.226480000000004, + 7.287653333333336, + 7.754500000000001 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD154-A9", + "number": 4384, + "tests": [ + { + "DRAM Power_0": [ + 0.5988344370860925, + 0.6001466666666664, + 0.6203774834437085 + ], + "GT Power_0": [ + 0.017768211920529794, + 0.01809333333333333, + 0.01781456953642384 + ], + "IA Power_0": [ + 3.5647615894039735, + 3.6206400000000016, + 3.659350993377483 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.82125165562914, + 3.8537933333333347, + 4.183317880794703 + ], + "name": "Basic", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7354768211920535, + 0.7397086092715224, + 0.7531920529801323 + ], + "GT Power_0": [ + 0.15016556291390723, + 0.1487549668874172, + 0.14122516556291395 + ], + "IA Power_0": [ + 6.389384105960263, + 6.602450331125829, + 6.360741721854303 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.72673509933775, + 7.001132450331123, + 6.948781456953643 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7366622516556292, + 0.7371258278145691, + 0.7362999999999997 + ], + "GT Power_0": [ + 0.14149668874172183, + 0.13450993377483447, + 0.13500666666666666 + ], + "IA Power_0": [ + 6.355695364238408, + 6.758827814569537, + 6.41262 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.718622516556289, + 7.094907284768206, + 6.795446666666667 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7920666666666671, + 0.8033666666666669, + 0.7912582781456955 + ], + "GT Power_0": [ + 0.2940133333333333, + 0.3008466666666667, + 0.2881523178807947 + ], + "IA Power_0": [ + 6.744126666666669, + 6.672953333333336, + 6.6906225165562905 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.313319999999999, + 7.3652066666666665, + 7.267741721854305 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7444635761589402, + 0.761706666666666, + 0.7415298013245029 + ], + "GT Power_0": [ + 0.14633112582781466, + 0.14426666666666663, + 0.14690066225165566 + ], + "IA Power_0": [ + 6.854350993377483, + 6.654346666666667, + 6.4497947019867565 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.243152317880794, + 7.1967733333333355, + 6.86805298013245 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD164-A9", + "number": 4383, + "tests": [ + { + "DRAM Power_0": [ + 0.5990599999999999, + 0.6100860927152318, + 0.6108199999999997 + ], + "GT Power_0": [ + 0.042439999999999985, + 0.015682119205298013, + 0.015286666666666667 + ], + "IA Power_0": [ + 3.72006, + 3.9467152317880827, + 3.7545599999999997 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.967206666666669, + 4.268092715231787, + 4.075213333333334 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7372450331125826, + 0.748604026845637, + 0.7419199999999994 + ], + "GT Power_0": [ + 0.12709271523178808, + 0.12510738255033566, + 0.12450666666666665 + ], + "IA Power_0": [ + 6.420907284768213, + 7.048436241610737, + 6.547926666666664 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.820039735099339, + 7.44826845637584, + 6.968959999999995 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 149, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.739417218543046, + 0.7377999999999993, + 0.7528933333333332 + ], + "GT Power_0": [ + 0.12727814569536414, + 0.12997333333333333, + 0.1286533333333334 + ], + "IA Power_0": [ + 6.388430463576157, + 6.849453333333331, + 6.505966666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.791523178807945, + 7.225946666666669, + 6.940180000000001 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8071800000000007, + 0.8092466666666671, + 0.7932866666666671 + ], + "GT Power_0": [ + 0.2633, + 0.2634200000000001, + 0.27390666666666663 + ], + "IA Power_0": [ + 6.753999999999999, + 6.697686666666666, + 6.790533333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.381993333333332, + 7.336640000000001, + 7.284786666666669 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7532333333333331, + 0.7433799999999996, + 0.752166666666666 + ], + "GT Power_0": [ + 0.14176000000000005, + 0.14429333333333336, + 0.13862 + ], + "IA Power_0": [ + 6.937013333333335, + 6.610593333333334, + 6.569293333333338 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.431026666666665, + 6.976246666666669, + 6.954026666666666 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD21-B1", + "number": 4382, + "tests": [ + { + "DRAM Power_0": [ + 0.6053399999999995, + 0.601553333333333, + 0.6008874172185428 + ], + "GT Power_0": [ + 0.04971333333333332, + 0.01578666666666667, + 0.015801324503311256 + ], + "IA Power_0": [ + 3.4253466666666683, + 3.7964933333333346, + 3.4378013245033117 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.960186666666664, + 5.200026666666668, + 4.902423841059601 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7742866666666663, + 0.7524026845637577, + 0.7412399999999996 + ], + "GT Power_0": [ + 0.11864000000000006, + 0.127, + 0.1271266666666667 + ], + "IA Power_0": [ + 6.649073333333333, + 6.81258389261745, + 6.05227333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.38623333333333, + 8.496046979865767, + 7.613713333333333 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 149, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7400266666666665, + 0.7393973509933773, + 0.7768133333333334 + ], + "GT Power_0": [ + 0.12130666666666673, + 0.126794701986755, + 0.12012000000000003 + ], + "IA Power_0": [ + 5.969853333333332, + 5.975721854304632, + 7.691293333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.528239999999995, + 7.569801324503311, + 9.408426666666664 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7970466666666673, + 0.8107000000000006, + 0.8108666666666667 + ], + "GT Power_0": [ + 0.2596066666666666, + 0.2603066666666667, + 0.26945333333333343 + ], + "IA Power_0": [ + 6.5278066666666685, + 6.190233333333333, + 6.344833333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.237553333333334, + 8.06625333333333, + 8.178206666666664 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.74766, + 0.7443933333333327, + 0.7456733333333332 + ], + "GT Power_0": [ + 0.13588666666666682, + 0.13912666666666662, + 0.13094666666666663 + ], + "IA Power_0": [ + 6.434753333333331, + 6.141873333333331, + 6.115819999999997 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.9979799999999965, + 7.677639999999995, + 7.661646666666661 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4381, + "tests": [ + { + "DRAM Power_0": [ + 0.6031533333333332, + 0.6004066666666665, + 0.5987333333333331 + ], + "GT Power_0": [ + 0.03386666666666664, + 0.014986666666666665, + 0.014113333333333337 + ], + "IA Power_0": [ + 3.8125199999999997, + 3.587873333333332, + 3.49718 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.116526666666668, + 3.817386666666668, + 3.767233333333331 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7390866666666663, + 0.7504533333333332, + 0.7365999999999999 + ], + "GT Power_0": [ + 0.11654, + 0.10928666666666674, + 0.11411333333333327 + ], + "IA Power_0": [ + 6.303899999999998, + 6.39688, + 6.514166666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.678173333333334, + 6.827653333333336, + 6.866040000000003 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7374066666666664, + 0.7378211920529799, + 0.7658211920529798 + ], + "GT Power_0": [ + 0.11263999999999998, + 0.10927152317880796, + 0.10515231788079474 + ], + "IA Power_0": [ + 6.3023533333333335, + 6.26813907284768, + 6.692688741721853 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.631113333333334, + 6.640768211920529, + 7.22187417218543 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7957933333333336, + 0.8143066666666666, + 0.7931333333333341 + ], + "GT Power_0": [ + 0.23876000000000006, + 0.2398799999999999, + 0.23884666666666665 + ], + "IA Power_0": [ + 6.575659999999999, + 6.609033333333332, + 6.897133333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.084846666666669, + 7.249940000000003, + 7.399900000000002 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7445866666666664, + 0.7443133333333329, + 0.7441599999999996 + ], + "GT Power_0": [ + 0.11738666666666672, + 0.11494666666666674, + 0.11160000000000002 + ], + "IA Power_0": [ + 6.411113333333334, + 6.413386666666668, + 6.481866666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.791486666666665, + 6.8037199999999975, + 6.838926666666671 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD145-A9", + "number": 4380, + "tests": [ + { + "DRAM Power_0": [ + 0.6070933333333333, + 0.600311258278145, + 0.6125629139072845 + ], + "GT Power_0": [ + 0.04131999999999999, + 0.014602649006622514, + 0.013629139072847681 + ], + "IA Power_0": [ + 3.3697933333333348, + 3.26025165562914, + 3.23390728476821 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.6342533333333344, + 3.4917947019867555, + 3.536662251655629 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.739893333333333, + 0.7373841059602649, + 0.7534900662251652 + ], + "GT Power_0": [ + 0.10152666666666663, + 0.10323178807947023, + 0.10485430463576159 + ], + "IA Power_0": [ + 5.9061400000000015, + 5.549860927152321, + 5.69560927152318 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.3133866666666645, + 5.954456953642387, + 6.144735099337747 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7437733333333331, + 0.7344799999999997, + 0.7371399999999998 + ], + "GT Power_0": [ + 0.1025466666666667, + 0.10140000000000005, + 0.10376000000000007 + ], + "IA Power_0": [ + 6.093966666666664, + 5.605419999999998, + 5.632579999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.486406666666665, + 5.974086666666665, + 6.000219999999998 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7966400000000001, + 0.7950933333333338, + 0.7925466666666672 + ], + "GT Power_0": [ + 0.2243733333333333, + 0.24922000000000002, + 0.2221 + ], + "IA Power_0": [ + 6.339986666666665, + 5.835899999999997, + 5.822679999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.9032066666666685, + 6.331266666666669, + 6.350859999999998 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7672733333333333, + 0.7475666666666664, + 0.7427133333333332 + ], + "GT Power_0": [ + 0.1092533333333334, + 0.10842666666666666, + 0.10758666666666668 + ], + "IA Power_0": [ + 5.8035533333333325, + 5.815293333333336, + 6.018106666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.505446666666667, + 6.212926666666666, + 6.3599 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD157-A9", + "number": 4379, + "tests": [ + { + "DRAM Power_0": [ + 0.5985364238410592, + 0.6000860927152318, + 0.6001390728476815 + ], + "GT Power_0": [ + 0.04011920529801322, + 0.015205298013245033, + 0.015847682119205297 + ], + "IA Power_0": [ + 3.6189999999999998, + 3.6252384105960256, + 4.020721854304636 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.86773509933775, + 3.854920529801324, + 4.268523178807948 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7368476821192049, + 0.7699533333333334, + 0.7361199999999994 + ], + "GT Power_0": [ + 0.1259470198675497, + 0.12076666666666667, + 0.12357333333333341 + ], + "IA Power_0": [ + 6.343900662251657, + 6.626393333333336, + 6.4081199999999985 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.744781456953644, + 7.1208133333333326, + 6.788066666666667 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7548199999999998, + 0.7409127516778521, + 0.739733333333333 + ], + "GT Power_0": [ + 0.12565999999999997, + 0.1201543624161074, + 0.12134000000000005 + ], + "IA Power_0": [ + 6.406126666666668, + 7.13210067114094, + 6.591106666666663 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.894059999999998, + 7.4960671140939565, + 6.932619999999999 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 149, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7941721854304639, + 0.7956556291390728, + 0.7929006622516558 + ], + "GT Power_0": [ + 0.25769536423841055, + 0.2588410596026492, + 0.25543046357615906 + ], + "IA Power_0": [ + 6.739000000000001, + 6.96450331125828, + 6.665523178807947 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.255536423841059, + 7.538543046357615, + 7.211933774834435 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7633178807947021, + 0.7433311258278144, + 0.7535666666666666 + ], + "GT Power_0": [ + 0.13375496688741723, + 0.13144370860927154, + 0.13457333333333335 + ], + "IA Power_0": [ + 6.570278145695366, + 6.580304635761589, + 6.443580000000001 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.05731125827815, + 6.911986754966892, + 6.871193333333332 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD149-A9", + "number": 4378, + "tests": [ + { + "DRAM Power_0": [ + 0.6069599999999995, + 0.6045533333333332, + 0.6002066666666664 + ], + "GT Power_0": [ + 0.040313333333333305, + 0.015126666666666665, + 0.01661333333333333 + ], + "IA Power_0": [ + 4.067559999999999, + 4.079786666666667, + 4.379133333333331 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.431706666666663, + 4.321606666666669, + 4.622486666666667 + ], + "name": "Basic", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7395933333333331, + 0.7520733333333329, + 0.7388133333333332 + ], + "GT Power_0": [ + 0.1176466666666667, + 0.11800666666666665, + 0.12213333333333332 + ], + "IA Power_0": [ + 7.131333333333337, + 7.16994666666667, + 7.160606666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.486406666666671, + 7.665913333333335, + 7.569226666666665 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7521733333333329, + 0.7371733333333329, + 0.7490266666666665 + ], + "GT Power_0": [ + 0.11759333333333333, + 0.11694000000000003, + 0.11947333333333328 + ], + "IA Power_0": [ + 7.09815333333333, + 7.464666666666667, + 7.162066666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.644073333333332, + 7.808313333333331, + 7.701153333333335 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8141533333333341, + 0.8044666666666671, + 0.806106666666667 + ], + "GT Power_0": [ + 0.27294000000000007, + 0.2793200000000002, + 0.27286 + ], + "IA Power_0": [ + 7.46675333333333, + 7.869766666666669, + 7.530466666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.267966666666668, + 8.55835333333333, + 8.237266666666665 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7422781456953644, + 0.7429533333333332, + 0.7654733333333333 + ], + "GT Power_0": [ + 0.1282913907284768, + 0.12866666666666668, + 0.12790666666666672 + ], + "IA Power_0": [ + 7.219615894039732, + 7.668239999999999, + 7.282313333333332 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.6123245033112585, + 8.012773333333335, + 8.038559999999999 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD175-A9", + "number": 4377, + "tests": [ + { + "DRAM Power_0": [ + 0.6007748344370856, + 0.6019271523178804, + 0.5986933333333332 + ], + "GT Power_0": [ + 0.014662251655629142, + 0.015761589403973507, + 0.01409333333333333 + ], + "IA Power_0": [ + 3.5451456953642393, + 3.5960993377483454, + 3.4688333333333343 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.797894039735098, + 3.883867549668874, + 3.7437533333333346 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7381799999999998, + 0.7471133333333335, + 0.7391399999999996 + ], + "GT Power_0": [ + 0.10821333333333333, + 0.10548666666666667, + 0.11250000000000007 + ], + "IA Power_0": [ + 6.277286666666668, + 6.619793333333334, + 6.301059999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.6336666666666675, + 7.066186666666669, + 6.6530133333333366 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7475599999999997, + 0.7526933333333333, + 0.7388533333333331 + ], + "GT Power_0": [ + 0.10699333333333333, + 0.10927333333333342, + 0.10853333333333337 + ], + "IA Power_0": [ + 6.783413333333336, + 6.716246666666665, + 6.261026666666665 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.178146666666667, + 7.148453333333332, + 6.625779999999997 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.793526666666667, + 0.8055333333333337, + 0.7955333333333343 + ], + "GT Power_0": [ + 0.23747333333333326, + 0.23853333333333349, + 0.24220000000000014 + ], + "IA Power_0": [ + 6.5694199999999965, + 6.5973066666666655, + 6.576159999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.098380000000001, + 7.190433333333332, + 7.0982866666666675 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7551933333333336, + 0.7586423841059602, + 0.7579666666666662 + ], + "GT Power_0": [ + 0.11570666666666668, + 0.11762913907284768, + 0.11373333333333333 + ], + "IA Power_0": [ + 6.437040000000001, + 6.4968874172185425, + 6.472920000000004 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.9288799999999995, + 7.114172185430464, + 6.896733333333332 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD131-A9", + "number": 4376, + "tests": [ + { + "DRAM Power_0": [ + 0.6034266666666664, + 0.6044768211920528, + 0.6020993377483438 + ], + "GT Power_0": [ + 0.04745333333333333, + 0.015741721854304624, + 0.015390728476821191 + ], + "IA Power_0": [ + 3.9274199999999997, + 3.918463576158938, + 3.828403973509935 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.118613333333333, + 4.111781456953643, + 4.019529801324502 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7617748344370857, + 0.7409470198675494, + 0.7425333333333332 + ], + "GT Power_0": [ + 0.11321854304635758, + 0.11028476821192053, + 0.1126866666666667 + ], + "IA Power_0": [ + 6.146741721854307, + 6.4449801324503335, + 6.379026666666668 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.7318940397351, + 6.76440397350993, + 6.711373333333334 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7558533333333332, + 0.7403266666666668, + 0.7406688741721851 + ], + "GT Power_0": [ + 0.1268133333333333, + 0.10759333333333333, + 0.11399337748344374 + ], + "IA Power_0": [ + 6.7197066666666645, + 6.502026666666664, + 6.170788079470199 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.997379999999998, + 6.8166933333333315, + 6.517344370860933 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8016821192052985, + 0.8008399999999999, + 0.8064666666666671 + ], + "GT Power_0": [ + 0.24409933774834447, + 0.24357333333333345, + 0.2401200000000001 + ], + "IA Power_0": [ + 6.421973509933772, + 6.354606666666667, + 6.613613333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.899986754966888, + 6.844786666666669, + 7.073039999999998 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7638066666666664, + 0.7641390728476817, + 0.7557066666666666 + ], + "GT Power_0": [ + 0.11970666666666659, + 0.11739735099337753, + 0.11854666666666672 + ], + "IA Power_0": [ + 6.5761, + 6.33628476821192, + 6.302273333333334 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.013173333333333, + 6.7324370860927125, + 6.682219999999999 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD141-A9", + "number": 4375, + "tests": [ + { + "DRAM Power_0": [ + 0.609225165562914, + 0.5994370860927153, + 0.600847682119205 + ], + "GT Power_0": [ + 0.0354437086092715, + 0.014880794701986751, + 0.015437086092715229 + ], + "IA Power_0": [ + 4.04239072847682, + 4.009986754966886, + 3.9772913907284755 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.441788079470199, + 4.221357615894039, + 4.253668874172186 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7513973509933772, + 0.7391125827814571, + 0.7374266666666666 + ], + "GT Power_0": [ + 0.12121854304635762, + 0.11513907284768211, + 0.11716666666666671 + ], + "IA Power_0": [ + 7.175668874172186, + 7.328046357615891, + 7.114026666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.691304635761593, + 7.713860927152315, + 7.429119999999999 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7409466666666671, + 0.7349933774834432, + 0.7386291390728473 + ], + "GT Power_0": [ + 0.11487333333333333, + 0.11385430463576166, + 0.11525165562913904 + ], + "IA Power_0": [ + 7.111966666666666, + 7.352443708609269, + 6.997536423841062 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.437873333333334, + 7.707178807947018, + 7.397748344370861 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8286533333333335, + 0.7940533333333335, + 0.7965099337748348 + ], + "GT Power_0": [ + 0.24261999999999995, + 0.23946666666666677, + 0.23883443708609273 + ], + "IA Power_0": [ + 7.3232, + 7.557233333333332, + 7.557993377483444 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 8.460119999999998, + 8.032440000000001, + 8.010013245033116 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.760980132450331, + 0.7431733333333335, + 0.7435430463576156 + ], + "GT Power_0": [ + 0.1218145695364239, + 0.1259000000000001, + 0.11827152317880799 + ], + "IA Power_0": [ + 7.211145695364234, + 7.203300000000004, + 7.225662251655628 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.671033112582782, + 7.5434800000000015, + 7.537642384105957 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 151 + ] + } + ] + }, + { + "bot": "BUILD182-A9", + "number": 4374, + "tests": [ + { + "DRAM Power_0": [ + 0.6073266666666665, + 0.5999072847682116, + 0.5984999999999998 + ], + "GT Power_0": [ + 0.03085333333333331, + 0.013529801324503307, + 0.01398 + ], + "IA Power_0": [ + 3.207100000000001, + 3.4835894039735096, + 3.135746666666667 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.544459999999999, + 3.727834437086095, + 3.389433333333334 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7480399999999999, + 0.7404133333333329, + 0.7371199999999997 + ], + "GT Power_0": [ + 0.09930000000000004, + 0.10250000000000001, + 0.09912000000000001 + ], + "IA Power_0": [ + 5.9546199999999985, + 5.603793333333332, + 5.709319999999999 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.358273333333333, + 5.987500000000003, + 6.048633333333331 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7509735099337741, + 0.7377133333333333, + 0.7370999999999998 + ], + "GT Power_0": [ + 0.09283443708609275, + 0.0963466666666667, + 0.09492666666666669 + ], + "IA Power_0": [ + 5.905165562913906, + 5.621960000000004, + 5.631159999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.319688741721855, + 5.999786666666667, + 6.010226666666662 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.796346666666667, + 0.8091000000000002, + 0.8056845637583898 + ], + "GT Power_0": [ + 0.20792000000000002, + 0.20922666666666676, + 0.20756375838926164 + ], + "IA Power_0": [ + 6.218613333333332, + 6.198126666666665, + 6.77160402684564 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.723246666666665, + 6.791613333333334, + 7.2532617449664425 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 149 + ] + }, + { + "DRAM Power_0": [ + 0.7586533333333332, + 0.743529801324503, + 0.743813333333333 + ], + "GT Power_0": [ + 0.10161333333333336, + 0.10888079470198682, + 0.1034466666666667 + ], + "IA Power_0": [ + 5.809900000000002, + 5.865635761589403, + 6.037000000000002 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.175879999999996, + 6.178245033112583, + 6.416086666666669 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD139-A9", + "number": 4373, + "tests": [ + { + "DRAM Power_0": [ + 0.6090999999999999, + 0.6146953642384102, + 0.6153178807947016 + ], + "GT Power_0": [ + 0.041446666666666625, + 0.016437086092715235, + 0.017615894039735094 + ], + "IA Power_0": [ + 3.728466666666666, + 3.6505496688741728, + 3.683582781456953 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.006353333333334, + 4.059284768211921, + 3.998668874172187 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7450794701986753, + 0.7360860927152317, + 0.7365799999999997 + ], + "GT Power_0": [ + 0.12564238410596024, + 0.1258344370860927, + 0.1290066666666667 + ], + "IA Power_0": [ + 6.430198675496688, + 6.40098013245033, + 6.506193333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.844099337748349, + 6.7591788079470225, + 6.9169599999999996 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7568733333333327, + 0.7351059602649007, + 0.7358013245033114 + ], + "GT Power_0": [ + 0.12896000000000005, + 0.12604635761589408, + 0.12976158940397348 + ], + "IA Power_0": [ + 6.376200000000004, + 6.6318145695364255, + 6.362251655629139 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.961513333333337, + 7.028668874172183, + 6.753251655629141 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8014238410596028, + 0.7905000000000004, + 0.7946066666666677 + ], + "GT Power_0": [ + 0.2925562913907284, + 0.2863266666666667, + 0.28953333333333325 + ], + "IA Power_0": [ + 6.691245033112585, + 6.961553333333336, + 6.853486666666669 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.300026490066226, + 7.5067666666666675, + 7.400053333333333 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7480866666666663, + 0.743317880794702, + 0.7422066666666663 + ], + "GT Power_0": [ + 0.14548000000000005, + 0.1323377483443709, + 0.13207999999999998 + ], + "IA Power_0": [ + 6.613786666666666, + 7.107145695364241, + 6.455073333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.987159999999998, + 7.627264900662253, + 6.852466666666671 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 151, + 150 + ] + } + ] + }, + { + "bot": "BUILD179-A9", + "number": 4372, + "tests": [ + { + "DRAM Power_0": [ + 0.5995496688741719, + 0.6141324503311257, + 0.5988940397350986 + ], + "GT Power_0": [ + 0.040463576158940376, + 0.017284768211920522, + 0.017609271523178805 + ], + "IA Power_0": [ + 3.795728476821191, + 4.086158940397347, + 3.780463576158941 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.052430463576157, + 4.448649006622514, + 3.996105960264902 + ], + "name": "Basic", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7675533333333333, + 0.7483199999999994, + 0.7370133333333329 + ], + "GT Power_0": [ + 0.14202000000000004, + 0.14182666666666663, + 0.1398599999999999 + ], + "IA Power_0": [ + 7.202720000000001, + 6.675393333333338, + 6.581906666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.74261333333333, + 7.170986666666666, + 6.972600000000001 + ], + "name": "Video_720_MP4", + "samples": [ + 150, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7480860927152315, + 0.7363642384105955, + 0.735053333333333 + ], + "GT Power_0": [ + 0.1363841059602649, + 0.14888079470198673, + 0.1361333333333334 + ], + "IA Power_0": [ + 6.640841059602649, + 6.562364238410595, + 6.573233333333333 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.129112582781458, + 6.976907284768211, + 6.96094666666667 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.8093841059602654, + 0.808622516556292, + 0.7928866666666674 + ], + "GT Power_0": [ + 0.28927814569536425, + 0.29223178807947026, + 0.29253333333333337 + ], + "IA Power_0": [ + 7.144218543046361, + 6.835238410596024, + 6.881946666666663 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.822370860927151, + 7.558695364238411, + 7.451386666666669 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 151, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7442847682119202, + 0.7438874172185427, + 0.7681059602649003 + ], + "GT Power_0": [ + 0.148112582781457, + 0.16465562913907283, + 0.15446357615894038 + ], + "IA Power_0": [ + 6.955741721854303, + 6.751721854304637, + 6.732337748344375 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 7.375953642384106, + 7.1707417218542995, + 7.306046357615887 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 151, + 151 + ] + } + ] + }, + { + "bot": "BUILD131-A9", + "number": 4371, + "tests": [ + { + "DRAM Power_0": [ + 0.611132450331126, + 0.6129666666666661, + 0.60369536423841 + ], + "GT Power_0": [ + 0.04266225165562912, + 0.014446666666666668, + 0.016609271523178808 + ], + "IA Power_0": [ + 3.786423841059602, + 3.9435533333333326, + 3.761993377483443 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 4.039721854304635, + 4.170639999999999, + 3.915576158940398 + ], + "name": "Basic", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7573311258278145, + 0.7565960264900657, + 0.7433112582781455 + ], + "GT Power_0": [ + 0.11682781456953646, + 0.11653642384105964, + 0.11186754966887424 + ], + "IA Power_0": [ + 5.956741721854307, + 6.323801324503313, + 6.116417218543047 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.386556291390727, + 6.6612516556291395, + 6.435317880794702 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 151, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7585894039735099, + 0.741359999999999, + 0.7405629139072849 + ], + "GT Power_0": [ + 0.11244370860927151, + 0.11544666666666664, + 0.11405298013245041 + ], + "IA Power_0": [ + 6.048490066225164, + 6.400626666666665, + 6.0683245033112625 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.449284768211923, + 6.71677333333333, + 6.366278145695362 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 151, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.8032533333333337, + 0.8075199999999996, + 0.8132185430463579 + ], + "GT Power_0": [ + 0.2436866666666667, + 0.24258666666666662, + 0.24627814569536424 + ], + "IA Power_0": [ + 6.352953333333336, + 6.315673333333336, + 6.317774834437084 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.842366666666667, + 6.859379999999998, + 6.926675496688741 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7453973509933773, + 0.7461799999999998, + 0.7645866666666661 + ], + "GT Power_0": [ + 0.12198675496688736, + 0.12226000000000002, + 0.12536000000000005 + ], + "IA Power_0": [ + 6.458317880794701, + 6.324839999999999, + 6.123813333333335 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.787337748344372, + 6.628086666666665, + 6.578006666666668 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 151, + 150, + 150 + ] + } + ] + }, + { + "bot": "BUILD145-A9", + "number": 4370, + "tests": [ + { + "DRAM Power_0": [ + 0.6122933333333335, + 0.6180463576158935, + 0.6137933333333333 + ], + "GT Power_0": [ + 0.029099999999999984, + 0.014245033112582782, + 0.014259999999999995 + ], + "IA Power_0": [ + 3.611086666666666, + 3.335377483443708, + 3.7880599999999998 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 3.9570999999999996, + 3.6562582781456965, + 4.046633333333332 + ], + "name": "Basic", + "samples": [ + 150, + 151, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7456556291390726, + 0.7371666666666665, + 0.7458933333333327 + ], + "GT Power_0": [ + 0.1013112582781457, + 0.10270000000000001, + 0.09828666666666667 + ], + "IA Power_0": [ + 6.135331125827816, + 5.678266666666666, + 5.762766666666666 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.461218543046354, + 6.072253333333335, + 6.168426666666668 + ], + "name": "Video_720_MP4", + "samples": [ + 151, + 150, + 150 + ] + }, + { + "DRAM Power_0": [ + 0.7639799999999997, + 0.752533333333333, + 0.7456225165562915 + ], + "GT Power_0": [ + 0.0969266666666667, + 0.10263333333333341, + 0.09888079470198678 + ], + "IA Power_0": [ + 5.938973333333333, + 5.704066666666669, + 6.458218543046356 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.767099999999999, + 6.109180000000004, + 6.8249271523178825 + ], + "name": "Video_720_MP4_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.802746666666667, + 0.7935266666666668, + 0.7948807947019875 + ], + "GT Power_0": [ + 0.22629999999999992, + 0.21853333333333333, + 0.21982781456953654 + ], + "IA Power_0": [ + 6.4401933333333305, + 5.863193333333332, + 5.8522516556291375 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.983660000000003, + 6.398879999999998, + 6.37480132450331 + ], + "name": "Video_720_MP4_Underlay", + "samples": [ + 150, + 150, + 151 + ] + }, + { + "DRAM Power_0": [ + 0.7422466666666663, + 0.7418866666666659, + 0.741509933774834 + ], + "GT Power_0": [ + 0.10478, + 0.10322666666666674, + 0.10470198675496685 + ], + "IA Power_0": [ + 5.783240000000003, + 5.718759999999997, + 6.02598013245033 + ], + "Package Power Limit_0": [ + 65.0, + 65.0, + 65.0 + ], + "Processor Power_0": [ + 6.138493333333333, + 6.139393333333334, + 6.3845695364238395 + ], + "name": "Video_720_MP4_Underlay_Fullscreen", + "samples": [ + 150, + 150, + 151 + ] + } + ] + } + ] +} \ No newline at end of file
diff --git a/docs/android_dynamic_feature_modules.md b/docs/android_dynamic_feature_modules.md index 7401805b..70c8401f 100644 --- a/docs/android_dynamic_feature_modules.md +++ b/docs/android_dynamic_feature_modules.md
@@ -245,13 +245,19 @@ To make Foo useful, let's add some Java code to it. This section will walk you through the required steps. -First, define a module interface in the new file +First, define a module interface for Foo. This is accomplished by adding the +`@ModuleInterface` annotation to the Foo interface. This annotation +automatically creates a `FooModule` class that can be used later to install and +access the module. To do this, add the following in the new file `//chrome/android/features/foo/public/java/src/org/chromium/chrome/features/foo/Foo.java`: ```java package org.chromium.chrome.features.foo; +import org.chromium.components.module_installer.ModuleInterface; + /** Interface to call into Foo feature. */ +@ModuleInterface(module = "foo", impl = "org.chromium.chrome.features.FooImpl") public interface Foo { /** Magical function. */ void bar(); @@ -271,7 +277,9 @@ package org.chromium.chrome.features.foo; import org.chromium.base.Log; +import org.chromium.base.annotations.UsedByReflection; +@UsedByReflection("FooModule") public class FooImpl implements Foo { @Override public void bar() { @@ -280,58 +288,25 @@ } ``` -In order to get the Foo implementation depending on whether the Foo DFM -is present, we will add a module provider class handling that logic. For -this, create the file -`//chrome/android/features/foo/public/java/src/org/chromium/chrome/features/foo/FooModuleProvider.java` -and add: - -```java -package org.chromium.chrome.features.foo; - -/** Provides the Foo implementation. */ -public class FooModuleProvider { - private static Foo sFoo; - - /** - * Returns Foo implementation or null if Foo module is not installed. - */ - public static Foo getFoo { - if (sFoo == null) { - try { - sFoo = (Foo) Class - .forName("org.chromium.chrome.features.foo.FooImpl") - .newInstance(); - } catch (ClassNotFoundException | InstantiationException - | IllegalAccessException | IllegalArgumentException e) { - // Foo module is not installed. Leave sFoo as null. - } - } - return sFoo; - } -} -``` - You can then use this provider to access the module if it is installed. To test that, instantiate Foo and call `bar()` somewhere in Chrome: ```java -if (FooModuleProvider.getFoo() != null) { - FooModuleProvider.getFoo().bar(); +if (FooModule.isInstalled()) { + FooModule.getImpl().bar(); } else { Log.i("FOO", "module not installed"); } ``` -The interface and module provider have to be available regardless of whether the -Foo DFM is present. Therefore, put those classes into the base module. For this -create a list of those Java files in +The interface has to be available regardless of whether the Foo DFM is present. +Therefore, put those classes into the base module. For this create a list of +those Java files in `//chrome/android/features/foo/public/foo_public_java_sources.gni`: ```gn foo_public_java_sources = [ "//chrome/android/features/foo/public/java/src/org/chromium/chrome/features/foo/Foo.java", - "//chrome/android/features/foo/public/java/src/org/chromium/chrome/features/foo/FooModuleProvider.java", ] ``` @@ -516,8 +491,10 @@ import org.chromium.base.ContextUtils; import org.chromium.base.Log; +import org.chromium.base.annotations.UsedByReflection; import org.chromium.chrome.features.foo.R; +@UsedByReflection("FooModule") public class FooImpl implements Foo { @Override public void bar() { @@ -551,41 +528,19 @@ module as soon as possible regardless of whether the user is on a metered connection or whether they have turned updates off in the Play Store app. -To request a module on-demand we can make use of the `ModuleInstaller` from -`//components/module_installer/`. For this add, the following function to -`FooModuleProvider` in -`//chrome/android/features/foo/public/java/src/org/chromium/chrome/foo/FooModuleProvider.java`: +You can use the autogenerated module class to on-demand install the module like +so: ```java -/** - * On-demand install Foo module. - * @param onFinishedListener listener to be called when install has finished. - */ -public static installModule( - OnModuleInstallFinishedListener onFinishedListener) { - ModuleInstaller.install("foo", (success) -> { - if (success) { - assert getFoo() != null; - } - onFinishedListener.onFinished(success); - }); -} -``` - -Then, use this new function to request the module and call `bar()` on install -completion: - -```java -// Need to call init before accessing any modules. Can be called multiple times. -ModuleInstaller.init(); -FooModuleProvider.installModule((success) -> { - FooModuleProvider.getFoo().bar(); +FooModule.install((success) -> { + if (success) { + FooModule.getImpl().bar(); + } }); ``` **Optionally**, you can show UI telling the user about the install flow. For -this, add the function below to `FooModuleProvider`. Then use -`installModuleWithUi(...)` instead of `installModule(...)`. Note, it is possible +this, add a function like the one below. Note, it is possible to only show either one of the install, failure and success UI or any combination of the three. @@ -609,7 +564,7 @@ }); // At the time of writing, shows toast informing user about install start. ui.showInstallStartUi(); - installModule( + FooModule.install( (success) -> { if (!success) { // At the time of writing, shows infobar allowing user @@ -657,7 +612,7 @@ To defer install Foo do the following: ```java -ModuleInstaller.installDeferred("foo"); +FooModule.installDeferred(); ```
diff --git a/extensions/browser/api/execute_code_function.cc b/extensions/browser/api/execute_code_function.cc index 14afed3..0e77ada9 100644 --- a/extensions/browser/api/execute_code_function.cc +++ b/extensions/browser/api/execute_code_function.cc
@@ -230,7 +230,7 @@ // DCHECK. bool might_require_localization = ShouldInsertCSS() && !extension_id.empty(); - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; const ComponentExtensionResourceManager* component_extension_resource_manager = ExtensionsBrowserClient::Get() @@ -238,11 +238,10 @@ if (component_extension_resource_manager && component_extension_resource_manager->IsComponentExtensionResource( resource_.extension_root(), resource_.relative_path(), - &resource_info)) { - DCHECK(!resource_info.gzipped); + &resource_id)) { + DCHECK(!ui::ResourceBundle::GetSharedInstance().IsGzipped(resource_id)); base::StringPiece resource = - ui::ResourceBundle::GetSharedInstance().GetRawDataResource( - resource_info.resource_id); + ui::ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id); std::unique_ptr<std::string> data( new std::string(resource.data(), resource.size()));
diff --git a/extensions/browser/component_extension_resource_manager.h b/extensions/browser/component_extension_resource_manager.h index 605fc6fc..b8a1f55 100644 --- a/extensions/browser/component_extension_resource_manager.h +++ b/extensions/browser/component_extension_resource_manager.h
@@ -15,17 +15,6 @@ namespace extensions { -// Information about a bundled component extension resource. -struct ComponentExtensionResourceInfo { - // The resource's ID. - int resource_id = 0; - - // Whether the resource is stored gzipped. Note that only serving from the - // chrome-extensions:// scheme can support gzipped resources. User scripts, - // injected scripts and images may not be gzipped. - bool gzipped = false; -}; - // This class manages which extension resources actually come from // the resource bundle. class ComponentExtensionResourceManager { @@ -39,7 +28,7 @@ virtual bool IsComponentExtensionResource( const base::FilePath& extension_path, const base::FilePath& resource_path, - ComponentExtensionResourceInfo* resource_info) const = 0; + int* resource_id) const = 0; // Returns the i18n template replacements for a component extension if they // exist, or nullptr otherwise. If non-null, the returned value must remain
diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc index 9732e5e..2e03d9d8 100644 --- a/extensions/browser/extension_protocols.cc +++ b/extensions/browser/extension_protocols.cc
@@ -47,7 +47,6 @@ #include "content/public/common/resource_type.h" #include "crypto/secure_hash.h" #include "crypto/sha2.h" -#include "extensions/browser/component_extension_resource_manager.h" #include "extensions/browser/content_verifier.h" #include "extensions/browser/content_verify_job.h" #include "extensions/browser/extension_navigation_ui_data.h" @@ -870,13 +869,13 @@ // Component extension resources may be part of the embedder's resource // files, for example component_extension_resources.pak in Chrome. - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; const base::FilePath bundle_resource_path = ExtensionsBrowserClient::Get()->GetBundleResourcePath( - request, directory_path, &resource_info); + request, directory_path, &resource_id); if (!bundle_resource_path.empty()) { ExtensionsBrowserClient::Get()->LoadResourceFromResourceBundle( - request, std::move(loader), bundle_resource_path, resource_info, + request, std::move(loader), bundle_resource_path, resource_id, content_security_policy, std::move(client), send_cors_header); return; }
diff --git a/extensions/browser/extension_user_script_loader.cc b/extensions/browser/extension_user_script_loader.cc index 3c95b804..9d9e9b1b 100644 --- a/extensions/browser/extension_user_script_loader.cc +++ b/extensions/browser/extension_user_script_loader.cc
@@ -95,15 +95,15 @@ script_file->extension_root(), script_file->relative_path(), ExtensionResource::SYMLINKS_MUST_RESOLVE_WITHIN_ROOT); if (path.empty()) { - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; if (ExtensionsBrowserClient::Get() ->GetComponentExtensionResourceManager() ->IsComponentExtensionResource(script_file->extension_root(), script_file->relative_path(), - &resource_info)) { - DCHECK(!resource_info.gzipped); + &resource_id)) { const ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); - content = rb.GetRawDataResource(resource_info.resource_id).as_string(); + DCHECK(!rb.IsGzipped(resource_id)); + content = rb.GetRawDataResource(resource_id).as_string(); } else { LOG(WARNING) << "Failed to get file path to " << script_file->relative_path().value() << " from "
diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h index 6d34f2d..366c593b 100644 --- a/extensions/browser/extensions_browser_client.h +++ b/extensions/browser/extensions_browser_client.h
@@ -57,7 +57,6 @@ namespace extensions { -struct ComponentExtensionResourceInfo; class ComponentExtensionResourceManager; class Extension; class ExtensionCache; @@ -169,7 +168,7 @@ virtual base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const = 0; + int* resource_id) const = 0; // Creates and starts a URLLoader to load an extension resource from the // embedder's resource bundle (.pak) files. Used for component extensions. @@ -177,7 +176,7 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) = 0;
diff --git a/extensions/browser/image_loader.cc b/extensions/browser/image_loader.cc index 45aecaa..ae4efad 100644 --- a/extensions/browser/image_loader.cc +++ b/extensions/browser/image_loader.cc
@@ -111,16 +111,16 @@ DCHECK(it->resource.relative_path().empty() || extension->path() == it->resource.extension_root()); - ComponentExtensionResourceInfo resource_info; + int resource_id = 0; if (extension->location() == Manifest::COMPONENT) { const extensions::ComponentExtensionResourceManager* manager = extensions::ExtensionsBrowserClient::Get() ->GetComponentExtensionResourceManager(); - if (manager && manager->IsComponentExtensionResource( - extension->path(), it->resource.relative_path(), - &resource_info)) { - DCHECK(!resource_info.gzipped); - LoadResourceOnUIThread(resource_info.resource_id, &bitmaps[i]); + if (manager && + manager->IsComponentExtensionResource( + extension->path(), it->resource.relative_path(), &resource_id)) { + DCHECK(!ui::ResourceBundle::GetSharedInstance().IsGzipped(resource_id)); + LoadResourceOnUIThread(resource_id, &bitmaps[i]); } } }
diff --git a/extensions/browser/test_extensions_browser_client.cc b/extensions/browser/test_extensions_browser_client.cc index e604f44..0f2af5b4 100644 --- a/extensions/browser/test_extensions_browser_client.cc +++ b/extensions/browser/test_extensions_browser_client.cc
@@ -7,7 +7,6 @@ #include "base/values.h" #include "build/build_config.h" #include "content/public/browser/browser_context.h" -#include "extensions/browser/component_extension_resource_manager.h" #include "extensions/browser/extension_host_delegate.h" #include "extensions/browser/test_runtime_api_delegate.h" #include "extensions/browser/updater/null_extension_cache.h" @@ -136,8 +135,8 @@ base::FilePath TestExtensionsBrowserClient::GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const { - *resource_info = {}; + int* resource_id) const { + *resource_id = 0; return base::FilePath(); } @@ -145,7 +144,7 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) {
diff --git a/extensions/browser/test_extensions_browser_client.h b/extensions/browser/test_extensions_browser_client.h index f2df500..10810a5 100644 --- a/extensions/browser/test_extensions_browser_client.h +++ b/extensions/browser/test_extensions_browser_client.h
@@ -90,12 +90,12 @@ base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const override; + int* resource_id) const override; void LoadResourceFromResourceBundle( const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) override;
diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/browser/updater/extension_downloader.cc index eb5df4d..f6d4cbb 100644 --- a/extensions/browser/updater/extension_downloader.cc +++ b/extensions/browser/updater/extension_downloader.cc
@@ -274,7 +274,19 @@ // Use a zero version to ensure that a pending extension will always // be updated, and thus installed (assuming all extensions have // non-zero versions). - base::Version version("0.0.0.0"); + return AddPendingExtensionWithVersion( + id, update_url, install_location, is_corrupt_reinstall, request_id, + fetch_priority, base::Version("0.0.0.0")); +} + +bool ExtensionDownloader::AddPendingExtensionWithVersion( + const std::string& id, + const GURL& update_url, + Manifest::Location install_location, + bool is_corrupt_reinstall, + int request_id, + ManifestFetchData::FetchPriority fetch_priority, + base::Version version) { DCHECK(version.IsValid()); ExtraParams extra; if (is_corrupt_reinstall)
diff --git a/extensions/browser/updater/extension_downloader.h b/extensions/browser/updater/extension_downloader.h index e30f5a88..05f7ffb1 100644 --- a/extensions/browser/updater/extension_downloader.h +++ b/extensions/browser/updater/extension_downloader.h
@@ -99,6 +99,14 @@ int request_id, ManifestFetchData::FetchPriority fetch_priority); + // Check AddPendingExtensionWithVersion with the version set as "0.0.0.0". + bool AddPendingExtension(const std::string& id, + const GURL& update_url, + Manifest::Location install_source, + bool is_corrupt_reinstall, + int request_id, + ManifestFetchData::FetchPriority fetch_priority); + // Adds extension |id| to the list of extensions to check for updates. // Returns false if the |id| can't be updated due to invalid details. // In that case, no callbacks will be performed on the |delegate_|. @@ -108,13 +116,17 @@ // parameter is used to indicate in the request that we detected corruption in // the local copy of the extension and we want to perform a reinstall of it. // |fetch_priority| parameter notifies the downloader the priority of this - // extension update (either foreground or background). - bool AddPendingExtension(const std::string& id, - const GURL& update_url, - Manifest::Location install_source, - bool is_corrupt_reinstall, - int request_id, - ManifestFetchData::FetchPriority fetch_priority); + // extension update (either foreground or background). The |version| + // parameter specifies the version of the downloaded crx file, + // equals to 0.0.0.0 if there is no crx file. + bool AddPendingExtensionWithVersion( + const std::string& id, + const GURL& update_url, + Manifest::Location install_source, + bool is_corrupt_reinstall, + int request_id, + ManifestFetchData::FetchPriority fetch_priority, + base::Version version); // Schedules a fetch of the manifest of all the extensions added with // AddExtension() and AddPendingExtension().
diff --git a/extensions/browser/updater/extension_downloader_unittest.cc b/extensions/browser/updater/extension_downloader_unittest.cc index b52d13c..32dcbc1 100644 --- a/extensions/browser/updater/extension_downloader_unittest.cc +++ b/extensions/browser/updater/extension_downloader_unittest.cc
@@ -13,6 +13,7 @@ using testing::_; using testing::AnyNumber; +using testing::DoAll; using testing::Return; using testing::Sequence; using testing::SetArgPointee;
diff --git a/extensions/shell/browser/shell_extensions_browser_client.cc b/extensions/shell/browser/shell_extensions_browser_client.cc index f6f77b7..13531dc 100644 --- a/extensions/shell/browser/shell_extensions_browser_client.cc +++ b/extensions/shell/browser/shell_extensions_browser_client.cc
@@ -18,7 +18,6 @@ #include "content/public/browser/resource_request_info.h" #include "content/public/common/user_agent.h" #include "extensions/browser/api/extensions_api_client.h" -#include "extensions/browser/component_extension_resource_manager.h" #include "extensions/browser/core_extensions_browser_api_provider.h" #include "extensions/browser/event_router.h" #include "extensions/browser/mojo/interface_registration.h" @@ -134,8 +133,8 @@ base::FilePath ShellExtensionsBrowserClient::GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const { - *resource_info = {}; + int* resource_id) const { + *resource_id = 0; return base::FilePath(); } @@ -143,7 +142,7 @@ const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) {
diff --git a/extensions/shell/browser/shell_extensions_browser_client.h b/extensions/shell/browser/shell_extensions_browser_client.h index 11e86b9..7005ae2 100644 --- a/extensions/shell/browser/shell_extensions_browser_client.h +++ b/extensions/shell/browser/shell_extensions_browser_client.h
@@ -62,12 +62,12 @@ base::FilePath GetBundleResourcePath( const network::ResourceRequest& request, const base::FilePath& extension_resources_path, - ComponentExtensionResourceInfo* resource_info) const override; + int* resource_id) const override; void LoadResourceFromResourceBundle( const network::ResourceRequest& request, network::mojom::URLLoaderRequest loader, const base::FilePath& resource_relative_path, - const ComponentExtensionResourceInfo& resource_info, + int resource_id, const std::string& content_security_policy, network::mojom::URLLoaderClientPtr client, bool send_cors_header) override;
diff --git a/gpu/command_buffer/client/transfer_buffer_unittest.cc b/gpu/command_buffer/client/transfer_buffer_unittest.cc index 002bda4..8ca8609 100644 --- a/gpu/command_buffer/client/transfer_buffer_unittest.cc +++ b/gpu/command_buffer/client/transfer_buffer_unittest.cc
@@ -20,6 +20,7 @@ using ::testing::_; using ::testing::AtMost; +using ::testing::DoAll; using ::testing::Invoke; using ::testing::Return; using ::testing::SetArgPointee;
diff --git a/gpu/command_buffer/service/command_buffer_service_unittest.cc b/gpu/command_buffer/service/command_buffer_service_unittest.cc index 9237e0b..fc94e3db 100644 --- a/gpu/command_buffer/service/command_buffer_service_unittest.cc +++ b/gpu/command_buffer/service/command_buffer_service_unittest.cc
@@ -17,6 +17,7 @@ namespace gpu { using testing::_; +using testing::DoAll; using testing::Mock; using testing::Return; using testing::Sequence;
diff --git a/headless/OWNERS b/headless/OWNERS index 4686edf..d6a1011 100644 --- a/headless/OWNERS +++ b/headless/OWNERS
@@ -5,6 +5,8 @@ dgozman@chromium.org pfeldman@chromium.org caseq@chromium.org +johannes@chromium.org +kvitekp@chromium.org # Emeritus: altimin@chromium.org
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index ea434d3..b4bf6a4 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -1478,7 +1478,7 @@ <message name="IDS_IOS_SHARE_MENU_REQUEST_DESKTOP_SITE" desc="Text label to the Request Desktop Site action in the extension menu that request the desktop version of the current page. [iOS only]"> Request Desktop Site </message> - <message name="IDS_IOS_SHARE_MENU_REQUEST_MOBILE_SITE" desc="Text label to the Request Desktop Site action in the extension menu that request the desktop version of the current page. [iOS only]"> + <message name="IDS_IOS_SHARE_MENU_REQUEST_MOBILE_SITE" desc="Text label to the Request Mobile Site action in the extension menu that request the mobile version of the current page. [iOS only]"> Request Mobile Site </message> <message name="IDS_IOS_SHARE_MESSAGES_COMPLETE" desc="Message shown when message share has been sent. [Length: Unknown. Keep it short.] [iOS only]">
diff --git a/ios/chrome/browser/about_flags.mm b/ios/chrome/browser/about_flags.mm index dcd496c..7f399f6 100644 --- a/ios/chrome/browser/about_flags.mm +++ b/ios/chrome/browser/about_flags.mm
@@ -586,6 +586,9 @@ {"lock-bottom-toolbar", flag_descriptions::kLockBottomToolbarName, flag_descriptions::kLockBottomToolbarDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(fullscreen::features::kLockBottomToolbar)}, + {"identity-disc", flag_descriptions::kIdentityDiscName, + flag_descriptions::kIdentityDiscDescription, flags_ui::kOsIos, + FEATURE_VALUE_TYPE(kIdentityDisc)}, }; // Add all switches from experimental flags to |command_line|.
diff --git a/ios/chrome/browser/autofill/form_suggestion_label.mm b/ios/chrome/browser/autofill/form_suggestion_label.mm index 603a65d..658473b6 100644 --- a/ios/chrome/browser/autofill/form_suggestion_label.mm +++ b/ios/chrome/browser/autofill/form_suggestion_label.mm
@@ -13,7 +13,7 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #import "components/autofill/ios/browser/form_suggestion.h" #import "ios/chrome/browser/autofill/form_suggestion_client.h" #include "ios/chrome/browser/ui/util/ui_util.h"
diff --git a/ios/chrome/browser/browser_about_rewriter.cc b/ios/chrome/browser/browser_about_rewriter.cc index 3145942..0b8bce8 100644 --- a/ios/chrome/browser/browser_about_rewriter.cc +++ b/ios/chrome/browser/browser_about_rewriter.cc
@@ -36,7 +36,10 @@ *url = url_formatter::FixupURL(url->possibly_invalid_spec(), std::string()); // Check that about: URLs are fixed up to chrome: by url_formatter::FixupURL. - DCHECK((*url == url::kAboutBlankURL) || !url->SchemeIs(url::kAboutScheme)); + // 'about:blank' is special-cased in various places in the code so it + // shouldn't be transformed. + DCHECK(!url->SchemeIs(url::kAboutScheme) || + (url->path() == url::kAboutBlankPath)); // url_formatter::FixupURL translates about:foo into chrome://foo/. if (!url->SchemeIs(kChromeUIScheme))
diff --git a/ios/chrome/browser/browser_about_rewriter_unittest.cc b/ios/chrome/browser/browser_about_rewriter_unittest.cc index 6d25552..2ce189cc 100644 --- a/ios/chrome/browser/browser_about_rewriter_unittest.cc +++ b/ios/chrome/browser/browser_about_rewriter_unittest.cc
@@ -20,7 +20,8 @@ EXPECT_FALSE(WillHandleWebBrowserAboutURL(&url, nil)); } -// Test that about|chrome://about is rewritten to chrome-urls. +// Test that about|chrome://about is rewritten to chrome-urls and about:blank +// is not. TEST_F(BrowserAboutRewriterTest, AboutTest) { GURL url = GURL("about:about"); EXPECT_FALSE(WillHandleWebBrowserAboutURL(&url, /*browser_state=*/nullptr)); @@ -29,6 +30,10 @@ url = GURL("chrome://about/"); EXPECT_FALSE(WillHandleWebBrowserAboutURL(&url, /*browser_state=*/nullptr)); EXPECT_EQ(url, GURL("chrome://chrome-urls/")); + + url = GURL("about:blank?for="); + EXPECT_FALSE(WillHandleWebBrowserAboutURL(&url, /*browser_state=*/nullptr)); + EXPECT_EQ(url, GURL("about:blank?for=")); } // Test that about|chrome://sync is rewritten to sync-internals.
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/ios_chrome_flag_descriptions.cc index 835ebdf..b7fceb4 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.cc
@@ -278,6 +278,10 @@ "When enabled History inserts and deletes history items in the same " "BatchUpdates block."; +const char kIdentityDiscName[] = "Identity Disc"; +const char kIdentityDiscDescription[] = + "Enables Identity Disc, profile avatar icon button in toolbar."; + const char kInfobarUIRebootName[] = "Infobar UI Reboot"; const char kInfobarUIRebootDescription[] = "When enabled, Infobar will use the new UI.";
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.h b/ios/chrome/browser/ios_chrome_flag_descriptions.h index cf6c92bb..3e07954 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.h
@@ -227,6 +227,11 @@ extern const char kHistoryBatchUpdatesFilterName[]; extern const char kHistoryBatchUpdatesFilterDescription[]; +// Title and description for the flag to display current user identity on +// New Tab Page. +extern const char kIdentityDiscName[]; +extern const char kIdentityDiscDescription[]; + // Title and description for the flag to enable the new UI Reboot on Infobars. extern const char kInfobarUIRebootName[]; extern const char kInfobarUIRebootDescription[];
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h index de74a1a..db5097a 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.h
@@ -20,6 +20,7 @@ namespace password_manager { class PasswordFormManagerForUI; +class PasswordManagerDriver; } namespace web { @@ -73,7 +74,7 @@ bool has_generated_password, bool is_update) override; void HideManualFallbackForSaving() override; - void FocusedInputChanged(const url::Origin& last_committed_origin, + void FocusedInputChanged(password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) override; bool PromptUserToChooseCredentials(
diff --git a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm index e86b33a4..3199286 100644 --- a/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm +++ b/ios/chrome/browser/passwords/ios_chrome_password_manager_client.mm
@@ -15,6 +15,7 @@ #include "components/password_manager/core/browser/password_form_manager_for_ui.h" #include "components/password_manager/core/browser/password_manager.h" #include "components/password_manager/core/browser/password_manager_constants.h" +#include "components/password_manager/core/browser/password_manager_driver.h" #include "components/password_manager/core/browser/password_manager_internals_service.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/browser/password_requirements_service.h" @@ -121,7 +122,7 @@ } void IOSChromePasswordManagerClient::FocusedInputChanged( - const url::Origin& last_committed_origin, + password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) { NOTIMPLEMENTED();
diff --git a/ios/chrome/browser/payments/payment_request.h b/ios/chrome/browser/payments/payment_request.h index 46a87e4..c6427a9 100644 --- a/ios/chrome/browser/payments/payment_request.h +++ b/ios/chrome/browser/payments/payment_request.h
@@ -15,7 +15,7 @@ #include "base/memory/weak_ptr.h" #include "components/autofill/core/browser/address_normalization_manager.h" #include "components/autofill/core/browser/address_normalizer_impl.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/journey_logger.h" #include "components/payments/core/payment_instrument.h" #include "components/payments/core/payment_options_provider.h"
diff --git a/ios/chrome/browser/payments/payment_request.mm b/ios/chrome/browser/payments/payment_request.mm index 03ffd65a..86824cd4 100644 --- a/ios/chrome/browser/payments/payment_request.mm +++ b/ios/chrome/browser/payments/payment_request.mm
@@ -13,7 +13,7 @@ #include "base/logging.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/region_data_loader_impl.h" #include "components/autofill/core/browser/validation.h"
diff --git a/ios/chrome/browser/payments/payment_request_util.mm b/ios/chrome/browser/payments/payment_request_util.mm index aecf6768..c3d4eb6 100644 --- a/ios/chrome/browser/payments/payment_request_util.mm +++ b/ios/chrome/browser/payments/payment_request_util.mm
@@ -9,8 +9,8 @@ #include "base/strings/string_split.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/phone_number_i18n.h"
diff --git a/ios/chrome/browser/payments/payment_response_helper.h b/ios/chrome/browser/payments/payment_response_helper.h index 21afcd1..9398ecb9 100644 --- a/ios/chrome/browser/payments/payment_response_helper.h +++ b/ios/chrome/browser/payments/payment_response_helper.h
@@ -11,7 +11,7 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/payment_instrument.h" #include "components/payments/core/payment_response.h" #include "components/payments/core/web_payment_request.h"
diff --git a/ios/chrome/browser/payments/payment_response_helper_unittest.mm b/ios/chrome/browser/payments/payment_response_helper_unittest.mm index 0eb5d55..8cd7f317a 100644 --- a/ios/chrome/browser/payments/payment_response_helper_unittest.mm +++ b/ios/chrome/browser/payments/payment_response_helper_unittest.mm
@@ -13,9 +13,9 @@ #include "base/strings/utf_string_conversions.h" #include "base/test/scoped_task_environment.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/payments/core/basic_card_response.h" #include "components/payments/core/payment_request_data_util.h"
diff --git a/ios/chrome/browser/reading_list/offline_page_tab_helper.mm b/ios/chrome/browser/reading_list/offline_page_tab_helper.mm index 6bec2f8..e843132 100644 --- a/ios/chrome/browser/reading_list/offline_page_tab_helper.mm +++ b/ios/chrome/browser/reading_list/offline_page_tab_helper.mm
@@ -133,10 +133,9 @@ } DCHECK(mime); presenting_offline_page_ = true; - NSString* ns_data = base::SysUTF8ToNSString(data); + NSData* ns_data = [NSData dataWithBytes:data.c_str() length:data.size()]; offline_navigation_triggered_ = url; - web_state_->LoadData([ns_data dataUsingEncoding:NSUTF8StringEncoding], mime, - url); + web_state_->LoadData(ns_data, mime, url); } void OfflinePageTabHelper::DidStartNavigation(web::WebState* web_state,
diff --git a/ios/chrome/browser/signin/feature_flags.h b/ios/chrome/browser/signin/feature_flags.h index dc82b280..00237400 100644 --- a/ios/chrome/browser/signin/feature_flags.h +++ b/ios/chrome/browser/signin/feature_flags.h
@@ -10,4 +10,7 @@ // Feature flag to enable NSURLSession for GAIAAuthFetcherIOS. extern const base::Feature kUseNSURLSessionForGaiaSigninRequests; +// Feature flag to enable display of current user identity on New Tab Page. +extern const base::Feature kIdentityDisc; + #endif // IOS_CHROME_BROWSER_SIGNIN_FEATURE_FLAGS_H_
diff --git a/ios/chrome/browser/signin/feature_flags.mm b/ios/chrome/browser/signin/feature_flags.mm index 6374db8..efdcec4 100644 --- a/ios/chrome/browser/signin/feature_flags.mm +++ b/ios/chrome/browser/signin/feature_flags.mm
@@ -13,3 +13,6 @@ // See: http://crbug.com/939508. const base::Feature kUseNSURLSessionForGaiaSigninRequests{ "UseNSURLSessionForGaiaSigninRequests", base::FEATURE_DISABLED_BY_DEFAULT}; + +const base::Feature kIdentityDisc{"IdentityDisc", + base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/address_coordinator.mm b/ios/chrome/browser/ui/autofill/manual_fill/address_coordinator.mm index 9e0f015..59bba62 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/address_coordinator.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/address_coordinator.mm
@@ -6,7 +6,7 @@ #include "base/memory/ref_counted.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/ios/browser/autofill_driver_ios.h" #import "components/autofill/ios/browser/personal_data_manager_observer_bridge.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/address_form.mm b/ios/chrome/browser/ui/autofill/manual_fill/address_form.mm index 8fc22e4..818842a 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/address_form.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/address_form.mm
@@ -6,7 +6,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/chrome/browser/application_context.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/address_form_unittest.mm b/ios/chrome/browser/ui/autofill/manual_fill/address_form_unittest.mm index 7e68c8b..d5c15af7 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/address_form_unittest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/address_form_unittest.mm
@@ -6,8 +6,8 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/chrome/browser/application_context.h" #include "testing/platform_test.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/address_mediator.mm b/ios/chrome/browser/ui/autofill/manual_fill/address_mediator.mm index 2b87d06a..cdd8491 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/address_mediator.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/address_mediator.mm
@@ -7,7 +7,7 @@ #include <vector> #include "base/metrics/user_metrics.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #import "ios/chrome/browser/ui/autofill/manual_fill/action_cell.h" #import "ios/chrome/browser/ui/autofill/manual_fill/address.h" #import "ios/chrome/browser/ui/autofill/manual_fill/address_consumer.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/card_coordinator.mm b/ios/chrome/browser/ui/autofill/manual_fill/card_coordinator.mm index cea7351..ff7bef2 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/card_coordinator.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/card_coordinator.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/autofill/manual_fill/card_coordinator.h" #include "base/memory/ref_counted.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/ios/browser/autofill_driver_ios.h" #import "components/autofill/ios/browser/personal_data_manager_observer_bridge.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/card_mediator.mm b/ios/chrome/browser/ui/autofill/manual_fill/card_mediator.mm index 12522ec..5369ee1 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/card_mediator.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/card_mediator.mm
@@ -10,7 +10,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #import "ios/chrome/browser/ui/autofill/manual_fill/action_cell.h" #import "ios/chrome/browser/ui/autofill/manual_fill/card_consumer.h" #import "ios/chrome/browser/ui/autofill/manual_fill/card_list_delegate.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm index 2f71fe0f..e3748a0 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/card_view_controller_egtest.mm
@@ -10,7 +10,7 @@ #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/common/autofill_features.h" #include "components/keyed_service/core/service_access_type.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form.mm b/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form.mm index 6916af3..055a5f6 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form.mm
@@ -7,7 +7,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #import "components/autofill/ios/browser/credit_card_util.h" #include "ios/chrome/browser/application_context.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form_unittest.mm b/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form_unittest.mm index f91ba28..8b5c3c6 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form_unittest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/credit_card_form_unittest.mm
@@ -6,7 +6,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "testing/platform_test.h" #include "url/gurl.h"
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.h b/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.h index 4599928..70dbf671 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.h +++ b/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.h
@@ -11,7 +11,7 @@ #include <vector> #include "base/macros.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/full_card_request.h" // Obj-C delegate to receive the success or failure result, when asking credit
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.mm b/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.mm index 5efbf09..5aa41ed6 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.mm
@@ -7,7 +7,7 @@ #include "base/containers/adapters.h" #include "base/strings/string16.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/form_structure.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester.mm b/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester.mm index 6ccce5b..6b4ec62 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester.mm
@@ -6,7 +6,7 @@ #include <vector> -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/ios/browser/autofill_driver_ios.h" #import "ios/chrome/browser/ui/autofill/manual_fill/full_card_request_result_delegate_bridge.h" #include "ios/chrome/browser/ui/payments/full_card_requester.h"
diff --git a/ios/chrome/browser/ui/infobars/BUILD.gn b/ios/chrome/browser/ui/infobars/BUILD.gn index b1639ad..f279795c 100644 --- a/ios/chrome/browser/ui/infobars/BUILD.gn +++ b/ios/chrome/browser/ui/infobars/BUILD.gn
@@ -30,6 +30,7 @@ source_set("public") { sources = [ + "infobar_container.h", "infobar_positioner.h", ] }
diff --git a/ios/chrome/browser/ui/infobars/coordinators/BUILD.gn b/ios/chrome/browser/ui/infobars/coordinators/BUILD.gn index 12eb5e1..079f018 100644 --- a/ios/chrome/browser/ui/infobars/coordinators/BUILD.gn +++ b/ios/chrome/browser/ui/infobars/coordinators/BUILD.gn
@@ -24,6 +24,7 @@ "//ios/chrome/browser/ui/coordinators:chrome_coordinators", "//ios/chrome/browser/ui/fullscreen", "//ios/chrome/browser/ui/infobars:infobars_ui", + "//ios/chrome/browser/ui/infobars:public", "//ios/chrome/browser/ui/infobars/banners", "//ios/chrome/browser/ui/infobars/modals", "//ios/chrome/browser/ui/infobars/presentation",
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm index 3362ff8b..b80eb69 100644 --- a/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm +++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_confirm_coordinator.mm
@@ -9,6 +9,7 @@ #include "ios/chrome/browser/infobars/infobar_controller_delegate.h" #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.h" #import "ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h" +#import "ios/chrome/browser/ui/infobars/infobar_container.h" #import "ios/chrome/browser/ui/infobars/modals/infobar_modal_view_controller.h" #if !defined(__has_feature) || !__has_feature(objc_arc) @@ -63,6 +64,8 @@ // RemoveInfoBar() will delete the InfobarIOS that owns this Coordinator // from memory. self.delegate->RemoveInfoBar(); + _confirmInfobarDelegate = nil; + [self.infobarContainer childCoordinatorStopped]; } }
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.h b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.h index ddd8665..5acb747 100644 --- a/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.h +++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.h
@@ -13,6 +13,7 @@ @protocol ApplicationCommands; @protocol InfobarBadgeUIDelegate; +@protocol InfobarContainer; @class InfobarBannerTransitionDriver; @class InfobarBannerViewController; @@ -84,6 +85,9 @@ // The dispatcher for this Coordinator. @property(nonatomic, weak) id<ApplicationCommands> dispatcher; +// The InfobarContainer for this InfobarCoordinator. +@property(nonatomic, weak) id<InfobarContainer> infobarContainer; + // YES if an InfobarBanner is being presented. @property(nonatomic, assign, getter=isPresentingInfobarBanner) BOOL presentingInfobarBanner;
diff --git a/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm b/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm index 1d87991..0a9afd07 100644 --- a/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm +++ b/ios/chrome/browser/ui/infobars/coordinators/infobar_password_coordinator.mm
@@ -12,6 +12,7 @@ #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_view_controller.h" #import "ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator_implementation.h" #import "ios/chrome/browser/ui/infobars/infobar_badge_ui_delegate.h" +#import "ios/chrome/browser/ui/infobars/infobar_container.h" #import "ios/chrome/browser/ui/infobars/modals/infobar_password_modal_delegate.h" #import "ios/chrome/browser/ui/infobars/modals/infobar_password_table_view_controller.h" @@ -87,6 +88,8 @@ // RemoveInfoBar() will delete the InfobarIOS that owns this Coordinator // from memory. self.delegate->RemoveInfoBar(); + _passwordInfoBarDelegate = nil; + [self.infobarContainer childCoordinatorStopped]; } }
diff --git a/ios/chrome/browser/ui/infobars/infobar_container.h b/ios/chrome/browser/ui/infobars/infobar_container.h new file mode 100644 index 0000000..e34834fd --- /dev/null +++ b/ios/chrome/browser/ui/infobars/infobar_container.h
@@ -0,0 +1,22 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_UI_INFOBARS_INFOBAR_CONTAINER_H_ +#define IOS_CHROME_BROWSER_UI_INFOBARS_INFOBAR_CONTAINER_H_ + +#import <Foundation/Foundation.h> + +// Protocol for the InfobarCoordinators to communicate with the InfobarContainer +// Coordinator. +@protocol InfobarContainer + +// Informs the InfobarContainer Coordinator that its child coordinator has +// stopped. +// TODO(crbug.com/961343): Add support to indicate which Coordinator has +// stopped. +- (void)childCoordinatorStopped; + +@end + +#endif // IOS_CHROME_BROWSER_UI_INFOBARS_INFOBAR_CONTAINER_H_
diff --git a/ios/chrome/browser/ui/infobars/infobar_container_coordinator.mm b/ios/chrome/browser/ui/infobars/infobar_container_coordinator.mm index 0a96a79..baa3abd 100644 --- a/ios/chrome/browser/ui/infobars/infobar_container_coordinator.mm +++ b/ios/chrome/browser/ui/infobars/infobar_container_coordinator.mm
@@ -13,6 +13,7 @@ #import "ios/chrome/browser/ui/fullscreen/fullscreen_controller_factory.h" #import "ios/chrome/browser/ui/infobars/coordinators/infobar_coordinator.h" #import "ios/chrome/browser/ui/infobars/infobar_constants.h" +#import "ios/chrome/browser/ui/infobars/infobar_container.h" #import "ios/chrome/browser/ui/infobars/infobar_container_consumer.h" #include "ios/chrome/browser/ui/infobars/infobar_container_mediator.h" #import "ios/chrome/browser/ui/infobars/infobar_feature.h" @@ -24,7 +25,8 @@ #error "This file requires ARC support." #endif -@interface InfobarContainerCoordinator () <InfobarContainerConsumer> +@interface InfobarContainerCoordinator () <InfobarContainer, + InfobarContainerConsumer> @property(nonatomic, assign) WebStateList* webStateList; @@ -176,6 +178,7 @@ infobarCoordinator.browserState = self.browserState; infobarCoordinator.baseViewController = self.baseViewController; infobarCoordinator.dispatcher = self.dispatcher; + infobarCoordinator.infobarContainer = self; if (!infobarCoordinator.bannerWasPresented) [infobarCoordinator presentInfobarBannerAnimated:YES completion:nil]; self.infobarViewController = infobarCoordinator.bannerViewController; @@ -203,6 +206,15 @@ // since we use autolayout for the contained Infobars. } +#pragma mark InfobarContainer + +- (void)childCoordinatorStopped { + DCHECK(IsInfobarUIRebootEnabled()); + // TODO(crbug.com/961343): When more than one InfobarCoordinator can exist + // concurrently, delete only the one that stopped. + [self.childCoordinators removeAllObjects]; +} + #pragma mark - InfobarCommands - (void)displayModalInfobar {
diff --git a/ios/chrome/browser/ui/infobars/infobar_container_coordinator_unittest.mm b/ios/chrome/browser/ui/infobars/infobar_container_coordinator_unittest.mm index 1341263..ccbc304 100644 --- a/ios/chrome/browser/ui/infobars/infobar_container_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/infobars/infobar_container_coordinator_unittest.mm
@@ -328,3 +328,30 @@ })); ASSERT_FALSE([infobar_container_coordinator_ isPresentingInfobarBanner]); } + +// Tests that the ChildCoordinator is deleted once it stops. +// TODO(crbug.com/961343): Update test when more than one Child Coordinator is +// supported. +TEST_F(InfobarContainerCoordinatorTest, TestInfobarChildCoordinatorCount) { + AddInfobar(); + + EXPECT_TRUE(base::test::ios::WaitUntilConditionOrTimeout( + base::test::ios::kWaitForUIElementTimeout, ^bool { + return [infobar_container_coordinator_ isPresentingInfobarBanner]; + })); + ASSERT_TRUE([infobar_container_coordinator_ isPresentingInfobarBanner]); + + ASSERT_EQ(NSUInteger(1), + infobar_container_coordinator_.childCoordinators.count); + ASSERT_TRUE([infobar_container_coordinator_ isPresentingInfobarBanner]); + + web_state_list_->CloseWebStateAt(0, 0); + + ASSERT_TRUE(base::test::ios::WaitUntilConditionOrTimeout( + base::test::ios::kWaitForUIElementTimeout, ^bool { + return ![infobar_container_coordinator_ isPresentingInfobarBanner]; + })); + ASSERT_FALSE([infobar_container_coordinator_ isPresentingInfobarBanner]); + ASSERT_EQ(NSUInteger(0), + infobar_container_coordinator_.childCoordinators.count); +}
diff --git a/ios/chrome/browser/ui/payments/address_edit_coordinator.mm b/ios/chrome/browser/ui/payments/address_edit_coordinator.mm index fd174ec4..5e560d3 100644 --- a/ios/chrome/browser/ui/payments/address_edit_coordinator.mm +++ b/ios/chrome/browser/ui/payments/address_edit_coordinator.mm
@@ -8,8 +8,8 @@ #include "base/logging.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/common/autofill_constants.h" #include "ios/chrome/browser/payments/payment_request.h"
diff --git a/ios/chrome/browser/ui/payments/address_edit_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/address_edit_coordinator_unittest.mm index b51b1129..fed9823 100644 --- a/ios/chrome/browser/ui/payments/address_edit_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/address_edit_coordinator_unittest.mm
@@ -10,9 +10,9 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/autofill/core/browser/test_region_data_loader.h" #include "ios/chrome/browser/payments/payment_request_test_util.h"
diff --git a/ios/chrome/browser/ui/payments/address_edit_mediator.mm b/ios/chrome/browser/ui/payments/address_edit_mediator.mm index e2faceba..852ea86 100644 --- a/ios/chrome/browser/ui/payments/address_edit_mediator.mm +++ b/ios/chrome/browser/ui/payments/address_edit_mediator.mm
@@ -16,9 +16,9 @@ #include "components/autofill/core/browser/address_i18n.h" #include "components/autofill/core/browser/autofill_address_util.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_combobox_model.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/phone_number_i18n.h"
diff --git a/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm b/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm index 6a63f29f..1c7c5986 100644 --- a/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/address_edit_mediator_unittest.mm
@@ -5,9 +5,9 @@ #import "ios/chrome/browser/ui/payments/address_edit_mediator.h" #include "base/mac/foundation_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_region_data_loader.h" #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h"
diff --git a/ios/chrome/browser/ui/payments/billing_address_selection_coordinator.mm b/ios/chrome/browser/ui/payments/billing_address_selection_coordinator.mm index 3298c233..1fa4372 100644 --- a/ios/chrome/browser/ui/payments/billing_address_selection_coordinator.mm +++ b/ios/chrome/browser/ui/payments/billing_address_selection_coordinator.mm
@@ -7,7 +7,7 @@ #include <vector> #include "base/logging.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request.h" #include "ios/chrome/browser/ui/payments/billing_address_selection_mediator.h"
diff --git a/ios/chrome/browser/ui/payments/billing_address_selection_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/billing_address_selection_coordinator_unittest.mm index 7daa3ce..4006925 100644 --- a/ios/chrome/browser/ui/payments/billing_address_selection_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/billing_address_selection_coordinator_unittest.mm
@@ -6,9 +6,9 @@ #include "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/test_region_data_loader.h" #include "ios/chrome/browser/payments/payment_request_test_util.h"
diff --git a/ios/chrome/browser/ui/payments/billing_address_selection_mediator.mm b/ios/chrome/browser/ui/payments/billing_address_selection_mediator.mm index 326f5d1..7ba787f 100644 --- a/ios/chrome/browser/ui/payments/billing_address_selection_mediator.mm +++ b/ios/chrome/browser/ui/payments/billing_address_selection_mediator.mm
@@ -8,7 +8,7 @@ #include "base/logging.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request.h" #import "ios/chrome/browser/payments/payment_request_util.h"
diff --git a/ios/chrome/browser/ui/payments/billing_address_selection_mediator_unittest.mm b/ios/chrome/browser/ui/payments/billing_address_selection_mediator_unittest.mm index 7194cf6b..46e8242 100644 --- a/ios/chrome/browser/ui/payments/billing_address_selection_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/billing_address_selection_mediator_unittest.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/payments/billing_address_selection_mediator.h" #include "base/mac/foundation_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h" #import "ios/chrome/browser/payments/payment_request_util.h" #import "ios/chrome/browser/ui/payments/cells/autofill_profile_item.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_edit_coordinator.mm b/ios/chrome/browser/ui/payments/contact_info_edit_coordinator.mm index e72c087..ae744be 100644 --- a/ios/chrome/browser/ui/payments/contact_info_edit_coordinator.mm +++ b/ios/chrome/browser/ui/payments/contact_info_edit_coordinator.mm
@@ -8,8 +8,8 @@ #include "base/logging.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_constants.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_edit_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/contact_info_edit_coordinator_unittest.mm index ff260598..a01f217 100644 --- a/ios/chrome/browser/ui/payments/contact_info_edit_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/contact_info_edit_coordinator_unittest.mm
@@ -10,8 +10,8 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/autofill/core/browser/test_region_data_loader.h" #include "ios/chrome/browser/payments/payment_request_test_util.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_edit_mediator.mm b/ios/chrome/browser/ui/payments/contact_info_edit_mediator.mm index efdff5e..55cfdcd 100644 --- a/ios/chrome/browser/ui/payments/contact_info_edit_mediator.mm +++ b/ios/chrome/browser/ui/payments/contact_info_edit_mediator.mm
@@ -7,8 +7,8 @@ #include "base/logging.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_country.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/phone_number_i18n.h" #include "components/autofill/core/browser/validation.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm b/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm index ed4f15a6..045397b1 100644 --- a/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/contact_info_edit_mediator_unittest.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/payments/contact_info_edit_mediator.h" #include "base/mac/foundation_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_selection_coordinator.mm b/ios/chrome/browser/ui/payments/contact_info_selection_coordinator.mm index 8d831ea7..16f670a 100644 --- a/ios/chrome/browser/ui/payments/contact_info_selection_coordinator.mm +++ b/ios/chrome/browser/ui/payments/contact_info_selection_coordinator.mm
@@ -5,7 +5,7 @@ #import "ios/chrome/browser/ui/payments/contact_info_selection_coordinator.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/strings_util.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_selection_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/contact_info_selection_coordinator_unittest.mm index 5846a7b..cfa311d2 100644 --- a/ios/chrome/browser/ui/payments/contact_info_selection_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/contact_info_selection_coordinator_unittest.mm
@@ -6,8 +6,8 @@ #include "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h" #import "ios/chrome/browser/ui/payments/payment_request_selector_view_controller.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_selection_mediator.mm b/ios/chrome/browser/ui/payments/contact_info_selection_mediator.mm index 63230b45..4f50a5b9 100644 --- a/ios/chrome/browser/ui/payments/contact_info_selection_mediator.mm +++ b/ios/chrome/browser/ui/payments/contact_info_selection_mediator.mm
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/payments/contact_info_selection_mediator.h" #include "base/logging.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/payments_profile_comparator.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request.h"
diff --git a/ios/chrome/browser/ui/payments/contact_info_selection_mediator_unittest.mm b/ios/chrome/browser/ui/payments/contact_info_selection_mediator_unittest.mm index 5ba2d37..8577b92b 100644 --- a/ios/chrome/browser/ui/payments/contact_info_selection_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/contact_info_selection_mediator_unittest.mm
@@ -6,8 +6,8 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h" #import "ios/chrome/browser/payments/payment_request_util.h"
diff --git a/ios/chrome/browser/ui/payments/credit_card_edit_coordinator.mm b/ios/chrome/browser/ui/payments/credit_card_edit_coordinator.mm index ee61c85..f80d597a 100644 --- a/ios/chrome/browser/ui/payments/credit_card_edit_coordinator.mm +++ b/ios/chrome/browser/ui/payments/credit_card_edit_coordinator.mm
@@ -9,7 +9,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_type.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/common/autofill_constants.h" #import "components/autofill/ios/browser/credit_card_util.h"
diff --git a/ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm index 4d3b018..73b16e5 100644 --- a/ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/credit_card_edit_coordinator_unittest.mm
@@ -10,7 +10,7 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/payment_instrument.h"
diff --git a/ios/chrome/browser/ui/payments/credit_card_edit_mediator.mm b/ios/chrome/browser/ui/payments/credit_card_edit_mediator.mm index 8d9fc60..71607a3 100644 --- a/ios/chrome/browser/ui/payments/credit_card_edit_mediator.mm +++ b/ios/chrome/browser/ui/payments/credit_card_edit_mediator.mm
@@ -7,8 +7,8 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/validation.h" #include "components/autofill/core/common/autofill_clock.h"
diff --git a/ios/chrome/browser/ui/payments/payment_method_selection_coordinator.mm b/ios/chrome/browser/ui/payments/payment_method_selection_coordinator.mm index b624de4..6a6cc9b 100644 --- a/ios/chrome/browser/ui/payments/payment_method_selection_coordinator.mm +++ b/ios/chrome/browser/ui/payments/payment_method_selection_coordinator.mm
@@ -7,7 +7,7 @@ #include <vector> #include "base/logging.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/payment_instrument.h" #include "components/strings/grit/components_strings.h"
diff --git a/ios/chrome/browser/ui/payments/payment_method_selection_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/payment_method_selection_coordinator_unittest.mm index 0df82085..420409f 100644 --- a/ios/chrome/browser/ui/payments/payment_method_selection_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_method_selection_coordinator_unittest.mm
@@ -7,9 +7,9 @@ #include "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" #include "base/test/scoped_task_environment.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/payment_instrument.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h"
diff --git a/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm b/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm index 68fd1a02..f891de6 100644 --- a/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm +++ b/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm
@@ -8,8 +8,8 @@ #include "base/strings/string16.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/payment_instrument.h"
diff --git a/ios/chrome/browser/ui/payments/payment_method_selection_mediator_unittest.mm b/ios/chrome/browser/ui/payments/payment_method_selection_mediator_unittest.mm index 98139fe6..d6a8479a 100644 --- a/ios/chrome/browser/ui/payments/payment_method_selection_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_method_selection_mediator_unittest.mm
@@ -6,9 +6,9 @@ #include "base/mac/foundation_util.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h" #import "ios/chrome/browser/payments/payment_request_util.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_accessibility_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_accessibility_egtest.mm index 9b7e9b5..e77554b 100644 --- a/ios/chrome/browser/ui/payments/payment_request_accessibility_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_accessibility_egtest.mm
@@ -5,8 +5,8 @@ #import <EarlGrey/EarlGrey.h> #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request_util.h" #import "ios/chrome/browser/ui/payments/payment_request_egtest_base.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_can_make_payment_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_can_make_payment_egtest.mm index 14656a8..b6e5a0d 100644 --- a/ios/chrome/browser/ui/payments/payment_request_can_make_payment_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_can_make_payment_egtest.mm
@@ -6,7 +6,7 @@ #include "base/ios/ios_util.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/payment_prefs.h" #include "components/prefs/pref_service.h" #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_cancel_pay_abort_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_cancel_pay_abort_egtest.mm index d225e71..4f25283 100644 --- a/ios/chrome/browser/ui/payments/payment_request_cancel_pay_abort_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_cancel_pay_abort_egtest.mm
@@ -7,9 +7,9 @@ #include <vector> #include "base/ios/ios_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/ui/autofill/card_unmask_prompt_view_bridge.h" #import "ios/chrome/browser/ui/payments/payment_request_egtest_base.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_coordinator.mm b/ios/chrome/browser/ui/payments/payment_request_coordinator.mm index fc3872f..3eb3950 100644 --- a/ios/chrome/browser/ui/payments/payment_request_coordinator.mm +++ b/ios/chrome/browser/ui/payments/payment_request_coordinator.mm
@@ -7,8 +7,8 @@ #include <memory> #include "base/json/json_reader.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/payment_address.h" #include "components/payments/core/payment_details.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm index f0fbd35..ae253c04 100644 --- a/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_coordinator_unittest.mm
@@ -9,9 +9,9 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/payment_address.h" #include "components/payments/core/payment_instrument.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_debit_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_debit_egtest.mm index b637d41b..5e08225cb 100644 --- a/ios/chrome/browser/ui/payments/payment_request_debit_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_debit_egtest.mm
@@ -9,9 +9,9 @@ #include "base/strings/sys_string_conversions.h" #include "base/test/scoped_feature_list.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/payments/core/features.h" #include "components/payments/core/payment_prefs.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_egtest_base.mm b/ios/chrome/browser/ui/payments/payment_request_egtest_base.mm index 2936e218..40a74480 100644 --- a/ios/chrome/browser/ui/payments/payment_request_egtest_base.mm +++ b/ios/chrome/browser/ui/payments/payment_request_egtest_base.mm
@@ -14,8 +14,8 @@ #include "base/strings/stringprintf.h" #include "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_journey_logger_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_journey_logger_egtest.mm index d3bfec4..0209489 100644 --- a/ios/chrome/browser/ui/payments/payment_request_journey_logger_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_journey_logger_egtest.mm
@@ -5,8 +5,8 @@ #import <EarlGrey/EarlGrey.h> #include "base/ios/ios_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/journey_logger.h" #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/payments/payment_request_egtest_base.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_manager.mm b/ios/chrome/browser/ui/payments/payment_request_manager.mm index f2396aa1..72f2d192 100644 --- a/ios/chrome/browser/ui/payments/payment_request_manager.mm +++ b/ios/chrome/browser/ui/payments/payment_request_manager.mm
@@ -21,7 +21,7 @@ #include "base/strings/utf_string_conversions.h" #import "base/values.h" #include "components/autofill/core/browser/autofill_manager.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/ios/browser/autofill_driver_ios.h" #include "components/omnibox/browser/location_bar_model.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_mediator.mm b/ios/chrome/browser/ui/payments/payment_request_mediator.mm index 52c36d3f..f27e8cc4 100644 --- a/ios/chrome/browser/ui/payments/payment_request_mediator.mm +++ b/ios/chrome/browser/ui/payments/payment_request_mediator.mm
@@ -9,8 +9,8 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/payments/core/autofill_payment_instrument.h" #include "components/payments/core/currency_formatter.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_mediator_unittest.mm b/ios/chrome/browser/ui/payments/payment_request_mediator_unittest.mm index 0d9401aa..c5cf4b9 100644 --- a/ios/chrome/browser/ui/payments/payment_request_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_mediator_unittest.mm
@@ -8,9 +8,9 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/payment_instrument.h" #include "components/payments/core/payment_prefs.h" #include "components/payments/core/payment_shipping_option.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_payment_response_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_payment_response_egtest.mm index 7a52850..cecb277d 100644 --- a/ios/chrome/browser/ui/payments/payment_request_payment_response_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_payment_response_egtest.mm
@@ -7,9 +7,9 @@ #include <vector> #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/payments/payment_request_cache.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_use_stats_egtest.mm b/ios/chrome/browser/ui/payments/payment_request_use_stats_egtest.mm index eaaa728..677234f3 100644 --- a/ios/chrome/browser/ui/payments/payment_request_use_stats_egtest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_use_stats_egtest.mm
@@ -5,9 +5,9 @@ #import <EarlGrey/EarlGrey.h> #include "base/time/time.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/autofill/core/browser/test_autofill_clock.h" #include "components/strings/grit/components_strings.h"
diff --git a/ios/chrome/browser/ui/payments/payment_request_view_controller_unittest.mm b/ios/chrome/browser/ui/payments/payment_request_view_controller_unittest.mm index 44e43a8..89800bd 100644 --- a/ios/chrome/browser/ui/payments/payment_request_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/payments/payment_request_view_controller_unittest.mm
@@ -8,9 +8,9 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h"
diff --git a/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator.mm b/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator.mm index 321a5ecd..34ba111f1 100644 --- a/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator.mm +++ b/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator.mm
@@ -8,7 +8,7 @@ #include "base/logging.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/chrome/browser/payments/payment_request.h" #import "ios/chrome/browser/payments/payment_request_util.h" #import "ios/chrome/browser/ui/payments/cells/autofill_profile_item.h"
diff --git a/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator_unittest.mm index 14c27f8..eceb126 100644 --- a/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/shipping_address_selection_coordinator_unittest.mm
@@ -6,9 +6,9 @@ #include "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/test_region_data_loader.h" #include "ios/chrome/browser/payments/payment_request_test_util.h"
diff --git a/ios/chrome/browser/ui/payments/shipping_address_selection_mediator.mm b/ios/chrome/browser/ui/payments/shipping_address_selection_mediator.mm index e10a592..2e4bbe62 100644 --- a/ios/chrome/browser/ui/payments/shipping_address_selection_mediator.mm +++ b/ios/chrome/browser/ui/payments/shipping_address_selection_mediator.mm
@@ -7,7 +7,7 @@ #import "ios/chrome/browser/ui/payments/shipping_address_selection_mediator.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/payments/core/strings_util.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/payments/payment_request.h"
diff --git a/ios/chrome/browser/ui/payments/shipping_address_selection_mediator_unittest.mm b/ios/chrome/browser/ui/payments/shipping_address_selection_mediator_unittest.mm index 444b13d..883ed16d5 100644 --- a/ios/chrome/browser/ui/payments/shipping_address_selection_mediator_unittest.mm +++ b/ios/chrome/browser/ui/payments/shipping_address_selection_mediator_unittest.mm
@@ -5,8 +5,8 @@ #import "ios/chrome/browser/ui/payments/shipping_address_selection_mediator.h" #include "base/mac/foundation_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h" #import "ios/chrome/browser/payments/payment_request_util.h" #import "ios/chrome/browser/ui/payments/cells/autofill_profile_item.h"
diff --git a/ios/chrome/browser/ui/payments/shipping_option_selection_coordinator_unittest.mm b/ios/chrome/browser/ui/payments/shipping_option_selection_coordinator_unittest.mm index f4d810a..7a4c7f7 100644 --- a/ios/chrome/browser/ui/payments/shipping_option_selection_coordinator_unittest.mm +++ b/ios/chrome/browser/ui/payments/shipping_option_selection_coordinator_unittest.mm
@@ -6,8 +6,8 @@ #include "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/payments/core/payment_shipping_option.h" #include "ios/chrome/browser/payments/payment_request_test_util.h" #import "ios/chrome/browser/payments/payment_request_unittest_base.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_edit_table_view_controller.mm b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_edit_table_view_controller.mm index 542e14b..29da5461 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_edit_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_edit_table_view_controller.mm
@@ -10,7 +10,7 @@ #include "base/mac/scoped_block.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/payments_service_url.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_settings_egtest.mm b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_settings_egtest.mm index f83a0c0..fbea7916 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_settings_egtest.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_settings_egtest.mm
@@ -8,7 +8,7 @@ #include "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller_unittest.mm index a2ef5694..3995fdb 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_credit_card_table_view_controller_unittest.mm
@@ -8,7 +8,7 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h" #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller.mm b/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller.mm index 4d2364b..1b2f441 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller.mm
@@ -7,7 +7,7 @@ #include "base/mac/foundation_util.h" #include "base/stl_util.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/payments/payments_service_url.h" #include "components/autofill/core/browser/personal_data_manager.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller_unittest.mm index 45951422..0cba285 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_edit_table_view_controller_unittest.mm
@@ -9,7 +9,7 @@ #include "base/guid.h" #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_settings_egtest.mm b/ios/chrome/browser/ui/settings/autofill/autofill_profile_settings_egtest.mm index 6a3fa0f..4ae16af 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_settings_egtest.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_settings_egtest.mm
@@ -7,8 +7,8 @@ #include "base/ios/ios_util.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
diff --git a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller_unittest.mm index 44c2d63..9988295b3 100644 --- a/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/settings/autofill/autofill_profile_table_view_controller_unittest.mm
@@ -8,7 +8,7 @@ #include "base/mac/foundation_util.h" #include "base/strings/utf_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/personal_data_manager.h" #include "components/strings/grit/components_strings.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h"
diff --git a/ios/chrome/browser/ui/settings/google_services/advanced_signin_settings_coordinator.mm b/ios/chrome/browser/ui/settings/google_services/advanced_signin_settings_coordinator.mm index 7ccbf7c7..a2558c50 100644 --- a/ios/chrome/browser/ui/settings/google_services/advanced_signin_settings_coordinator.mm +++ b/ios/chrome/browser/ui/settings/google_services/advanced_signin_settings_coordinator.mm
@@ -10,8 +10,12 @@ #include "base/metrics/user_metrics.h" #include "components/signin/core/browser/signin_metrics.h" #include "components/strings/grit/components_strings.h" +#include "components/sync/driver/sync_service.h" +#include "components/unified_consent/unified_consent_metrics.h" +#include "ios/chrome/browser/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/signin/authentication_service.h" #import "ios/chrome/browser/signin/authentication_service_factory.h" +#include "ios/chrome/browser/sync/profile_sync_service_factory.h" #include "ios/chrome/browser/sync/sync_setup_service.h" #include "ios/chrome/browser/sync/sync_setup_service_factory.h" #import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h" @@ -102,9 +106,13 @@ SyncSetupService* syncSetupService = SyncSetupServiceFactory::GetForBrowserState(self.browserState); switch (result) { - case AdvancedSyncSettingsCoordinatorResultConfirm: + case AdvancedSyncSettingsCoordinatorResultConfirm: { base::RecordAction( base::UserMetricsAction("Signin_Signin_ConfirmAdvancedSyncSettings")); + syncer::SyncService* syncService = + ProfileSyncServiceFactory::GetForBrowserState(self.browserState); + unified_consent::metrics::RecordSyncSetupDataTypesHistrogam( + syncService->GetUserSettings(), self.browserState->GetPrefs()); if (syncSetupService->IsSyncEnabled()) { // FirstSetupComplete flag should be only turned on when the user agrees // to start Sync. @@ -112,6 +120,7 @@ syncSetupService->SetFirstSetupComplete(); } break; + } case AdvancedSigninSettingsCoordinatorResultCancel: base::RecordAction(base::UserMetricsAction( "Signin_Signin_ConfirmCancelAdvancedSyncSettings"));
diff --git a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm index 7d68699a..421fadf 100644 --- a/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm +++ b/ios/chrome/browser/ui/settings/material_cell_catalog_view_controller.mm
@@ -8,7 +8,7 @@ #import "base/mac/foundation_util.h" #include "components/autofill/core/browser/autofill_data_util.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/grit/components_scaled_resources.h" #import "ios/chrome/browser/ui/authentication/cells/legacy_account_control_item.h" #import "ios/chrome/browser/ui/authentication/cells/signin_promo_view_configurator.h"
diff --git a/ios/chrome/browser/web/page_placeholder_tab_helper.h b/ios/chrome/browser/web/page_placeholder_tab_helper.h index b688796..574d41df 100644 --- a/ios/chrome/browser/web/page_placeholder_tab_helper.h +++ b/ios/chrome/browser/web/page_placeholder_tab_helper.h
@@ -14,6 +14,9 @@ // Displays placeholder to cover what WebState is actually displaying. Can be // used to display the cached image of the web page during the Tab restoration. +// The placeholder is added as a subview on the WebState's view. Properly +// positioning the placeholder requires that the WebState's view is in a view +// hierarchy that has the Content Area named guide. class PagePlaceholderTabHelper : public web::WebStateUserData<PagePlaceholderTabHelper>, public web::WebStateObserver { @@ -22,7 +25,8 @@ // Displays placeholder between DidStartNavigation and PageLoaded // WebStateObserver callbacks. If navigation takes too long, then placeholder - // will be removed before navigation is finished. + // will be removed before navigation is finished. The placeholder is only ever + // displayed when the tab is visible. void AddPlaceholderForNextNavigation(); // Cancels displaying placeholder during the next navigation. If placeholder @@ -56,7 +60,9 @@ void AddPlaceholder(); void RemovePlaceholder(); - // Adds the given |snapshot| image to the |web_state_|'s view. + // Adds the given |snapshot| image to the |web_state_|'s view. The + // |web_state_|'s view must be visible, and it must be in a view hierarchy + // that has the Content Area named guide. void DisplaySnapshotImage(UIImage* snapshot); // WebState this tab helper is attached to.
diff --git a/ios/chrome/browser/web/page_placeholder_tab_helper.mm b/ios/chrome/browser/web/page_placeholder_tab_helper.mm index 3b0ce744..6990eade 100644 --- a/ios/chrome/browser/web/page_placeholder_tab_helper.mm +++ b/ios/chrome/browser/web/page_placeholder_tab_helper.mm
@@ -46,6 +46,7 @@ void PagePlaceholderTabHelper::WasShown(web::WebState* web_state) { if (add_placeholder_for_next_navigation_) { + add_placeholder_for_next_navigation_ = false; AddPlaceholder(); } } @@ -58,7 +59,7 @@ web::WebState* web_state, web::NavigationContext* navigation_context) { DCHECK_EQ(web_state_, web_state); - if (add_placeholder_for_next_navigation_) { + if (add_placeholder_for_next_navigation_ && web_state->IsVisible()) { add_placeholder_for_next_navigation_ = false; AddPlaceholder(); } @@ -112,11 +113,16 @@ } void PagePlaceholderTabHelper::DisplaySnapshotImage(UIImage* snapshot) { + DCHECK(web_state_->IsVisible()) + << "The WebState must be visible to display a page placeholder."; + UIView* web_state_view = web_state_->GetView(); + NamedGuide* guide = [NamedGuide guideWithName:kContentAreaGuide + view:web_state_view]; + DCHECK(guide) << "The ContentArea named guide must be in the WebState view's " + "hierarchy to properly position the page placeholder."; placeholder_view_.image = snapshot; - [web_state_->GetView() addSubview:placeholder_view_]; - AddSameConstraints([NamedGuide guideWithName:kContentAreaGuide - view:placeholder_view_], - placeholder_view_); + [web_state_view addSubview:placeholder_view_]; + AddSameConstraints(guide, placeholder_view_); } void PagePlaceholderTabHelper::RemovePlaceholder() {
diff --git a/ios/chrome/browser/web/page_placeholder_tab_helper_unittest.mm b/ios/chrome/browser/web/page_placeholder_tab_helper_unittest.mm index a26990e..1a240b2 100644 --- a/ios/chrome/browser/web/page_placeholder_tab_helper_unittest.mm +++ b/ios/chrome/browser/web/page_placeholder_tab_helper_unittest.mm
@@ -76,7 +76,7 @@ EXPECT_TRUE(tab_helper()->will_add_placeholder_for_next_navigation()); web_state_->WasShown(); EXPECT_TRUE(tab_helper()->displaying_placeholder()); - EXPECT_TRUE(tab_helper()->will_add_placeholder_for_next_navigation()); + EXPECT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); } // Tests that placeholder is removed after WasHidden(). @@ -116,6 +116,7 @@ // Tests that placeholder is shown between DidStartNavigation/PageLoaded // WebStateObserver callbacks. TEST_F(PagePlaceholderTabHelperTest, Shown) { + web_state_->WasShown(); ASSERT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); tab_helper()->AddPlaceholderForNextNavigation(); ASSERT_FALSE(tab_helper()->displaying_placeholder()); @@ -130,8 +131,24 @@ EXPECT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); } +// Tests that placeholder is not shown if the tab is not visible at +// DidStartNavigation +TEST_F(PagePlaceholderTabHelperTest, NotShownIfTabNotVisible) { + ASSERT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); + tab_helper()->AddPlaceholderForNextNavigation(); + ASSERT_FALSE(tab_helper()->displaying_placeholder()); + EXPECT_TRUE(tab_helper()->will_add_placeholder_for_next_navigation()); + + web_state_->OnNavigationStarted(nullptr); + EXPECT_FALSE(tab_helper()->displaying_placeholder()); + web_state_->WasShown(); + EXPECT_TRUE(tab_helper()->displaying_placeholder()); + EXPECT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); +} + // Tests that placeholder is removed if cancelled while presented. TEST_F(PagePlaceholderTabHelperTest, RemovedIfCancelledWhileShown) { + web_state_->WasShown(); ASSERT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); tab_helper()->AddPlaceholderForNextNavigation(); ASSERT_FALSE(tab_helper()->displaying_placeholder()); @@ -147,6 +164,7 @@ // Tests that destructing WebState removes the placeholder. TEST_F(PagePlaceholderTabHelperTest, DestructWebStateWhenShowingPlaceholder) { + web_state_->WasShown(); ASSERT_FALSE(tab_helper()->will_add_placeholder_for_next_navigation()); tab_helper()->AddPlaceholderForNextNavigation(); ASSERT_FALSE(tab_helper()->displaying_placeholder());
diff --git a/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm b/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm index ac2a464..9079f926 100644 --- a/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm +++ b/ios/chrome/browser/web/sad_tab_tab_helper_unittest.mm
@@ -94,8 +94,9 @@ SadTabTabHelperTestDelegate* sad_tab_delegate_; }; -// Tests that SadTab is not presented for not shown web states and navigation -// item is reloaded once web state was shown. +// Tests that SadTab is not presented for not shown web states. Navigation +// item is reloaded once web state was shown, and displays the page placeholder +// during the load. TEST_F(SadTabTabHelperTest, ReloadedWhenWebStateWasShown) { OCMStub([application_ applicationState]).andReturn(UIApplicationStateActive); web_state_.WasHidden(); @@ -110,11 +111,12 @@ EXPECT_FALSE(tab_helper()->is_showing_sad_tab()); EXPECT_FALSE(sad_tab_delegate_.showingSadTab); - // Navigation item must be reloaded once web state is shown. + // Navigation item must be reloaded once web state is shown, while displaying + // the page placeholder during the load. EXPECT_FALSE(navigation_manager_->LoadIfNecessaryWasCalled()); web_state_.WasShown(); EXPECT_TRUE(PagePlaceholderTabHelper::FromWebState(&web_state_) - ->will_add_placeholder_for_next_navigation()); + ->displaying_placeholder()); EXPECT_TRUE(navigation_manager_->LoadIfNecessaryWasCalled()); }
diff --git a/ios/web_view/internal/autofill/cwv_autofill_data_manager_unittest.mm b/ios/web_view/internal/autofill/cwv_autofill_data_manager_unittest.mm index 6b35d308..3ea5aca 100644 --- a/ios/web_view/internal/autofill/cwv_autofill_data_manager_unittest.mm +++ b/ios/web_view/internal/autofill/cwv_autofill_data_manager_unittest.mm
@@ -9,9 +9,9 @@ #include "base/run_loop.h" #include "base/strings/sys_string_conversions.h" #import "base/test/ios/wait_util.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "ios/web/public/test/test_web_thread_bundle.h" #import "ios/web_view/internal/autofill/cwv_autofill_profile_internal.h"
diff --git a/ios/web_view/internal/autofill/cwv_autofill_profile.mm b/ios/web_view/internal/autofill/cwv_autofill_profile.mm index b237e24..e540500 100644 --- a/ios/web_view/internal/autofill/cwv_autofill_profile.mm +++ b/ios/web_view/internal/autofill/cwv_autofill_profile.mm
@@ -5,8 +5,8 @@ #import "ios/web_view/internal/autofill/cwv_autofill_profile_internal.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_type.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "ios/web_view/internal/app/application_context.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/web_view/internal/autofill/cwv_autofill_profile_unittest.mm b/ios/web_view/internal/autofill/cwv_autofill_profile_unittest.mm index d7fcaab2..0a9f2b9 100644 --- a/ios/web_view/internal/autofill/cwv_autofill_profile_unittest.mm +++ b/ios/web_view/internal/autofill/cwv_autofill_profile_unittest.mm
@@ -8,10 +8,10 @@ #include <string> #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/autofill_profile.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/country_names.h" +#include "components/autofill/core/browser/data_model/autofill_profile.h" #include "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h" #include "testing/platform_test.h"
diff --git a/ios/web_view/internal/autofill/cwv_autofill_suggestion.mm b/ios/web_view/internal/autofill/cwv_autofill_suggestion.mm index bb42904..fa4d99e 100644 --- a/ios/web_view/internal/autofill/cwv_autofill_suggestion.mm +++ b/ios/web_view/internal/autofill/cwv_autofill_suggestion.mm
@@ -5,7 +5,7 @@ #import "ios/web_view/internal/autofill/cwv_autofill_suggestion_internal.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/popup_item_ids.h" #import "components/autofill/ios/browser/form_suggestion.h" #include "ui/base/resource/resource_bundle.h"
diff --git a/ios/web_view/internal/autofill/cwv_credit_card.mm b/ios/web_view/internal/autofill/cwv_credit_card.mm index 62d9201..c3dd578 100644 --- a/ios/web_view/internal/autofill/cwv_credit_card.mm +++ b/ios/web_view/internal/autofill/cwv_credit_card.mm
@@ -5,7 +5,7 @@ #import "ios/web_view/internal/autofill/cwv_credit_card_internal.h" #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "ios/web_view/internal/app/application_context.h" #include "ui/base/resource/resource_bundle.h"
diff --git a/ios/web_view/internal/autofill/cwv_credit_card_unittest.mm b/ios/web_view/internal/autofill/cwv_credit_card_unittest.mm index 21fcf34..a84e84c 100644 --- a/ios/web_view/internal/autofill/cwv_credit_card_unittest.mm +++ b/ios/web_view/internal/autofill/cwv_credit_card_unittest.mm
@@ -11,7 +11,7 @@ #include "base/path_service.h" #include "base/strings/sys_string_conversions.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "testing/gtest/include/gtest/gtest.h" #import "testing/gtest_mac.h" #include "testing/platform_test.h"
diff --git a/ios/web_view/internal/autofill/cwv_credit_card_verifier.mm b/ios/web_view/internal/autofill/cwv_credit_card_verifier.mm index 4ed9497..a2a9a8d 100644 --- a/ios/web_view/internal/autofill/cwv_credit_card_verifier.mm +++ b/ios/web_view/internal/autofill/cwv_credit_card_verifier.mm
@@ -7,7 +7,7 @@ #include <memory> #include "base/strings/sys_string_conversions.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/ui/payments/card_unmask_prompt_controller_impl.h" #include "components/autofill/core/browser/ui/payments/card_unmask_prompt_view.h" #import "ios/web_view/internal/autofill/cwv_credit_card_internal.h"
diff --git a/ios/web_view/internal/autofill/cwv_credit_card_verifier_unittest.mm b/ios/web_view/internal/autofill/cwv_credit_card_verifier_unittest.mm index cdb1a0e..66fa8b4 100644 --- a/ios/web_view/internal/autofill/cwv_credit_card_verifier_unittest.mm +++ b/ios/web_view/internal/autofill/cwv_credit_card_verifier_unittest.mm
@@ -19,7 +19,7 @@ #import "base/test/ios/wait_util.h" #include "base/test/scoped_feature_list.h" #include "components/autofill/core/browser/autofill_test_utils.h" -#include "components/autofill/core/browser/credit_card.h" +#include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/payments/card_unmask_delegate.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_prefs.h"
diff --git a/ios/web_view/internal/passwords/web_view_password_manager_client.h b/ios/web_view/internal/passwords/web_view_password_manager_client.h index b6bcf30..4741e6b 100644 --- a/ios/web_view/internal/passwords/web_view_password_manager_client.h +++ b/ios/web_view/internal/passwords/web_view_password_manager_client.h
@@ -18,6 +18,7 @@ namespace password_manager { class PasswordFormManagerForUI; +class PasswordManagerDriver; } @protocol CWVPasswordManagerClientDelegate @@ -64,7 +65,7 @@ bool has_generated_password, bool is_update) override; void HideManualFallbackForSaving() override; - void FocusedInputChanged(const url::Origin& last_committed_origin, + void FocusedInputChanged(password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) override; bool PromptUserToChooseCredentials(
diff --git a/ios/web_view/internal/passwords/web_view_password_manager_client.mm b/ios/web_view/internal/passwords/web_view_password_manager_client.mm index a6a8a96..c926d9f 100644 --- a/ios/web_view/internal/passwords/web_view_password_manager_client.mm +++ b/ios/web_view/internal/passwords/web_view_password_manager_client.mm
@@ -12,6 +12,7 @@ #include "components/password_manager/core/browser/log_manager.h" #include "components/password_manager/core/browser/password_form_manager_for_ui.h" #include "components/password_manager/core/browser/password_manager.h" +#include "components/password_manager/core/browser/password_manager_driver.h" #include "components/password_manager/core/browser/password_manager_internals_service.h" #include "components/password_manager/core/browser/password_manager_util.h" #include "components/password_manager/core/common/password_manager_pref_names.h" @@ -92,7 +93,7 @@ } void WebViewPasswordManagerClient::FocusedInputChanged( - const url::Origin& last_committed_origin, + password_manager::PasswordManagerDriver* driver, bool is_fillable, bool is_password_field) { NOTIMPLEMENTED();
diff --git a/media/base/android/media_codec_loop_unittest.cc b/media/base/android/media_codec_loop_unittest.cc index 1e2eb8c..7e9a579e 100644 --- a/media/base/android/media_codec_loop_unittest.cc +++ b/media/base/android/media_codec_loop_unittest.cc
@@ -17,6 +17,7 @@ using ::testing::_; using ::testing::AtLeast; +using ::testing::DoAll; using ::testing::Eq; using ::testing::Field; using ::testing::InSequence;
diff --git a/media/filters/dav1d_video_decoder.cc b/media/filters/dav1d_video_decoder.cc index b533e99..7122005 100644 --- a/media/filters/dav1d_video_decoder.cc +++ b/media/filters/dav1d_video_decoder.cc
@@ -176,10 +176,12 @@ // Compute the ideal thread count values. We'll then clamp these based on the // maximum number of recommended threads (using number of processors, etc). + // + // dav1d will spawn |n_tile_threads| per frame thread. s.n_tile_threads = GetDecoderTileThreadCount(config); s.n_frame_threads = GetDecoderFrameThreadCount(config); const int max_threads = VideoDecoder::GetRecommendedThreadCount( - s.n_tile_threads + s.n_frame_threads); + s.n_frame_threads * s.n_tile_threads); // First clamp tile threads to the allowed maximum. We prefer tile threads // over frame threads since dav1d folk indicate they are more efficient. In an @@ -188,19 +190,30 @@ // https://bugzilla.mozilla.org/show_bug.cgi?id=1536783#c0 s.n_tile_threads = std::min(max_threads, s.n_tile_threads); - // Now clamp frame threads based on the number of remaining threads after tile - // threads have been allocated. A thread count of 1 generates no additional - // threads since the calling thread (this thread) is counted as a thread. + // Now clamp frame threads based on the number of total threads that would be + // created with the given |n_tile_threads| value. Note: A thread count of 1 + // generates no additional threads since the calling thread (this thread) is + // counted as a thread. // // We only want 1 frame thread in low delay mode, since otherwise we'll // require at least two buffers before the first frame can be output. // - // 2 frame threads seems desirable even on low core machines: - // https://crbug.com/957511 + // If a system has the cores for it, we'll end up using the following: + // <300p: 2 tile threads, 2 frame threads = 4 total threads. + // <700p: 3 tile threads, 2 frame threads = 6 total threads. + // + // For higher resolutions we hit limits::kMaxVideoThreads (16): + // <1000p: 5 tile threads, 3 frame thread = 15 total threads. + // >1000p: 8 tile threads, 2 frame threads = 16 total threads. + // + // Due to the (surprising) performance issues which occurred when setting + // |n_frame_threads|=1 (https://crbug.com/957511) the minimum total number of + // threads is 4 (two tile and two frame) regardless of core count. The maximum + // is min(2 * base::SysInfo::NumberOfProcessors(), limits::kMaxVideoThreads). if (low_delay) s.n_frame_threads = 1; - else if (s.n_frame_threads > max_threads - s.n_tile_threads) - s.n_frame_threads = std::max(2, max_threads - s.n_tile_threads); + else if (s.n_frame_threads * s.n_tile_threads > max_threads) + s.n_frame_threads = std::max(2, max_threads / s.n_tile_threads); // Route dav1d internal logs through Chrome's DLOG system. s.logger = {nullptr, &LogDav1dMessage};
diff --git a/net/cert/trial_comparison_cert_verifier_unittest.cc b/net/cert/trial_comparison_cert_verifier_unittest.cc index 894b53e..946523b 100644 --- a/net/cert/trial_comparison_cert_verifier_unittest.cc +++ b/net/cert/trial_comparison_cert_verifier_unittest.cc
@@ -29,6 +29,7 @@ using net::test::IsError; using net::test::IsOk; using testing::_; +using testing::DoAll; using testing::Return; using testing::SetArgPointee;
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h index c396147..188edde8 100644 --- a/net/quic/quic_flags_list.h +++ b/net/quic/quic_flags_list.h
@@ -199,7 +199,7 @@ // connection, such that version negotiation is not supported in connection. QUIC_FLAG(bool, FLAGS_quic_restart_flag_quic_no_server_conn_ver_negotiation2, - false) + true) // If true, enable QUIC version 46. QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_enable_version_46, true) @@ -230,7 +230,7 @@ // reconnection. QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_no_client_conn_ver_negotiation, - false) + true) // If true, public reset packets sent from GFE will include a kEPID tag. QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_fix_spurious_ack_alarm, false)
diff --git a/net/socket/udp_socket_unittest.cc b/net/socket/udp_socket_unittest.cc index efb36062..b89b518b 100644 --- a/net/socket/udp_socket_unittest.cc +++ b/net/socket/udp_socket_unittest.cc
@@ -49,6 +49,7 @@ using net::test::IsError; using net::test::IsOk; +using testing::DoAll; using testing::Not; namespace net {
diff --git a/remoting/protocol/webrtc_dummy_video_encoder.cc b/remoting/protocol/webrtc_dummy_video_encoder.cc index b937b08..c4b3e76f 100644 --- a/remoting/protocol/webrtc_dummy_video_encoder.cc +++ b/remoting/protocol/webrtc_dummy_video_encoder.cc
@@ -215,8 +215,6 @@ header.VerifyAndAllocateFragmentationHeader(1); header.fragmentationOffset[0] = 0; header.fragmentationLength[0] = buffer_size; - header.fragmentationPlType[0] = 0; - header.fragmentationTimeDiff[0] = 0; } DCHECK(encoded_callback_);
diff --git a/services/metrics/public/cpp/ukm_source.cc b/services/metrics/public/cpp/ukm_source.cc index e9f0aa4..6ebf48f6 100644 --- a/services/metrics/public/cpp/ukm_source.cc +++ b/services/metrics/public/cpp/ukm_source.cc
@@ -64,6 +64,7 @@ sanitized_navigation_data.tab_id = tab_id; sanitized_navigation_data.is_same_document_navigation = is_same_document_navigation; + sanitized_navigation_data.navigation_time = navigation_time; return sanitized_navigation_data; } @@ -129,6 +130,11 @@ if (navigation_data_.is_same_document_navigation) proto_source->set_is_same_document_navigation(true); + + if (navigation_data_.navigation_time) { + proto_source->set_navigation_time_msec( + navigation_data_.navigation_time->since_origin().InMilliseconds()); + } } } // namespace ukm
diff --git a/services/metrics/public/cpp/ukm_source.h b/services/metrics/public/cpp/ukm_source.h index 0a7a1d76..431a579 100644 --- a/services/metrics/public/cpp/ukm_source.h +++ b/services/metrics/public/cpp/ukm_source.h
@@ -79,6 +79,10 @@ // document navigations are fragment navigations, pushState/replaceState, // and same page history navigation. bool is_same_document_navigation = false; + + // The navigation start time relative to session start. The navigation + // time within session should be monotonically increasing. + base::Optional<base::TimeTicks> navigation_time; }; UkmSource(SourceId id, const GURL& url);
diff --git a/services/resource_coordinator/public/mojom/coordination_unit.mojom b/services/resource_coordinator/public/mojom/coordination_unit.mojom index 316bd4d..2c94ac0 100644 --- a/services/resource_coordinator/public/mojom/coordination_unit.mojom +++ b/services/resource_coordinator/public/mojom/coordination_unit.mojom
@@ -49,7 +49,7 @@ // resource management to the embedder. interface DocumentCoordinationUnit { // Property signals. - SetNetworkAlmostIdle(bool idle); + SetNetworkAlmostIdle(); SetLifecycleState(LifecycleState state); SetHasNonEmptyBeforeUnload(bool has_nonempty_beforeunload); SetInterventionPolicy(PolicyControlledIntervention intervention,
diff --git a/services/tracing/public/cpp/perfetto/perfetto_config.cc b/services/tracing/public/cpp/perfetto/perfetto_config.cc index 4f85779..84fbef7 100644 --- a/services/tracing/public/cpp/perfetto/perfetto_config.cc +++ b/services/tracing/public/cpp/perfetto/perfetto_config.cc
@@ -14,6 +14,25 @@ namespace tracing { +namespace { + +perfetto::TraceConfig::DataSource* AddDataSourceConfig( + perfetto::TraceConfig* perfetto_config, + const char* name, + const std::string& chrome_config_string, + bool privacy_filtering_enabled) { + auto* data_source = perfetto_config->add_data_sources(); + auto* source_config = data_source->mutable_config(); + source_config->set_name(name); + source_config->set_target_buffer(0); + auto* chrome_config = source_config->mutable_chrome_config(); + chrome_config->set_trace_config(chrome_config_string); + chrome_config->set_privacy_filtering_enabled(privacy_filtering_enabled); + return data_source; +} + +} // namespace + perfetto::TraceConfig GetDefaultPerfettoConfig( const base::trace_event::TraceConfig& chrome_config, bool privacy_filtering_enabled) { @@ -32,15 +51,6 @@ builtin_data_sources->set_disable_trace_config(privacy_filtering_enabled); builtin_data_sources->set_disable_system_info(privacy_filtering_enabled); - // Capture actual trace events. - auto* trace_event_data_source = perfetto_config.add_data_sources(); - for (auto& enabled_pid : - chrome_config.process_filter_config().included_process_ids()) { - *trace_event_data_source->add_producer_name_filter() = base::StrCat( - {mojom::kPerfettoProducerNamePrefix, - base::NumberToString(static_cast<uint32_t>(enabled_pid))}); - } - // We strip the process filter from the config string we send to Perfetto, // so perfetto doesn't reject it from a future // TracingService::ChangeTraceConfig call due to being an unsupported @@ -50,44 +60,33 @@ base::trace_event::TraceConfig::ProcessFilterConfig()); std::string chrome_config_string = processfilter_stripped_config.ToString(); - auto* trace_event_config = trace_event_data_source->mutable_config(); - trace_event_config->set_name(tracing::mojom::kTraceEventDataSourceName); - trace_event_config->set_target_buffer(0); - auto* chrome_proto_config = trace_event_config->mutable_chrome_config(); - chrome_proto_config->set_trace_config(chrome_config_string); - chrome_proto_config->set_privacy_filtering_enabled(privacy_filtering_enabled); + // Capture actual trace events. + auto* trace_event_data_source = AddDataSourceConfig( + &perfetto_config, tracing::mojom::kTraceEventDataSourceName, + chrome_config_string, privacy_filtering_enabled); + for (auto& enabled_pid : + chrome_config.process_filter_config().included_process_ids()) { + *trace_event_data_source->add_producer_name_filter() = base::StrCat( + {mojom::kPerfettoProducerNamePrefix, + base::NumberToString(static_cast<uint32_t>(enabled_pid))}); + } // Capture system trace events if supported and enabled. The datasources will // only emit events if system tracing is enabled in |chrome_config|. #if defined(OS_CHROMEOS) || (defined(IS_CHROMECAST) && defined(OS_LINUX)) - auto* system_trace_config = - perfetto_config.add_data_sources()->mutable_config(); - system_trace_config->set_name(tracing::mojom::kSystemTraceDataSourceName); - system_trace_config->set_target_buffer(0); - auto* system_chrome_config = system_trace_config->mutable_chrome_config(); - system_chrome_config->set_trace_config(chrome_config_string); - system_chrome_config->set_privacy_filtering_enabled( - privacy_filtering_enabled); + AddDataSourceConfig(&perfetto_config, + tracing::mojom::kSystemTraceDataSourceName, + chrome_config_string, privacy_filtering_enabled); #endif #if defined(OS_CHROMEOS) - auto* arc_trace_config = perfetto_config.add_data_sources()->mutable_config(); - arc_trace_config->set_name(tracing::mojom::kArcTraceDataSourceName); - arc_trace_config->set_target_buffer(0); - auto* arc_chrome_config = arc_trace_config->mutable_chrome_config(); - arc_chrome_config->set_trace_config(chrome_config_string); - arc_chrome_config->set_privacy_filtering_enabled(privacy_filtering_enabled); + AddDataSourceConfig(&perfetto_config, tracing::mojom::kArcTraceDataSourceName, + chrome_config_string, privacy_filtering_enabled); #endif // Also capture global metadata. - auto* trace_metadata_config = - perfetto_config.add_data_sources()->mutable_config(); - trace_metadata_config->set_name(tracing::mojom::kMetaDataSourceName); - trace_metadata_config->set_target_buffer(0); - auto* metadata_chrome_config = trace_metadata_config->mutable_chrome_config(); - metadata_chrome_config->set_trace_config(chrome_config_string); - metadata_chrome_config->set_privacy_filtering_enabled( - privacy_filtering_enabled); + AddDataSourceConfig(&perfetto_config, tracing::mojom::kMetaDataSourceName, + chrome_config_string, privacy_filtering_enabled); return perfetto_config; }
diff --git a/testing/buildbot/chromium.chrome.json b/testing/buildbot/chromium.chrome.json index 450a435b..1753530 100644 --- a/testing/buildbot/chromium.chrome.json +++ b/testing/buildbot/chromium.chrome.json
@@ -1713,53 +1713,17 @@ "additional_compile_targets": [ "chrome", "chrome/installer/linux" - ], - "isolated_scripts": [ - { - "isolate_name": "chrome_sizes", - "merge": { - "script": "//tools/perf/process_perf_results.py" - }, - "name": "chrome_sizes", - "swarming": { - "can_use_on_swarming_builders": true - } - } ] }, "mac-google-rel": { "additional_compile_targets": [ "chrome" - ], - "isolated_scripts": [ - { - "isolate_name": "chrome_sizes", - "merge": { - "script": "//tools/perf/process_perf_results.py" - }, - "name": "chrome_sizes", - "swarming": { - "can_use_on_swarming_builders": true - } - } ] }, "win-google-rel": { "additional_compile_targets": [ "chrome", "chrome_official_builder" - ], - "isolated_scripts": [ - { - "isolate_name": "chrome_sizes", - "merge": { - "script": "//tools/perf/process_perf_results.py" - }, - "name": "chrome_sizes", - "swarming": { - "can_use_on_swarming_builders": true - } - } ] } }
diff --git a/testing/buildbot/filters/fuchsia.gfx_unittests.filter b/testing/buildbot/filters/fuchsia.gfx_unittests.filter index 5864370..9320cca 100644 --- a/testing/buildbot/filters/fuchsia.gfx_unittests.filter +++ b/testing/buildbot/filters/fuchsia.gfx_unittests.filter
@@ -1,18 +1,2 @@ -# https://crbug.com/952652 - Fail due to missing fonts. --FontListTest.FirstAvailableOrFirst --FontListTest.Fonts_* --FontTest.LoadArial* --FontTest.GetActualFontNameForTesting --PlatformFontSkiaTest.DefaultFont --RenderTextTest.HarfBuzz_BreakRunsByEmojiVariationSelectors --RenderTextTest.HarfBuzz_FontListFallback --RenderTextTest.HarfBuzz_UnicodeFallback --RenderTextTest.SetFontList --RenderTextTest.StringSizeBoldWidth --RenderTextTest.StringSizeRespectsFontListMetrics --RenderTextTest.StylePropagated --RenderTextTest.SubpixelRenderingSuppressed --RenderTextTest.TextDoesntClip - # https://crbug.com/952652 - GpuMemoryBufferHandle Mojo struct traits. -StructTraitsTest.GpuMemoryBufferHandle
diff --git a/testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter b/testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter index c1683dd..7a5753bc 100644 --- a/testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter +++ b/testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter
@@ -3,10 +3,6 @@ # HTML imports feature turned off, before the Blink team disables the feature by # default. -# TODO(rbpotter): Restore this test to the list of tests below, after failures -# on Mac 10.13 have been fixed. --CrExtensionsManagerTestWithMultipleExtensionTypesInstalled.* - CrExtensionsSidebarTest.* CrExtensionsToolbarTest.* CrExtensionsItemsTest.* @@ -20,6 +16,7 @@ CrExtensionsLoadErrorTest.* CrExtensionsManagerUnitTest.* CrExtensionsManagerUnitTestWithActivityLogFlag.* +CrExtensionsManagerTestWithMultipleExtensionTypesInstalled.* CrExtensionsManagerTestWithIdQueryParam.* CrExtensionsManagerTestWithActivityLogFlag.* CrExtensionsShortcutTest.*
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 31b79d23..e3a6f0d 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -602,11 +602,6 @@ "label": "//sandbox/linux:chrome_sandbox", "type": "additional_compile_target", }, - "chrome_sizes": { - "label": "//chrome/test:chrome_sizes", - "type": "generated_script", - "script": "bin/chrome_sizes", - }, "chromedriver": { "label": "//chrome/test/chromedriver:chromedriver", "type": "additional_compile_target",
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 8585edd..ff919409 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -203,14 +203,6 @@ }, }, - 'chrome_sizes': { - 'chrome_sizes': { - 'merge': { - 'script': '//tools/perf/process_perf_results.py', - }, - }, - }, - 'chromedriver_py_tests_isolated_scripts': { 'chromedriver_py_tests': { "args": [
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index f0bfaf9..809b854c 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -679,26 +679,17 @@ 'chrome', 'chrome/installer/linux', ], - 'test_suites': { - 'isolated_scripts': 'chrome_sizes', - }, }, 'mac-google-rel': { 'additional_compile_targets': [ 'chrome', ], - 'test_suites': { - 'isolated_scripts': 'chrome_sizes', - }, }, 'win-google-rel': { 'additional_compile_targets': [ 'chrome', 'chrome_official_builder', ], - 'test_suites': { - 'isolated_scripts': 'chrome_sizes', - }, }, }, },
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 4291741..1c0ea828 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -1095,6 +1095,25 @@ ] } ], + "BlinkLayoutNG": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "LayoutNG" + ] + } + ] + } + ], "BlinkSchedulerDedicatedWorkerThrottling": [ { "platforms": [ @@ -4466,24 +4485,6 @@ ] } ], - "SearchReadyOmnibox": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "EnabledCopyIcon", - "params": { - "variation": "copy_icon" - }, - "enable_features": [ - "SearchReadyOmnibox" - ] - } - ] - } - ], "ServiceWorkerAggressiveCodeCache": [ { "platforms": [ @@ -5366,25 +5367,6 @@ ] } ], - "V8HugeMaxOldGenerationSize": [ - { - "platforms": [ - "android", - "chromeos", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "enable_features": [ - "V8HugeMaxOldGenerationSize" - ] - } - ] - } - ], "V8Ignition": [ { "platforms": [
diff --git a/third_party/blink/SECURITY_OWNERS b/third_party/blink/SECURITY_OWNERS new file mode 100644 index 0000000..42c5a78 --- /dev/null +++ b/third_party/blink/SECURITY_OWNERS
@@ -0,0 +1,5 @@ +# Blink/OWP Security reviewers +dcheng@chromium.org +mkwst@chromium.org +palmer@chromium.org +vogelheim@chromium.org
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc index 3b387d8..625676a 100644 --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc
@@ -263,6 +263,11 @@ #endif }; +// Enabled to block programmatic focus in subframes when not triggered by user +// activation (see htpps://crbug.com/954349). +const base::Feature kBlockingFocusWithoutUserActivation{ + "BlockingFocusWithoutUserActivation", base::FEATURE_DISABLED_BY_DEFAULT}; + bool IsOffMainThreadSharedWorkerScriptFetchEnabled() { // Off-the-main-thread shared worker script fetch depends on PlzSharedWorker // (NetworkService).
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h index 3ad8f922..d21bc91 100644 --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h
@@ -80,6 +80,8 @@ BLINK_COMMON_EXPORT extern const base::Feature kWebFontsCacheAwareTimeoutAdaption; +BLINK_COMMON_EXPORT extern const base::Feature + kBlockingFocusWithoutUserActivation; // Returns true when off-the-main-thread shared worker script fetch is enabled. BLINK_COMMON_EXPORT bool IsOffMainThreadSharedWorkerScriptFetchEnabled();
diff --git a/third_party/blink/public/mojom/credentialmanager/credential_manager.mojom b/third_party/blink/public/mojom/credentialmanager/credential_manager.mojom index e22ed21..b4963ea 100644 --- a/third_party/blink/public/mojom/credentialmanager/credential_manager.mojom +++ b/third_party/blink/public/mojom/credentialmanager/credential_manager.mojom
@@ -36,6 +36,7 @@ ANDROID_EMPTY_ALLOW_CREDENTIALS, ANDROID_NOT_SUPPORTED_ERROR, ANDROID_USER_VERIFICATION_UNSUPPORTED, + ABORT, UNKNOWN };
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom index 3677419..b9788ffc 100644 --- a/third_party/blink/public/mojom/web_feature/web_feature.mojom +++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2293,6 +2293,9 @@ kMediaCapabilitiesDecodingInfoWithKeySystemConfig = 2888, kRevertInCustomIdent = 2889, kUnoptimizedImagePolicies = 2890, + kVTTCueParser = 2891, + kMediaElementTextTrackContainer = 2892, + kMediaElementTextTrackList = 2893, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/mojom/webauthn/authenticator.mojom b/third_party/blink/public/mojom/webauthn/authenticator.mojom index 2aff731c..9cc5438 100644 --- a/third_party/blink/public/mojom/webauthn/authenticator.mojom +++ b/third_party/blink/public/mojom/webauthn/authenticator.mojom
@@ -27,6 +27,7 @@ EMPTY_ALLOW_CREDENTIALS, ANDROID_NOT_SUPPORTED_ERROR, PROTECTION_POLICY_INCONSISTENT, + ABORT_ERROR, UNKNOWN_ERROR, }; @@ -366,4 +367,9 @@ // Parties use this method to determine whether they can create a new // credential using a user-verifying platform authenticator. IsUserVerifyingPlatformAuthenticatorAvailable() => (bool available); + + // Cancel an ongoing MakeCredential or GetAssertion request + // Only one MakeCredential or GetAssertion call at a time is allowed, + // any future calls are cancelled + Cancel(); };
diff --git a/third_party/blink/public/platform/web_gesture_event.h b/third_party/blink/public/platform/web_gesture_event.h index d993bbf..1a673bd5 100644 --- a/third_party/blink/public/platform/web_gesture_event.h +++ b/third_party/blink/public/platform/web_gesture_event.h
@@ -20,11 +20,11 @@ class WebGestureEvent : public WebInputEvent { public: - enum InertialPhaseState { - kUnknownMomentumPhase = 0, // No phase information. - kNonMomentumPhase, // Regular scrolling phase. - kMomentumPhase, // Momentum phase. - kLastPhase = kMomentumPhase, + enum class InertialPhaseState { + kUnknownMomentum = 0, // No phase information. + kNonMomentum, // Regular scrolling phase. + kMomentum, // Momentum phase. + kMaxValue = kMomentum, }; bool is_source_touch_event_set_non_blocking;
diff --git a/third_party/blink/public/platform/web_theme_engine.h b/third_party/blink/public/platform/web_theme_engine.h index d3253c4a..85f0fcc8 100644 --- a/third_party/blink/public/platform/web_theme_engine.h +++ b/third_party/blink/public/platform/web_theme_engine.h
@@ -157,6 +157,8 @@ ScrollbarThumbExtraParams scrollbar_thumb; }; + virtual ~WebThemeEngine() {} + // Gets the size of the given theme part. For variable sized items // like vertical scrollbar thumbs, the width will be the required width of // the track while the height will be the minimum height.
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h index d0f6eeb..fa0c5f7a 100644 --- a/third_party/blink/public/web/web_local_frame.h +++ b/third_party/blink/public/web/web_local_frame.h
@@ -369,22 +369,6 @@ v8::Local<v8::Value> argv[], WebScriptExecutionCallback*) = 0; - enum class PausableTaskResult { - // The context was invalid or destroyed. - kContextInvalidOrDestroyed, - // Script is not paused. - kReady, - }; - using PausableTaskCallback = base::OnceCallback<void(PausableTaskResult)>; - - // Queues a callback to run script when the context is not paused, e.g. for a - // modal JS dialog or window.print(). This callback can run immediately if the - // context is not paused. If the context is invalidated before becoming - // unpaused, the callback will be run with a kContextInvalidOrDestroyed value. - // This asserts that the context is valid at the time of this - // call. - virtual void PostPausableTask(PausableTaskCallback) = 0; - enum ScriptExecutionType { // Execute script synchronously, unless the page is suspended. kSynchronous,
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc index 9bfbd433..237f186 100644 --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc
@@ -43,6 +43,7 @@ #include "services/resource_coordinator/public/mojom/coordination_unit.mojom-blink.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" +#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/frame/document_interface_broker.mojom-blink.h" #include "third_party/blink/public/mojom/insecure_input/insecure_input_service.mojom-blink.h" #include "third_party/blink/public/mojom/net/ip_address_space.mojom-blink.h" @@ -7782,13 +7783,10 @@ return true; } - // TODO(ekaramad): This method, for now, always returns true. The intent is - // for this method to eventually block programmatic focus in certain cases. - // The enforcement will be added after metrics are collected - // (https://crbug.com/954349). WebFeature uma_type; + bool sandboxed = IsSandboxed(WebSandboxFlags::kNavigation); bool ad = frame_->IsAdSubframe(); - if (IsSandboxed(WebSandboxFlags::kNavigation)) { + if (sandboxed) { uma_type = ad ? WebFeature::kFocusWithoutUserActivationSandboxedAdFrame : WebFeature::kFocusWithoutUserActivationSandboxedNotAdFrame; } else { @@ -7797,7 +7795,11 @@ : WebFeature::kFocusWithoutUserActivationNotSandboxedNotAdFrame; } UseCounter::Count(*this, uma_type); - return true; + if (!base::FeatureList::IsEnabled( + features::kBlockingFocusWithoutUserActivation)) { + return true; + } + return !sandboxed; } LazyLoadImageObserver& Document::EnsureLazyLoadImageObserver() { @@ -7902,19 +7904,6 @@ if (frame_->Loader().StateMachine()->IsDisplayingInitialEmptyDocument()) load_event_progress_ = kLoadEventNotRun; frame_->Loader().Progress().ProgressStarted(); - // Some sites appear to depend on javascript:'' synchronously populating an - // iframe, similar to about:blank. See https://crbug.com/923585 - // TODO(japhet): The spec doesn't say anything about ever loading JS urls - // synchronously. It's unclear whether the problem is that JS url navigation - // has to be sync in certain situations, or if these are just legacy websites - // assuming non-spec-compliant behavior. Either way, this special case seems - // hacky. - if (frame_->Loader().StateMachine()->IsDisplayingInitialEmptyDocument() && - (url == "javascript:''" || url == "javascript:\"\"")) { - frame_->GetScriptController().ExecuteJavaScriptURL(url, disposition); - CheckCompleted(); - return; - } pending_javascript_urls_.push_back(PendingJavascriptUrl(url, disposition)); if (!javascript_url_task_handle_.IsActive()) { javascript_url_task_handle_ = PostCancellableTask(
diff --git a/third_party/blink/renderer/core/editing/BUILD.gn b/third_party/blink/renderer/core/editing/BUILD.gn index 9517a04..415e88eb 100644 --- a/third_party/blink/renderer/core/editing/BUILD.gn +++ b/third_party/blink/renderer/core/editing/BUILD.gn
@@ -246,6 +246,7 @@ "selection_editor.h", "selection_modifier.cc", "selection_modifier.h", + "selection_modifier_line.cc", "selection_strategy.h", "selection_template.cc", "selection_template.h",
diff --git a/third_party/blink/renderer/core/editing/selection_modifier.cc b/third_party/blink/renderer/core/editing/selection_modifier.cc index 029a2fb..3ca5231 100644 --- a/third_party/blink/renderer/core/editing/selection_modifier.cc +++ b/third_party/blink/renderer/core/editing/selection_modifier.cc
@@ -68,7 +68,10 @@ : LogicalStartOfLine(c); } -VisiblePosition PreviousParagraphPosition( +} // namespace + +// static +VisiblePosition SelectionModifier::PreviousParagraphPosition( const VisiblePosition& passed_position, LayoutUnit x_point) { DCHECK(passed_position.IsValid()) << passed_position; @@ -84,8 +87,10 @@ return position; } -VisiblePosition NextParagraphPosition(const VisiblePosition& passed_position, - LayoutUnit x_point) { +// static +VisiblePosition SelectionModifier::NextParagraphPosition( + const VisiblePosition& passed_position, + LayoutUnit x_point) { DCHECK(passed_position.IsValid()) << passed_position; VisiblePosition position = passed_position; do { @@ -98,8 +103,6 @@ return position; } -} // namespace - LayoutUnit NoXPosForVerticalArrowNavigation() { return LayoutUnit::Min(); }
diff --git a/third_party/blink/renderer/core/editing/selection_modifier.h b/third_party/blink/renderer/core/editing/selection_modifier.h index 7633511..f17b36f4 100644 --- a/third_party/blink/renderer/core/editing/selection_modifier.h +++ b/third_party/blink/renderer/core/editing/selection_modifier.h
@@ -101,6 +101,16 @@ VisiblePosition ModifyMovingBackward(TextGranularity); Position NextWordPositionForPlatform(const Position&); + static VisiblePosition PreviousLinePosition(const VisiblePosition&, + LayoutUnit line_direction_point); + static VisiblePosition NextLinePosition(const VisiblePosition&, + LayoutUnit line_direction_point); + static VisiblePosition PreviousParagraphPosition( + const VisiblePosition&, + LayoutUnit line_direction_point); + static VisiblePosition NextParagraphPosition(const VisiblePosition&, + LayoutUnit line_direction_point); + Member<const LocalFrame> frame_; // TODO(editing-dev): We should get rid of |selection_| once we change // all member functions not to use |selection_|.
diff --git a/third_party/blink/renderer/core/editing/selection_modifier_line.cc b/third_party/blink/renderer/core/editing/selection_modifier_line.cc new file mode 100644 index 0000000..0d5a7c2 --- /dev/null +++ b/third_party/blink/renderer/core/editing/selection_modifier_line.cc
@@ -0,0 +1,352 @@ +/* + * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/editing/selection_modifier.h" + +#include "third_party/blink/renderer/core/editing/editing_utilities.h" +#include "third_party/blink/renderer/core/editing/inline_box_position.h" +#include "third_party/blink/renderer/core/editing/visible_position.h" +#include "third_party/blink/renderer/core/editing/visible_units.h" +#include "third_party/blink/renderer/core/layout/api/line_layout_block_flow.h" +#include "third_party/blink/renderer/core/layout/line/root_inline_box.h" + +namespace blink { + +namespace { + +ContainerNode* HighestEditableRootOfNode(const Node& node) { + return HighestEditableRoot(FirstPositionInOrBeforeNode(node)); +} + +Node* PreviousNodeConsideringAtomicNodes(const Node& start) { + if (start.previousSibling()) { + Node* node = start.previousSibling(); + while (!IsAtomicNode(node) && node->lastChild()) + node = node->lastChild(); + return node; + } + return start.parentNode(); +} + +Node* NextNodeConsideringAtomicNodes(const Node& start) { + if (!IsAtomicNode(&start) && start.hasChildren()) + return start.firstChild(); + if (start.nextSibling()) + return start.nextSibling(); + const Node* node = &start; + while (node && !node->nextSibling()) + node = node->parentNode(); + if (node) + return node->nextSibling(); + return nullptr; +} + +// Returns the previous leaf node or nullptr if there are no more. Delivers leaf +// nodes as if the whole DOM tree were a linear chain of its leaf nodes. +Node* PreviousAtomicLeafNode(const Node& start) { + Node* node = PreviousNodeConsideringAtomicNodes(start); + while (node) { + if (IsAtomicNode(node)) + return node; + node = PreviousNodeConsideringAtomicNodes(*node); + } + return nullptr; +} + +// Returns the next leaf node or nullptr if there are no more. Delivers leaf +// nodes as if the whole DOM tree were a linear chain of its leaf nodes. +Node* NextAtomicLeafNode(const Node& start) { + Node* node = NextNodeConsideringAtomicNodes(start); + while (node) { + if (IsAtomicNode(node)) + return node; + node = NextNodeConsideringAtomicNodes(*node); + } + return nullptr; +} + +Node* PreviousLeafWithSameEditability(const Node& node) { + const bool editable = HasEditableStyle(node); + for (Node* runner = PreviousAtomicLeafNode(node); runner; + runner = PreviousAtomicLeafNode(*runner)) { + if (editable == HasEditableStyle(*runner)) + return runner; + } + return nullptr; +} + +Node* NextLeafWithGivenEditability(Node* node, bool editable) { + if (!node) + return nullptr; + + for (Node* runner = NextAtomicLeafNode(*node); runner; + runner = NextAtomicLeafNode(*runner)) { + if (editable == HasEditableStyle(*runner)) + return runner; + } + return nullptr; +} + +LayoutPoint AbsoluteLineDirectionPointToLocalPointInBlock( + const RootInlineBox* root, + LayoutUnit line_direction_point) { + DCHECK(root); + LineLayoutBlockFlow containing_block = root->Block(); + FloatPoint absolute_block_point = + containing_block.LocalToAbsolute(FloatPoint()); + if (containing_block.HasOverflowClip()) + absolute_block_point -= FloatSize(containing_block.ScrolledContentOffset()); + + if (root->Block().IsHorizontalWritingMode()) { + return LayoutPoint( + LayoutUnit(line_direction_point - absolute_block_point.X()), + root->BlockDirectionPointInLine()); + } + + return LayoutPoint( + root->BlockDirectionPointInLine(), + LayoutUnit(line_direction_point - absolute_block_point.Y())); +} + +bool InSameLine(const Node& node, const VisiblePosition& visible_position) { + if (!node.GetLayoutObject()) + return true; + return InSameLine(CreateVisiblePosition(FirstPositionInOrBeforeNode(node)), + visible_position); +} + +Node* FindNodeInPreviousLine(const Node& start_node, + const VisiblePosition& visible_position) { + for (Node* runner = PreviousLeafWithSameEditability(start_node); runner; + runner = PreviousLeafWithSameEditability(*runner)) { + if (!InSameLine(*runner, visible_position)) + return runner; + } + return nullptr; +} + +// FIXME: consolidate with code in previousLinePosition. +Position PreviousRootInlineBoxCandidatePosition( + Node* node, + const VisiblePosition& visible_position) { + DCHECK(visible_position.IsValid()) << visible_position; + ContainerNode* highest_root = + HighestEditableRoot(visible_position.DeepEquivalent()); + Node* const previous_node = FindNodeInPreviousLine(*node, visible_position); + for (Node* runner = previous_node; runner && !runner->IsShadowRoot(); + runner = PreviousLeafWithSameEditability(*runner)) { + if (HighestEditableRootOfNode(*runner) != highest_root) + break; + + const Position& candidate = + IsHTMLBRElement(*runner) + ? Position::BeforeNode(*runner) + : Position::EditingPositionOf(runner, CaretMaxOffset(runner)); + if (IsVisuallyEquivalentCandidate(candidate)) + return candidate; + } + return Position(); +} + +Position NextRootInlineBoxCandidatePosition( + Node* node, + const VisiblePosition& visible_position) { + DCHECK(visible_position.IsValid()) << visible_position; + ContainerNode* highest_root = + HighestEditableRoot(visible_position.DeepEquivalent()); + // TODO(xiaochengh): We probably also need to pass in the starting editability + // to |PreviousLeafWithSameEditability|. + const bool is_editable = HasEditableStyle( + *visible_position.DeepEquivalent().ComputeContainerNode()); + Node* next_node = NextLeafWithGivenEditability(node, is_editable); + while (next_node && InSameLine(*next_node, visible_position)) { + next_node = NextLeafWithGivenEditability(next_node, is_editable); + } + + for (Node* runner = next_node; runner && !runner->IsShadowRoot(); + runner = NextLeafWithGivenEditability(runner, is_editable)) { + if (HighestEditableRootOfNode(*runner) != highest_root) + break; + + const Position& candidate = + Position::EditingPositionOf(runner, CaretMinOffset(runner)); + if (IsVisuallyEquivalentCandidate(candidate)) + return candidate; + } + return Position(); +} + +} // namespace + +// static +VisiblePosition SelectionModifier::PreviousLinePosition( + const VisiblePosition& visible_position, + LayoutUnit line_direction_point) { + DCHECK(visible_position.IsValid()) << visible_position; + + // TODO(xiaochengh): Make all variables |const|. + + Position p = visible_position.DeepEquivalent(); + Node* node = p.AnchorNode(); + + if (!node) + return VisiblePosition(); + + LayoutObject* layout_object = node->GetLayoutObject(); + if (!layout_object) + return VisiblePosition(); + + const RootInlineBox* root = nullptr; + const InlineBox* box = ComputeInlineBoxPosition(visible_position).inline_box; + if (box) { + root = box->Root().PrevRootBox(); + // We want to skip zero height boxes. + // This could happen in case it is a TrailingFloatsRootInlineBox. + if (!root || !root->LogicalHeight() || !root->FirstLeafChild()) + root = nullptr; + } + + if (!root) { + Position position = + PreviousRootInlineBoxCandidatePosition(node, visible_position); + if (position.IsNotNull()) { + const VisiblePosition candidate = CreateVisiblePosition(position); + const InlineBox* inline_box = + candidate.IsNotNull() ? ComputeInlineBoxPosition(candidate).inline_box + : nullptr; + if (!inline_box) { + // TODO(editing-dev): Investigate if this is correct for null + // |candidate|. + return candidate; + } + root = &inline_box->Root(); + } + } + + if (root) { + // FIXME: Can be wrong for multi-column layout and with transforms. + LayoutPoint point_in_line = AbsoluteLineDirectionPointToLocalPointInBlock( + root, line_direction_point); + LineLayoutItem line_layout_item = + root->ClosestLeafChildForPoint(point_in_line, IsEditablePosition(p)) + ->GetLineLayoutItem(); + Node* node = line_layout_item.GetNode(); + if (node && EditingIgnoresContent(*node)) + return VisiblePosition::InParentBeforeNode(*node); + return CreateVisiblePosition( + line_layout_item.PositionForPoint(point_in_line)); + } + + // Could not find a previous line. This means we must already be on the first + // line. Move to the start of the content in this block, which effectively + // moves us to the start of the line we're on. + Element* root_element = HasEditableStyle(*node) + ? RootEditableElement(*node) + : node->GetDocument().documentElement(); + if (!root_element) + return VisiblePosition(); + return VisiblePosition::FirstPositionInNode(*root_element); +} + +// static +VisiblePosition SelectionModifier::NextLinePosition( + const VisiblePosition& visible_position, + LayoutUnit line_direction_point) { + DCHECK(visible_position.IsValid()) << visible_position; + + // TODO(xiaochengh): Make all variables |const|. + + Position p = visible_position.DeepEquivalent(); + Node* node = p.AnchorNode(); + + if (!node) + return VisiblePosition(); + + LayoutObject* layout_object = node->GetLayoutObject(); + if (!layout_object) + return VisiblePosition(); + + const RootInlineBox* root = nullptr; + const InlineBox* box = ComputeInlineBoxPosition(visible_position).inline_box; + if (box) { + root = box->Root().NextRootBox(); + // We want to skip zero height boxes. + // This could happen in case it is a TrailingFloatsRootInlineBox. + if (!root || !root->LogicalHeight() || !root->FirstLeafChild()) + root = nullptr; + } + + if (!root) { + // FIXME: We need do the same in previousLinePosition. + Node* child = NodeTraversal::ChildAt(*node, p.ComputeEditingOffset()); + Node* search_start_node = + child ? child : &NodeTraversal::LastWithinOrSelf(*node); + Position position = + NextRootInlineBoxCandidatePosition(search_start_node, visible_position); + if (position.IsNotNull()) { + const VisiblePosition candidate = CreateVisiblePosition(position); + const InlineBox* inline_box = + candidate.IsNotNull() ? ComputeInlineBoxPosition(candidate).inline_box + : nullptr; + if (!inline_box) { + // TODO(editing-dev): Investigate if this is correct for null + // |candidate|. + return candidate; + } + root = &inline_box->Root(); + } + } + + if (root) { + // FIXME: Can be wrong for multi-column layout and with transforms. + LayoutPoint point_in_line = AbsoluteLineDirectionPointToLocalPointInBlock( + root, line_direction_point); + LineLayoutItem line_layout_item = + root->ClosestLeafChildForPoint(point_in_line, IsEditablePosition(p)) + ->GetLineLayoutItem(); + Node* node = line_layout_item.GetNode(); + if (node && EditingIgnoresContent(*node)) + return VisiblePosition::InParentBeforeNode(*node); + return CreateVisiblePosition( + line_layout_item.PositionForPoint(point_in_line)); + } + + // Could not find a next line. This means we must already be on the last line. + // Move to the end of the content in this block, which effectively moves us + // to the end of the line we're on. + Element* root_element = HasEditableStyle(*node) + ? RootEditableElement(*node) + : node->GetDocument().documentElement(); + if (!root_element) + return VisiblePosition(); + return VisiblePosition::LastPositionInNode(*root_element); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/editing/selection_modifier_test.cc b/third_party/blink/renderer/core/editing/selection_modifier_test.cc index 35e4b4a5..1b0ac200 100644 --- a/third_party/blink/renderer/core/editing/selection_modifier_test.cc +++ b/third_party/blink/renderer/core/editing/selection_modifier_test.cc
@@ -30,4 +30,22 @@ EXPECT_EQ(SelectionInDOMTree(), modifier.Selection().AsSelection()); } +TEST_F(SelectionModifierTest, PreviousLineWithDisplayNone) { + InsertStyleElement("body{font-family: monospace}"); + const SelectionInDOMTree selection = SetSelectionTextToBody( + "<div contenteditable>" + "<div>foo bar</div>" + "<div>foo <b style=\"display:none\">qux</b> bar baz|</div>" + "</div>"); + SelectionModifier modifier(GetFrame(), selection); + modifier.Modify(SelectionModifyAlteration::kMove, + SelectionModifyDirection::kBackward, TextGranularity::kLine); + EXPECT_EQ( + "<div contenteditable>" + "<div>foo bar|</div>" + "<div>foo <b style=\"display:none\">qux</b> bar baz</div>" + "</div>", + GetSelectionTextFromBody(modifier.Selection().AsSelection())); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/visible_units.h b/third_party/blink/renderer/core/editing/visible_units.h index 4b2f0405..52f277a 100644 --- a/third_party/blink/renderer/core/editing/visible_units.h +++ b/third_party/blink/renderer/core/editing/visible_units.h
@@ -35,7 +35,6 @@ namespace blink { -class LayoutUnit; class LayoutObject; class Node; class IntPoint; @@ -165,10 +164,6 @@ CORE_EXPORT VisiblePosition EndOfLine(const VisiblePosition&); CORE_EXPORT VisiblePositionInFlatTree EndOfLine(const VisiblePositionInFlatTree&); -CORE_EXPORT VisiblePosition -PreviousLinePosition(const VisiblePosition&, LayoutUnit line_direction_point); -CORE_EXPORT VisiblePosition NextLinePosition(const VisiblePosition&, - LayoutUnit line_direction_point); CORE_EXPORT bool InSameLine(const VisiblePosition&, const VisiblePosition&); CORE_EXPORT bool InSameLine(const VisiblePositionInFlatTree&, const VisiblePositionInFlatTree&); @@ -299,11 +294,6 @@ const VisiblePositionInFlatTree&, const PositionInFlatTree&); -Position NextRootInlineBoxCandidatePosition(Node*, const VisiblePosition&); - -CORE_EXPORT Position -PreviousRootInlineBoxCandidatePosition(Node*, const VisiblePosition&); - } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_VISIBLE_UNITS_H_
diff --git a/third_party/blink/renderer/core/editing/visible_units_line.cc b/third_party/blink/renderer/core/editing/visible_units_line.cc index 840e70d..8e5ef31 100644 --- a/third_party/blink/renderer/core/editing/visible_units_line.cc +++ b/third_party/blink/renderer/core/editing/visible_units_line.cc
@@ -30,12 +30,10 @@ #include "third_party/blink/renderer/core/editing/visible_units.h" -#include "third_party/blink/renderer/core/accessibility/ax_object_cache.h" #include "third_party/blink/renderer/core/editing/editing_utilities.h" #include "third_party/blink/renderer/core/editing/inline_box_position.h" #include "third_party/blink/renderer/core/editing/ng_flat_tree_shorthands.h" #include "third_party/blink/renderer/core/editing/visible_position.h" -#include "third_party/blink/renderer/core/layout/api/line_layout_block_flow.h" #include "third_party/blink/renderer/core/layout/line/inline_text_box.h" #include "third_party/blink/renderer/core/layout/line/root_inline_box.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_caret_position.h" @@ -48,80 +46,6 @@ namespace { -ContainerNode* HighestEditableRootOfNode(const Node& node) { - return HighestEditableRoot(FirstPositionInOrBeforeNode(node)); -} - -Node* PreviousNodeConsideringAtomicNodes(const Node& start) { - if (start.previousSibling()) { - Node* node = start.previousSibling(); - while (!IsAtomicNode(node) && node->lastChild()) - node = node->lastChild(); - return node; - } - return start.parentNode(); -} - -Node* NextNodeConsideringAtomicNodes(const Node& start) { - if (!IsAtomicNode(&start) && start.hasChildren()) - return start.firstChild(); - if (start.nextSibling()) - return start.nextSibling(); - const Node* node = &start; - while (node && !node->nextSibling()) - node = node->parentNode(); - if (node) - return node->nextSibling(); - return nullptr; -} - -// Returns the previous leaf node or nullptr if there are no more. Delivers leaf -// nodes as if the whole DOM tree were a linear chain of its leaf nodes. -Node* PreviousAtomicLeafNode(const Node& start) { - Node* node = PreviousNodeConsideringAtomicNodes(start); - while (node) { - if (IsAtomicNode(node)) - return node; - node = PreviousNodeConsideringAtomicNodes(*node); - } - return nullptr; -} - -// Returns the next leaf node or nullptr if there are no more. Delivers leaf -// nodes as if the whole DOM tree were a linear chain of its leaf nodes. -Node* NextAtomicLeafNode(const Node& start) { - Node* node = NextNodeConsideringAtomicNodes(start); - while (node) { - if (IsAtomicNode(node)) - return node; - node = NextNodeConsideringAtomicNodes(*node); - } - return nullptr; -} - -Node* PreviousLeafWithSameEditability(const Node& node) { - const bool editable = HasEditableStyle(node); - for (Node* runner = PreviousAtomicLeafNode(node); runner; - runner = PreviousAtomicLeafNode(*runner)) { - if (editable == HasEditableStyle(*runner)) - return runner; - } - return nullptr; -} - -Node* NextLeafWithGivenEditability(Node* node, - bool editable) { - if (!node) - return nullptr; - - for (Node* runner = NextAtomicLeafNode(*node); runner; - runner = NextAtomicLeafNode(*runner)) { - if (editable == HasEditableStyle(*runner)) - return runner; - } - return nullptr; -} - struct VisualOrdering; template <typename Strategy, typename Ordering> @@ -251,97 +175,8 @@ return StartOfLineAlgorithm<EditingInFlatTreeStrategy>(current_position); } -LayoutPoint AbsoluteLineDirectionPointToLocalPointInBlock( - const RootInlineBox* root, - LayoutUnit line_direction_point) { - DCHECK(root); - LineLayoutBlockFlow containing_block = root->Block(); - FloatPoint absolute_block_point = - containing_block.LocalToAbsolute(FloatPoint()); - if (containing_block.HasOverflowClip()) - absolute_block_point -= FloatSize(containing_block.ScrolledContentOffset()); - - if (root->Block().IsHorizontalWritingMode()) { - return LayoutPoint( - LayoutUnit(line_direction_point - absolute_block_point.X()), - root->BlockDirectionPointInLine()); - } - - return LayoutPoint( - root->BlockDirectionPointInLine(), - LayoutUnit(line_direction_point - absolute_block_point.Y())); -} - -bool InSameLine(const Node& node, const VisiblePosition& visible_position) { - if (!node.GetLayoutObject()) - return true; - return InSameLine(CreateVisiblePosition(FirstPositionInOrBeforeNode(node)), - visible_position); -} - -Node* FindNodeInPreviousLine(const Node& start_node, - const VisiblePosition& visible_position) { - for (Node* runner = PreviousLeafWithSameEditability(start_node); runner; - runner = PreviousLeafWithSameEditability(*runner)) { - if (!InSameLine(*runner, visible_position)) - return runner; - } - return nullptr; -} - } // namespace -// FIXME: consolidate with code in previousLinePosition. -Position PreviousRootInlineBoxCandidatePosition( - Node* node, - const VisiblePosition& visible_position) { - DCHECK(visible_position.IsValid()) << visible_position; - ContainerNode* highest_root = - HighestEditableRoot(visible_position.DeepEquivalent()); - Node* const previous_node = FindNodeInPreviousLine(*node, visible_position); - for (Node* runner = previous_node; runner && !runner->IsShadowRoot(); - runner = PreviousLeafWithSameEditability(*runner)) { - if (HighestEditableRootOfNode(*runner) != highest_root) - break; - - const Position& candidate = - IsHTMLBRElement(*runner) - ? Position::BeforeNode(*runner) - : Position::EditingPositionOf(runner, CaretMaxOffset(runner)); - if (IsVisuallyEquivalentCandidate(candidate)) - return candidate; - } - return Position(); -} - -Position NextRootInlineBoxCandidatePosition( - Node* node, - const VisiblePosition& visible_position) { - DCHECK(visible_position.IsValid()) << visible_position; - ContainerNode* highest_root = - HighestEditableRoot(visible_position.DeepEquivalent()); - // TODO(xiaochengh): We probably also need to pass in the starting editability - // to |PreviousLeafWithSameEditability|. - const bool is_editable = HasEditableStyle( - *visible_position.DeepEquivalent().ComputeContainerNode()); - Node* next_node = NextLeafWithGivenEditability(node, is_editable); - while (next_node && InSameLine(*next_node, visible_position)) { - next_node = NextLeafWithGivenEditability(next_node, is_editable); - } - - for (Node* runner = next_node; runner && !runner->IsShadowRoot(); - runner = NextLeafWithGivenEditability(runner, is_editable)) { - if (HighestEditableRootOfNode(*runner) != highest_root) - break; - - const Position& candidate = - Position::EditingPositionOf(runner, CaretMinOffset(runner)); - if (IsVisuallyEquivalentCandidate(candidate)) - return candidate; - } - return Position(); -} - // FIXME: Rename this function to reflect the fact it ignores bidi levels. VisiblePosition StartOfLine(const VisiblePosition& current_position) { DCHECK(current_position.IsValid()) << current_position; @@ -700,144 +535,4 @@ return IsLogicalEndOfLineAlgorithm<EditingInFlatTreeStrategy>(p); } -VisiblePosition PreviousLinePosition(const VisiblePosition& visible_position, - LayoutUnit line_direction_point) { - DCHECK(visible_position.IsValid()) << visible_position; - - // TODO(xiaochengh): Make all variables |const|. - - Position p = visible_position.DeepEquivalent(); - Node* node = p.AnchorNode(); - - if (!node) - return VisiblePosition(); - - LayoutObject* layout_object = node->GetLayoutObject(); - if (!layout_object) - return VisiblePosition(); - - const RootInlineBox* root = nullptr; - const InlineBox* box = ComputeInlineBoxPosition(visible_position).inline_box; - if (box) { - root = box->Root().PrevRootBox(); - // We want to skip zero height boxes. - // This could happen in case it is a TrailingFloatsRootInlineBox. - if (!root || !root->LogicalHeight() || !root->FirstLeafChild()) - root = nullptr; - } - - if (!root) { - Position position = - PreviousRootInlineBoxCandidatePosition(node, visible_position); - if (position.IsNotNull()) { - const VisiblePosition candidate = CreateVisiblePosition(position); - const InlineBox* inline_box = - candidate.IsNotNull() ? ComputeInlineBoxPosition(candidate).inline_box - : nullptr; - if (!inline_box) { - // TODO(editing-dev): Investigate if this is correct for null - // |candidate|. - return candidate; - } - root = &inline_box->Root(); - } - } - - if (root) { - // FIXME: Can be wrong for multi-column layout and with transforms. - LayoutPoint point_in_line = AbsoluteLineDirectionPointToLocalPointInBlock( - root, line_direction_point); - LineLayoutItem line_layout_item = - root->ClosestLeafChildForPoint(point_in_line, IsEditablePosition(p)) - ->GetLineLayoutItem(); - Node* node = line_layout_item.GetNode(); - if (node && EditingIgnoresContent(*node)) - return VisiblePosition::InParentBeforeNode(*node); - return CreateVisiblePosition( - line_layout_item.PositionForPoint(point_in_line)); - } - - // Could not find a previous line. This means we must already be on the first - // line. Move to the start of the content in this block, which effectively - // moves us to the start of the line we're on. - Element* root_element = HasEditableStyle(*node) - ? RootEditableElement(*node) - : node->GetDocument().documentElement(); - if (!root_element) - return VisiblePosition(); - return VisiblePosition::FirstPositionInNode(*root_element); -} - -VisiblePosition NextLinePosition(const VisiblePosition& visible_position, - LayoutUnit line_direction_point) { - DCHECK(visible_position.IsValid()) << visible_position; - - // TODO(xiaochengh): Make all variables |const|. - - Position p = visible_position.DeepEquivalent(); - Node* node = p.AnchorNode(); - - if (!node) - return VisiblePosition(); - - LayoutObject* layout_object = node->GetLayoutObject(); - if (!layout_object) - return VisiblePosition(); - - const RootInlineBox* root = nullptr; - const InlineBox* box = ComputeInlineBoxPosition(visible_position).inline_box; - if (box) { - root = box->Root().NextRootBox(); - // We want to skip zero height boxes. - // This could happen in case it is a TrailingFloatsRootInlineBox. - if (!root || !root->LogicalHeight() || !root->FirstLeafChild()) - root = nullptr; - } - - if (!root) { - // FIXME: We need do the same in previousLinePosition. - Node* child = NodeTraversal::ChildAt(*node, p.ComputeEditingOffset()); - Node* search_start_node = - child ? child : &NodeTraversal::LastWithinOrSelf(*node); - Position position = - NextRootInlineBoxCandidatePosition(search_start_node, visible_position); - if (position.IsNotNull()) { - const VisiblePosition candidate = CreateVisiblePosition(position); - const InlineBox* inline_box = - candidate.IsNotNull() ? ComputeInlineBoxPosition(candidate).inline_box - : nullptr; - if (!inline_box) { - // TODO(editing-dev): Investigate if this is correct for null - // |candidate|. - return candidate; - } - root = &inline_box->Root(); - } - } - - if (root) { - // FIXME: Can be wrong for multi-column layout and with transforms. - LayoutPoint point_in_line = AbsoluteLineDirectionPointToLocalPointInBlock( - root, line_direction_point); - LineLayoutItem line_layout_item = - root->ClosestLeafChildForPoint(point_in_line, IsEditablePosition(p)) - ->GetLineLayoutItem(); - Node* node = line_layout_item.GetNode(); - if (node && EditingIgnoresContent(*node)) - return VisiblePosition::InParentBeforeNode(*node); - return CreateVisiblePosition( - line_layout_item.PositionForPoint(point_in_line)); - } - - // Could not find a next line. This means we must already be on the last line. - // Move to the end of the content in this block, which effectively moves us - // to the end of the line we're on. - Element* root_element = HasEditableStyle(*node) - ? RootEditableElement(*node) - : node->GetDocument().documentElement(); - if (!root_element) - return VisiblePosition(); - return VisiblePosition::LastPositionInNode(*root_element); -} - } // namespace blink
diff --git a/third_party/blink/renderer/core/editing/visible_units_line_test.cc b/third_party/blink/renderer/core/editing/visible_units_line_test.cc index 424cc33..fb84e5a4 100644 --- a/third_party/blink/renderer/core/editing/visible_units_line_test.cc +++ b/third_party/blink/renderer/core/editing/visible_units_line_test.cc
@@ -647,22 +647,6 @@ StartOfLine(CreateVisiblePositionInFlatTree(*seven, 1)).DeepEquivalent()); } -TEST_F(VisibleUnitsLineTest, - PreviousRootInlineBoxCandidatePositionWithDisplayNone) { - SetBodyContent( - "<div contenteditable>" - "<div id=one>one abc</div>" - "<div id=two>two <b id=none style=display:none>def</b> ghi</div>" - "</div>"); - Element* const one = GetDocument().getElementById("one"); - Element* const two = GetDocument().getElementById("two"); - const VisiblePosition& visible_position = - CreateVisiblePosition(Position::LastPositionInNode(*two)); - EXPECT_EQ(Position(one->firstChild(), 7), - PreviousRootInlineBoxCandidatePosition(two->lastChild(), - visible_position)); -} - TEST_P(ParameterizedVisibleUnitsLineTest, InSameLineSkippingEmptyEditableDiv) { // This test records the InSameLine() results in // editing/selection/skip-over-contenteditable.html
diff --git a/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc b/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc index 8be42987..ad6352b 100644 --- a/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc +++ b/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc
@@ -166,7 +166,7 @@ web_gesture_event.data.scroll_update.velocity_x = 40; web_gesture_event.data.scroll_update.velocity_y = 42; web_gesture_event.data.scroll_update.inertial_phase = - WebGestureEvent::kMomentumPhase; + WebGestureEvent::InertialPhaseState::kMomentum; WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); @@ -182,7 +182,7 @@ // order to remain consist with delta values. EXPECT_EQ(40, scaled_gesture_event.VelocityX()); EXPECT_EQ(42, scaled_gesture_event.VelocityY()); - EXPECT_EQ(WebGestureEvent::kMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kMomentum, scaled_gesture_event.InertialPhase()); } @@ -202,7 +202,7 @@ EXPECT_EQ(6, position.Y()); EXPECT_EQ(20, scaled_gesture_event.PositionInScreen().x); EXPECT_EQ(22, scaled_gesture_event.PositionInScreen().y); - EXPECT_EQ(WebGestureEvent::kUnknownMomentumPhase, + EXPECT_EQ(WebGestureEvent::InertialPhaseState::kUnknownMomentum, scaled_gesture_event.InertialPhase()); }
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc index f944aca..43a599b 100644 --- a/third_party/blink/renderer/core/exported/web_frame_test.cc +++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -582,135 +582,6 @@ EXPECT_EQ(true, callback_helper.BoolValue()); } -class ScriptNotPausedCallbackHelper { - public: - ScriptNotPausedCallbackHelper() = default; - ~ScriptNotPausedCallbackHelper() = default; - - WebLocalFrame::PausableTaskCallback GetCallback() { - return WTF::Bind(&ScriptNotPausedCallbackHelper::Run, - WTF::Unretained(this)); - } - - void set_closure(base::OnceClosure closure) { closure_ = std::move(closure); } - const base::Optional<WebLocalFrame::PausableTaskResult>& result() const { - return result_; - } - - private: - void Run(WebLocalFrame::PausableTaskResult result) { - ASSERT_FALSE(result_) << "Callback invoked multiple times!"; - result_ = result; - if (closure_) - std::move(*closure_).Run(); - } - - base::Optional<WebLocalFrame::PausableTaskResult> result_; - base::Optional<base::OnceClosure> closure_; -}; - -TEST_F(WebFrameTest, CallingPostPausableTaskWhileNotPaused) { - RegisterMockedHttpURLLoad("foo.html"); - - frame_test_helpers::WebViewHelper web_view_helper; - web_view_helper.InitializeAndLoad(base_url_ + "foo.html"); - WebLocalFrameImpl* main_frame = web_view_helper.LocalMainFrame(); - - ScriptState::Scope scope(ToScriptStateForMainWorld(main_frame->GetFrame())); - - ScriptNotPausedCallbackHelper callback_helper; - main_frame->PostPausableTask(callback_helper.GetCallback()); - RunPendingTasks(); - - ASSERT_TRUE(callback_helper.result()); - EXPECT_EQ(WebLocalFrame::PausableTaskResult::kReady, - *callback_helper.result()); -} - -// Flaky on Android: crbug.com/804892. -#if defined(OS_ANDROID) -TEST_F(WebFrameTest, DISABLED_CallingPostPausableTaskWhilePaused) -#else -TEST_F(WebFrameTest, CallingPostPausableTaskWhilePaused) -#endif -{ - RegisterMockedHttpURLLoad("foo.html"); - - frame_test_helpers::WebViewHelper web_view_helper; - web_view_helper.InitializeAndLoad(base_url_ + "foo.html"); - WebLocalFrameImpl* main_frame = web_view_helper.LocalMainFrame(); - - ScriptState::Scope scope(ToScriptStateForMainWorld(main_frame->GetFrame())); - - // Suspend scheduled tasks so the script doesn't run. - web_view_helper.GetWebView()->GetPage()->SetPaused(true); - - ScriptNotPausedCallbackHelper callback_helper; - main_frame->PostPausableTask(callback_helper.GetCallback()); - RunPendingTasks(); - EXPECT_FALSE(callback_helper.result()); - - web_view_helper.GetWebView()->GetPage()->SetPaused(false); - RunPendingTasks(); - ASSERT_TRUE(callback_helper.result()); - EXPECT_EQ(WebLocalFrame::PausableTaskResult::kReady, - *callback_helper.result()); -} - -TEST_F(WebFrameTest, CallingPostPausableTaskAndDestroying) { - RegisterMockedHttpURLLoad("foo.html"); - - frame_test_helpers::WebViewHelper web_view_helper; - web_view_helper.InitializeAndLoad(base_url_ + "foo.html"); - WebLocalFrameImpl* main_frame = web_view_helper.LocalMainFrame(); - - ScriptState::Scope scope(ToScriptStateForMainWorld(main_frame->GetFrame())); - - // Suspend scheduled tasks so the script doesn't run. - web_view_helper.GetWebView()->GetPage()->SetPaused(true); - - ScriptNotPausedCallbackHelper callback_helper; - main_frame->PostPausableTask(callback_helper.GetCallback()); - RunPendingTasks(); - EXPECT_FALSE(callback_helper.result()); - - web_view_helper.Reset(); - ASSERT_TRUE(callback_helper.result()); - EXPECT_EQ(WebLocalFrame::PausableTaskResult::kContextInvalidOrDestroyed, - *callback_helper.result()); -} - -TEST_F(WebFrameTest, CallingPostPausableTaskAndDestroyingTheContext) { - RegisterMockedHttpURLLoad("foo.html"); - RegisterMockedHttpURLLoad("bar.html"); - - frame_test_helpers::WebViewHelper web_view_helper; - web_view_helper.InitializeAndLoad(base_url_ + "foo.html"); - WebLocalFrameImpl* main_frame = web_view_helper.LocalMainFrame(); - - auto navigate_frame = [](frame_test_helpers::WebViewHelper* web_view_helper, - const std::string& url) { - frame_test_helpers::LoadFrame( - web_view_helper->GetWebView()->MainFrameImpl(), url); - }; - - ScriptNotPausedCallbackHelper callback_helper; - // Navigate the frame when the helper is notified that script can run. This - // will invalidate the context immediately. - callback_helper.set_closure(WTF::Bind(navigate_frame, - WTF::Unretained(&web_view_helper), - base_url_ + "bar.html")); - - ScriptState::Scope scope(ToScriptStateForMainWorld(main_frame->GetFrame())); - - main_frame->PostPausableTask(callback_helper.GetCallback()); - RunPendingTasks(); - - ASSERT_TRUE(callback_helper.result()); - EXPECT_EQ(WebLocalFrame::PausableTaskResult::kReady, - *callback_helper.result()); -} - TEST_F(WebFrameTest, IframeScriptRemovesSelf) { RegisterMockedHttpURLLoad("single_iframe.html"); RegisterMockedHttpURLLoad("visible_iframe.html");
diff --git a/third_party/blink/renderer/core/exported/web_view_test.cc b/third_party/blink/renderer/core/exported/web_view_test.cc index 9b4e994..abb3a5b 100644 --- a/third_party/blink/renderer/core/exported/web_view_test.cc +++ b/third_party/blink/renderer/core/exported/web_view_test.cc
@@ -2659,8 +2659,8 @@ web_view->MainFrameWidget()->HandleInputEvent( WebCoalescedInputEvent(event))); - HTMLElement* element = ToHTMLElement( - web_view->MainFrameImpl()->GetDocument().GetElementById("obj")); + auto* element = To<HTMLElement>(static_cast<Node*>( + web_view->MainFrameImpl()->GetDocument().GetElementById("obj"))); EXPECT_FALSE(element->CanStartSelection()); } @@ -2684,8 +2684,8 @@ web_view->MainFrameWidget()->HandleInputEvent( WebCoalescedInputEvent(event))); - HTMLElement* element = ToHTMLElement( - web_view->MainFrameImpl()->GetDocument().GetElementById("obj")); + auto* element = To<HTMLElement>(static_cast<Node*>( + web_view->MainFrameImpl()->GetDocument().GetElementById("obj"))); EXPECT_TRUE(element->CanStartSelection()); }
diff --git a/third_party/blink/renderer/core/frame/BUILD.gn b/third_party/blink/renderer/core/frame/BUILD.gn index df6ab32..03647d3 100644 --- a/third_party/blink/renderer/core/frame/BUILD.gn +++ b/third_party/blink/renderer/core/frame/BUILD.gn
@@ -125,8 +125,6 @@ "page_scale_constraints_set.h", "pausable_script_executor.cc", "pausable_script_executor.h", - "pausable_task.cc", - "pausable_task.h", "performance_monitor.cc", "performance_monitor.h", "picture_in_picture_controller.cc",
diff --git a/third_party/blink/renderer/core/frame/pausable_task.cc b/third_party/blink/renderer/core/frame/pausable_task.cc deleted file mode 100644 index ea88b33..0000000 --- a/third_party/blink/renderer/core/frame/pausable_task.cc +++ /dev/null
@@ -1,72 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "third_party/blink/renderer/core/frame/pausable_task.h" - -#include "base/location.h" -#include "third_party/blink/renderer/core/dom/document.h" -#include "third_party/blink/renderer/platform/wtf/functional.h" - -namespace blink { - -PausableTask::~PausableTask() = default; - -// static -void PausableTask::Post(ExecutionContext* context, - WebLocalFrame::PausableTaskCallback callback) { - DCHECK(!context->IsContextDestroyed()); - if (!context->IsContextPaused()) { - std::move(callback).Run(WebLocalFrame::PausableTaskResult::kReady); - } else { - // Manages its own lifetime and invokes the callback when script is - // unpaused. - MakeGarbageCollected<PausableTask>(context, std::move(callback)); - } -} - -void PausableTask::ContextDestroyed(ExecutionContext* destroyed_context) { - DCHECK(callback_); - - Dispose(); - - std::move(callback_).Run( - WebLocalFrame::PausableTaskResult::kContextInvalidOrDestroyed); -} - -void PausableTask::Run() { - CHECK(!GetExecutionContext()->IsContextDestroyed()); - DCHECK(!GetExecutionContext()->IsContextPaused()); - DCHECK(callback_); - - auto callback = std::move(callback_); - - // Call Dispose() now, since it's possible that the callback will destroy the - // context. - Dispose(); - - std::move(callback).Run(WebLocalFrame::PausableTaskResult::kReady); -} - -PausableTask::PausableTask(ExecutionContext* context, - WebLocalFrame::PausableTaskCallback callback) - : ContextLifecycleObserver(context), - callback_(std::move(callback)), - keep_alive_(this) { - DCHECK(callback_); - DCHECK(context); - DCHECK(!context->IsContextDestroyed()); - DCHECK(context->IsContextPaused()); - task_handle_ = PostCancellableTask( - *context->GetTaskRunner(TaskType::kInternalDefault), FROM_HERE, - WTF::Bind(&PausableTask::Run, WrapPersistent(this))); -} - -void PausableTask::Dispose() { - // Remove object as a ContextLifecycleObserver. - ContextLifecycleObserver::ClearContext(); - keep_alive_.Clear(); - task_handle_.Cancel(); -} - -} // namespace blink
diff --git a/third_party/blink/renderer/core/frame/pausable_task.h b/third_party/blink/renderer/core/frame/pausable_task.h deleted file mode 100644 index c829c8e..0000000 --- a/third_party/blink/renderer/core/frame/pausable_task.h +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_PAUSABLE_TASK_H_ -#define THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_PAUSABLE_TASK_H_ - -#include <memory> - -#include "third_party/blink/public/web/web_local_frame.h" -#include "third_party/blink/renderer/core/core_export.h" -#include "third_party/blink/renderer/core/execution_context/context_lifecycle_observer.h" -#include "third_party/blink/renderer/platform/heap/self_keep_alive.h" -#include "third_party/blink/renderer/platform/scheduler/public/post_cancellable_task.h" - -namespace blink { - -// A class that monitors the lifetime and suspension state of a context, and -// runs a task either when the context is unsuspended or when the context is -// invalidated. -class CORE_EXPORT PausableTask final - : public GarbageCollectedFinalized<PausableTask>, - public ContextLifecycleObserver { - USING_GARBAGE_COLLECTED_MIXIN(PausableTask); - - public: - // Note: This asserts that the context is currently suspended. - PausableTask(ExecutionContext*, WebLocalFrame::PausableTaskCallback); - virtual ~PausableTask(); - - // Checks if the context is paused, and, if not, executes the callback - // immediately. Otherwise constructs a PausableTask that will run the - // callback when execution is unpaused. - static void Post(ExecutionContext*, WebLocalFrame::PausableTaskCallback); - - // ContextLifecycleObserver: - void ContextDestroyed(ExecutionContext*) override; - - private: - void Run(); - void Dispose(); - - WebLocalFrame::PausableTaskCallback callback_; - TaskHandle task_handle_; - - SelfKeepAlive<PausableTask> keep_alive_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_CORE_FRAME_PAUSABLE_TASK_H_
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc index 6f88f2b7..bee484d2 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -187,7 +187,6 @@ #include "third_party/blink/renderer/core/frame/local_frame_view.h" #include "third_party/blink/renderer/core/frame/page_scale_constraints_set.h" #include "third_party/blink/renderer/core/frame/pausable_script_executor.h" -#include "third_party/blink/renderer/core/frame/pausable_task.h" #include "third_party/blink/renderer/core/frame/picture_in_picture_controller.h" #include "third_party/blink/renderer/core/frame/remote_frame.h" #include "third_party/blink/renderer/core/frame/remote_frame_owner.h" @@ -812,13 +811,6 @@ callback); } -void WebLocalFrameImpl::PostPausableTask(PausableTaskCallback callback) { - DCHECK(GetFrame()); - Document* document = GetFrame()->GetDocument(); - DCHECK(document); - PausableTask::Post(document, std::move(callback)); -} - void WebLocalFrameImpl::RequestExecuteScriptInIsolatedWorld( int world_id, const WebScriptSource* sources_in,
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h index dc5b0d0..8b5916d 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -133,7 +133,6 @@ int argc, v8::Local<v8::Value> argv[], WebScriptExecutionCallback*) override; - void PostPausableTask(PausableTaskCallback) override; void RequestExecuteScriptInIsolatedWorld( int world_id, const WebScriptSource* source_in,
diff --git a/third_party/blink/renderer/core/html/forms/html_field_set_element.cc b/third_party/blink/renderer/core/html/forms/html_field_set_element.cc index 7f09324..0380724 100644 --- a/third_party/blink/renderer/core/html/forms/html_field_set_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_field_set_element.cc
@@ -52,9 +52,9 @@ if (element->IsFormControlElement()) { if (!ToHTMLFormControlElement(element)->IsNotCandidateOrValid()) return false; - } else if (element->IsHTMLElement() && - blink::ToHTMLElement(element)->IsFormAssociatedCustomElement()) { - if (!element->EnsureElementInternals().IsNotCandidateOrValid()) + } else if (auto* html_element = DynamicTo<HTMLElement>(element)) { + if (html_element->IsFormAssociatedCustomElement() && + !element->EnsureElementInternals().IsNotCandidateOrValid()) return false; } }
diff --git a/third_party/blink/renderer/core/html/forms/html_form_element.cc b/third_party/blink/renderer/core/html/forms/html_form_element.cc index a9914db..1727da5 100644 --- a/third_party/blink/renderer/core/html/forms/html_form_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_form_element.cc
@@ -752,7 +752,7 @@ #if DCHECK_IS_ON() if (!element) return nullptr; - SECURITY_DCHECK(ToHTMLElement(element)->formOwner() == this); + SECURITY_DCHECK(To<HTMLElement>(element)->formOwner() == this); if (IsHTMLImageElement(*element)) { SECURITY_DCHECK(ImageElements().Find(element) != kNotFound); } else if (IsHTMLObjectElement(*element)) {
diff --git a/third_party/blink/renderer/core/html/forms/html_select_element.cc b/third_party/blink/renderer/core/html/forms/html_select_element.cc index a1faaeae..924a852 100644 --- a/third_party/blink/renderer/core/html/forms/html_select_element.cc +++ b/third_party/blink/renderer/core/html/forms/html_select_element.cc
@@ -752,33 +752,35 @@ for (Element* current_element = ElementTraversal::FirstWithin(*this); current_element && list_items_.size() < kMaxListItems;) { - if (!current_element->IsHTMLElement()) { + auto* current_html_element = DynamicTo<HTMLElement>(current_element); + if (!current_html_element) { current_element = ElementTraversal::NextSkippingChildren(*current_element, this); continue; } - HTMLElement& current = blink::ToHTMLElement(*current_element); // We should ignore nested optgroup elements. The HTML parser flatten // them. However we need to ignore nested optgroups built by DOM APIs. // This behavior matches to IE and Firefox. - if (IsHTMLOptGroupElement(current)) { - if (current.parentNode() != this) { - current_element = ElementTraversal::NextSkippingChildren(current, this); + if (IsHTMLOptGroupElement(*current_html_element)) { + if (current_html_element->parentNode() != this) { + current_element = + ElementTraversal::NextSkippingChildren(*current_html_element, this); continue; } - list_items_.push_back(¤t); - if (Element* next_element = ElementTraversal::FirstWithin(current)) { + list_items_.push_back(current_html_element); + if (Element* next_element = + ElementTraversal::FirstWithin(*current_html_element)) { current_element = next_element; continue; } } - if (IsHTMLOptionElement(current)) - list_items_.push_back(¤t); + if (IsHTMLOptionElement(*current_html_element)) + list_items_.push_back(current_html_element); - if (IsHTMLHRElement(current)) - list_items_.push_back(¤t); + if (IsHTMLHRElement(*current_html_element)) + list_items_.push_back(current_html_element); // In conforming HTML code, only <optgroup> and <option> will be found // within a <select>. We call NodeTraversal::nextSkippingChildren so
diff --git a/third_party/blink/renderer/core/html/html_element.h b/third_party/blink/renderer/core/html/html_element.h index 0695267c..a95fcef 100644 --- a/third_party/blink/renderer/core/html/html_element.h +++ b/third_party/blink/renderer/core/html/html_element.h
@@ -261,25 +261,26 @@ // This requires isHTML*Element(const Element&) and isHTML*Element(const // HTMLElement&). When the input element is an HTMLElement, we don't need to // check the namespace URI, just the local name. -#define DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) \ - inline bool Is##thisType(const thisType* element); \ - inline bool Is##thisType(const thisType& element); \ - inline bool Is##thisType(const HTMLElement* element) { \ - return element && Is##thisType(*element); \ - } \ - inline bool Is##thisType(const Node& node) { \ - return node.IsHTMLElement() ? Is##thisType(ToHTMLElement(node)) : false; \ - } \ - inline bool Is##thisType(const Node* node) { \ - return node && Is##thisType(*node); \ - } \ - inline bool Is##thisType(const Element* element) { \ - return element && Is##thisType(*element); \ - } \ - template <> \ - inline bool IsElementOfType<const thisType>(const HTMLElement& element) { \ - return Is##thisType(element); \ - } \ +#define DEFINE_HTMLELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) \ + inline bool Is##thisType(const thisType* element); \ + inline bool Is##thisType(const thisType& element); \ + inline bool Is##thisType(const HTMLElement* element) { \ + return element && Is##thisType(*element); \ + } \ + inline bool Is##thisType(const Node& node) { \ + auto* html_element = DynamicTo<HTMLElement>(node); \ + return html_element ? Is##thisType(html_element) : false; \ + } \ + inline bool Is##thisType(const Node* node) { \ + return node && Is##thisType(*node); \ + } \ + inline bool Is##thisType(const Element* element) { \ + return element && Is##thisType(*element); \ + } \ + template <> \ + inline bool IsElementOfType<const thisType>(const HTMLElement& element) { \ + return Is##thisType(element); \ + } \ DEFINE_ELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) } // namespace blink
diff --git a/third_party/blink/renderer/core/html/html_image_fallback_helper.cc b/third_party/blink/renderer/core/html/html_image_fallback_helper.cc index d779cfe6..6fbf1efb 100644 --- a/third_party/blink/renderer/core/html/html_image_fallback_helper.cc +++ b/third_party/blink/renderer/core/html/html_image_fallback_helper.cc
@@ -49,6 +49,69 @@ return width.IsFixed() && width.Value() < pixels_for_alt_image; } +namespace { + +class ImageFallbackContentBuilder { + STACK_ALLOCATED(); + + public: + ImageFallbackContentBuilder(const ShadowRoot& shadow_root) + : place_holder_(shadow_root.getElementById("alttext-container")), + broken_image_(shadow_root.getElementById("alttext-image")) {} + + bool HasContentElements() const { return place_holder_ && broken_image_; } + + void ShowBrokenImageIcon(bool is_ltr) { + broken_image_->SetInlineStyleProperty(CSSPropertyID::kDisplay, + CSSValueID::kInline); + // Make sure the broken image icon appears on the appropriate side of the + // image for the element's writing direction. + broken_image_->SetInlineStyleProperty( + CSSPropertyID::kFloat, AtomicString(is_ltr ? "left" : "right")); + } + void HideBrokenImageIcon() { + broken_image_->SetInlineStyleProperty(CSSPropertyID::kDisplay, + CSSValueID::kNone); + } + + void ShowAsReplaced(const Length& width, const Length& height, float zoom) { + place_holder_->SetInlineStyleProperty(CSSPropertyID::kOverflow, + CSSValueID::kHidden); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kDisplay, + CSSValueID::kInlineBlock); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kPointerEvents, + CSSValueID::kNone); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kHeight, + *CSSValue::Create(height, zoom)); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kWidth, + *CSSValue::Create(width, zoom)); + } + + void ShowBorder() { + place_holder_->SetInlineStyleProperty(CSSPropertyID::kBorderWidth, 1, + CSSPrimitiveValue::UnitType::kPixels); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kBorderStyle, + CSSValueID::kSolid); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kBorderColor, + CSSValueID::kSilver); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kPadding, 1, + CSSPrimitiveValue::UnitType::kPixels); + place_holder_->SetInlineStyleProperty(CSSPropertyID::kBoxSizing, + CSSValueID::kBorderBox); + } + + void AlignToBaseline() { + place_holder_->SetInlineStyleProperty(CSSPropertyID::kVerticalAlign, + CSSValueID::kBaseline); + } + + private: + Member<Element> place_holder_; + Member<Element> broken_image_; +}; + +} // namespace + void HTMLImageFallbackHelper::CreateAltTextShadowTree(Element& element) { ShadowRoot& root = element.EnsureUserAgentShadowRoot(); @@ -86,13 +149,10 @@ if (element.AuthorShadowRoot() || !element.UserAgentShadowRoot()) return new_style; - Element* place_holder = - element.UserAgentShadowRoot()->getElementById("alttext-container"); - Element* broken_image = - element.UserAgentShadowRoot()->getElementById("alttext-image"); + ImageFallbackContentBuilder fallback(*element.UserAgentShadowRoot()); // Input elements have a UA shadow root of their own. We may not have replaced // it with fallback content yet. - if (!place_holder || !broken_image) + if (!fallback.HasContentElements()) return new_style; if (element.GetDocument().InQuirksMode()) { @@ -106,8 +166,7 @@ new_style->SetWidth(new_style->Height()); if (new_style->Width().IsSpecifiedOrIntrinsic() && new_style->Height().IsSpecifiedOrIntrinsic()) { - place_holder->SetInlineStyleProperty(CSSPropertyID::kVerticalAlign, - CSSValueID::kBaseline); + fallback.AlignToBaseline(); } } @@ -127,45 +186,17 @@ // attribute, or the Document is in quirks mode The user agent is expected // to treat the element as a replaced element whose content is the text that // the element represents, if any." - place_holder->SetInlineStyleProperty(CSSPropertyID::kOverflow, - CSSValueID::kHidden); - place_holder->SetInlineStyleProperty(CSSPropertyID::kDisplay, - CSSValueID::kInlineBlock); - place_holder->SetInlineStyleProperty(CSSPropertyID::kPointerEvents, - CSSValueID::kNone); - place_holder->SetInlineStyleProperty( - CSSPropertyID::kHeight, - *CSSValue::Create(new_style->Height(), new_style->EffectiveZoom())); - place_holder->SetInlineStyleProperty( - CSSPropertyID::kWidth, - *CSSValue::Create(new_style->Width(), new_style->EffectiveZoom())); + fallback.ShowAsReplaced(new_style->Width(), new_style->Height(), + new_style->EffectiveZoom()); // 16px for the image and 2px for its top/left border/padding offset. int pixels_for_alt_image = 18; if (ImageSmallerThanAltImage(pixels_for_alt_image, new_style->Width(), new_style->Height())) { - broken_image->SetInlineStyleProperty(CSSPropertyID::kDisplay, - CSSValueID::kNone); + fallback.HideBrokenImageIcon(); } else { - place_holder->SetInlineStyleProperty( - CSSPropertyID::kBorderWidth, 1, CSSPrimitiveValue::UnitType::kPixels); - place_holder->SetInlineStyleProperty(CSSPropertyID::kBorderStyle, - CSSValueID::kSolid); - place_holder->SetInlineStyleProperty(CSSPropertyID::kBorderColor, - CSSValueID::kSilver); - place_holder->SetInlineStyleProperty( - CSSPropertyID::kPadding, 1, CSSPrimitiveValue::UnitType::kPixels); - place_holder->SetInlineStyleProperty(CSSPropertyID::kBoxSizing, - CSSValueID::kBorderBox); - broken_image->SetInlineStyleProperty(CSSPropertyID::kDisplay, - CSSValueID::kInline); - // Make sure the broken image icon appears on the appropriate side of the - // image for the element's writing direction. - broken_image->SetInlineStyleProperty( - CSSPropertyID::kFloat, - AtomicString(new_style->Direction() == TextDirection::kLtr - ? "left" - : "right")); + fallback.ShowBorder(); + fallback.ShowBrokenImageIcon(new_style->IsLeftToRightDirection()); } } else { if (new_style->Display() == EDisplay::kInline) { @@ -178,8 +209,7 @@ // treat the element as an empty inline element." // - We achieve this by hiding the broken image so that the span is // empty. - broken_image->SetInlineStyleProperty(CSSPropertyID::kDisplay, - CSSValueID::kNone); + fallback.HideBrokenImageIcon(); } else { // "If the element is an img element that represents some text and the // user agent does not expect this to change the user agent is expected to @@ -187,15 +217,7 @@ // the text, optionally with an icon indicating that an image is missing, // so that the user can request the image be displayed or investigate why // it is not rendering." - broken_image->SetInlineStyleProperty(CSSPropertyID::kDisplay, - CSSValueID::kInline); - // Make sure the broken image icon appears on the appropriate side of - // the image for the element's writing direction. - broken_image->SetInlineStyleProperty( - CSSPropertyID::kFloat, - AtomicString(new_style->Direction() == TextDirection::kLtr - ? "left" - : "right")); + fallback.ShowBrokenImageIcon(new_style->IsLeftToRightDirection()); } }
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.cc b/third_party/blink/renderer/core/html/media/html_media_element.cc index 0b79cf8c..e0a5f7e 100644 --- a/third_party/blink/renderer/core/html/media/html_media_element.cc +++ b/third_party/blink/renderer/core/html/media/html_media_element.cc
@@ -2928,8 +2928,10 @@ } TextTrackList* HTMLMediaElement::textTracks() { - if (!text_tracks_) + if (!text_tracks_) { + UseCounter::Count(GetDocument(), WebFeature::kMediaElementTextTrackList); text_tracks_ = MakeGarbageCollected<TextTrackList>(this); + } return text_tracks_.Get(); } @@ -3647,6 +3649,8 @@ } TextTrackContainer& HTMLMediaElement::EnsureTextTrackContainer() { + UseCounter::Count(GetDocument(), WebFeature::kMediaElementTextTrackContainer); + ShadowRoot& shadow_root = EnsureUserAgentShadowRoot(); AssertShadowRootChildren(shadow_root);
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_parser.cc b/third_party/blink/renderer/core/html/track/vtt/vtt_parser.cc index 7bc15cc5..a2f40ad 100644 --- a/third_party/blink/renderer/core/html/track/vtt/vtt_parser.cc +++ b/third_party/blink/renderer/core/html/track/vtt/vtt_parser.cc
@@ -33,6 +33,7 @@ #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/processing_instruction.h" #include "third_party/blink/renderer/core/dom/text.h" +#include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/html/track/vtt/vtt_element.h" #include "third_party/blink/renderer/core/html/track/vtt/vtt_region.h" #include "third_party/blink/renderer/core/html/track/vtt/vtt_scanner.h" @@ -92,7 +93,9 @@ current_start_time_(0), current_end_time_(0), current_region_(nullptr), - client_(client) {} + client_(client) { + UseCounter::Count(document, WebFeature::kVTTCueParser); +} void VTTParser::GetNewCues(HeapVector<Member<TextTrackCue>>& output_cues) { DCHECK(output_cues.IsEmpty());
diff --git a/third_party/blink/renderer/core/input/scroll_manager.cc b/third_party/blink/renderer/core/input/scroll_manager.cc index 6b921db..b7b861e 100644 --- a/third_party/blink/renderer/core/input/scroll_manager.cc +++ b/third_party/blink/renderer/core/input/scroll_manager.cc
@@ -56,11 +56,12 @@ cc::SnapFlingController::GestureScrollUpdateInfo GetGestureScrollUpdateInfo( const WebGestureEvent& event) { - return {.delta = gfx::Vector2dF(-event.data.scroll_update.delta_x, - -event.data.scroll_update.delta_y), - .is_in_inertial_phase = event.data.scroll_update.inertial_phase == - WebGestureEvent::kMomentumPhase, - .event_time = event.TimeStamp()}; + return { + .delta = gfx::Vector2dF(-event.data.scroll_update.delta_x, + -event.data.scroll_update.delta_y), + .is_in_inertial_phase = event.data.scroll_update.inertial_phase == + WebGestureEvent::InertialPhaseState::kMomentum, + .event_time = event.TimeStamp()}; } ScrollableArea* ScrollableAreaForSnapping(LayoutBox* layout_box) { @@ -569,7 +570,8 @@ scroll_state_data->position_x = position.X(); scroll_state_data->position_y = position.Y(); scroll_state_data->is_in_inertial_phase = - gesture_event.InertialPhase() == WebGestureEvent::kMomentumPhase; + gesture_event.InertialPhase() == + WebGestureEvent::InertialPhaseState::kMomentum; scroll_state_data->is_direct_manipulation = gesture_event.SourceDevice() == WebGestureDevice::kTouchscreen; scroll_state_data->from_user_input = true; @@ -638,7 +640,8 @@ std::make_unique<ScrollStateData>(); scroll_state_data->is_ending = true; scroll_state_data->is_in_inertial_phase = - gesture_event.InertialPhase() == WebGestureEvent::kMomentumPhase; + gesture_event.InertialPhase() == + WebGestureEvent::InertialPhaseState::kMomentum; scroll_state_data->from_user_input = true; scroll_state_data->is_direct_manipulation = gesture_event.SourceDevice() == WebGestureDevice::kTouchscreen;
diff --git a/third_party/blink/renderer/core/input/scroll_snap_test.cc b/third_party/blink/renderer/core/input/scroll_snap_test.cc index 5db4094..0f93fef 100644 --- a/third_party/blink/renderer/core/input/scroll_snap_test.cc +++ b/third_party/blink/renderer/core/input/scroll_snap_test.cc
@@ -114,7 +114,8 @@ event.data.scroll_update.delta_x = delta_x; event.data.scroll_update.delta_y = delta_y; if (is_in_inertial_phase) { - event.data.scroll_update.inertial_phase = WebGestureEvent::kMomentumPhase; + event.data.scroll_update.inertial_phase = + WebGestureEvent::InertialPhaseState::kMomentum; event.SetTimeStamp(Compositor().LastFrameTime()); } event.SetFrameScale(1); @@ -128,8 +129,8 @@ event.SetPositionInWidget(WebFloatPoint(x, y)); event.SetPositionInScreen(WebFloatPoint(x, y)); event.data.scroll_end.inertial_phase = - is_in_inertial_phase ? WebGestureEvent::kMomentumPhase - : WebGestureEvent::kNonMomentumPhase; + is_in_inertial_phase ? WebGestureEvent::InertialPhaseState::kMomentum + : WebGestureEvent::InertialPhaseState::kNonMomentum; GetDocument().GetFrame()->GetEventHandler().HandleGestureScrollEvent(event); }
diff --git a/third_party/blink/renderer/core/inspector/browser_protocol.pdl b/third_party/blink/renderer/core/inspector/browser_protocol.pdl index aecc7670..46999b9 100644 --- a/third_party/blink/renderer/core/inspector/browser_protocol.pdl +++ b/third_party/blink/renderer/core/inspector/browser_protocol.pdl
@@ -4716,6 +4716,8 @@ parameters # Id of the node to get highlight object for. DOM.NodeId nodeId + # Whether to include distance info. + optional boolean includeDistance returns # Highlight data for the node. object highlight
diff --git a/third_party/blink/renderer/core/inspector/inspect_tool_distances.html b/third_party/blink/renderer/core/inspector/inspect_tool_distances.html index eba5dfb..645d6c2 100644 --- a/third_party/blink/renderer/core/inspector/inspect_tool_distances.html +++ b/third_party/blink/renderer/core/inspector/inspect_tool_distances.html
@@ -13,11 +13,14 @@ */ function drawDistances(data) { - const rect = quadToRect(getVisualQuad(data)); + const info = data['distanceInfo']; + if (!info) + return; + const rect = quadToRect(getVisualQuad(info)); const context = window.context; context.save(); context.strokeStyle = '#ccc'; - for (const box of data['boxes']) + for (const box of info['boxes']) context.strokeRect(box[0], box[1], box[2], box[3]); context.strokeStyle = '#f00'; context.lineWidth = 1;
diff --git a/third_party/blink/renderer/core/inspector/inspect_tools.cc b/third_party/blink/renderer/core/inspector/inspect_tools.cc index 483c914..17889b2 100644 --- a/third_party/blink/renderer/core/inspector/inspect_tools.cc +++ b/third_party/blink/renderer/core/inspector/inspect_tools.cc
@@ -13,7 +13,6 @@ #include "third_party/blink/renderer/core/css/css_computed_style_declaration.h" #include "third_party/blink/renderer/core/display_lock/display_lock_utilities.h" #include "third_party/blink/renderer/core/dom/element.h" -#include "third_party/blink/renderer/core/dom/pseudo_element.h" #include "third_party/blink/renderer/core/dom/shadow_root.h" #include "third_party/blink/renderer/core/dom/static_node_list.h" #include "third_party/blink/renderer/core/frame/local_frame.h" @@ -22,7 +21,6 @@ #include "third_party/blink/renderer/core/html/html_frame_owner_element.h" #include "third_party/blink/renderer/core/inspector/inspector_css_agent.h" #include "third_party/blink/renderer/core/inspector/inspector_dom_agent.h" -#include "third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.h" #include "third_party/blink/renderer/core/layout/hit_test_location.h" #include "third_party/blink/renderer/core/layout/layout_view.h" #include "third_party/blink/renderer/core/page/chrome_client.h" @@ -95,40 +93,6 @@ ignore_pointer_events_none); } -std::unique_ptr<protocol::Array<double>> RectForLayoutRect( - const LayoutRect& rect) { - std::unique_ptr<protocol::Array<double>> result = - protocol::Array<double>::create(); - - result->addItem(rect.X()); - result->addItem(rect.Y()); - result->addItem(rect.Width()); - result->addItem(rect.Height()); - return result; -} - -// Returns |layout_object|'s bounding box in document coordinates. -LayoutRect RectInRootFrame(const LayoutObject* layout_object) { - LocalFrameView* local_frame_view = layout_object->GetFrameView(); - LayoutRect rect_in_absolute(layout_object->AbsoluteBoundingBoxFloatRect()); - return local_frame_view - ? local_frame_view->ConvertToRootFrame(rect_in_absolute) - : rect_in_absolute; -} - -LayoutRect TextFragmentRectInRootFrame( - const LayoutObject* layout_object, - const LayoutText::TextBoxInfo& text_box) { - FloatRect local_coords_text_box_rect(text_box.local_rect); - LayoutRect absolute_coords_text_box_rect( - layout_object->LocalToAbsoluteQuad(local_coords_text_box_rect) - .BoundingBox()); - LocalFrameView* local_frame_view = layout_object->GetFrameView(); - return local_frame_view ? local_frame_view->ConvertToRootFrame( - absolute_coords_text_box_rect) - : absolute_coords_text_box_rect; -} - } // namespace // SearchingForNodeTool -------------------------------------------------------- @@ -164,7 +128,7 @@ node->GetLayoutObject() && node->GetDocument().GetFrame(); InspectorHighlight highlight(node, *highlight_config_, contrast_info_, - append_element_info, is_locked_ancestor_); + append_element_info, false, is_locked_ancestor_); if (event_target_node_) { highlight.AppendEventTargetQuads(event_target_node_.Get(), *highlight_config_); @@ -341,7 +305,7 @@ node_->GetLayoutObject() && node_->GetDocument().GetFrame(); InspectorHighlight highlight(node_.Get(), *highlight_config_, contrast_info_, - append_element_info, is_locked_ancestor_); + append_element_info, false, is_locked_ancestor_); std::unique_ptr<protocol::DictionaryValue> highlight_json = highlight.AsProtocolValue(); overlay_->EvaluateInOverlay("drawHighlight", std::move(highlight_json)); @@ -366,6 +330,7 @@ continue; InspectorHighlight highlight(element, *highlight_config_, contrast_info_, false /* append_element_info */, + false /* append_distance_info */, false /* is_locked_ancestor */); overlay_->EvaluateInOverlay("drawHighlight", highlight.AsProtocolValue()); } @@ -411,6 +376,12 @@ } } + // If |node| is in a display locked subtree, highlight the highest locked + // element instead. + if (Node* locked_ancestor = + DisplayLockUtilities::HighestLockedExclusiveAncestor(*node)) + node = locked_ancestor; + // Store values for the highlight. hovered_node_ = node; return true; @@ -424,103 +395,11 @@ Node* node = hovered_node_.Get(); if (!node) return; - node->GetDocument().EnsurePaintLocationDataValidForNode(node); - LayoutObject* layout_object = node->GetLayoutObject(); - if (!layout_object) - return; - - CSSStyleDeclaration* style = - MakeGarbageCollected<CSSComputedStyleDeclaration>(node, true); - std::unique_ptr<protocol::DictionaryValue> computed_style = - protocol::DictionaryValue::create(); - for (size_t i = 0; i < style->length(); ++i) { - AtomicString name(style->item(i)); - const CSSValue* value = style->GetPropertyCSSValueInternal(name); - if (!value) - continue; - if (value->IsColorValue()) { - Color color = static_cast<const cssvalue::CSSColorValue*>(value)->Value(); - String hex_color = - String::Format("#%02X%02X%02X%02X", color.Red(), color.Green(), - color.Blue(), color.Alpha()); - computed_style->setString(name, hex_color); - } else { - computed_style->setString(name, value->CssText()); - } - } - - std::unique_ptr<protocol::DOM::BoxModel> model; - InspectorHighlight::GetBoxModel(node, &model, false); - boxes_ = protocol::Array<protocol::Array<double>>::create(); - VisitNode(&(node->GetDocument())); - LayoutRect document_rect(node->GetDocument().GetLayoutView()->DocumentRect()); - LocalFrameView* local_frame_view = node->GetDocument().View(); - boxes_->addItem( - RectForLayoutRect(local_frame_view->ConvertToRootFrame(document_rect))); - - std::unique_ptr<protocol::DictionaryValue> object = - protocol::DictionaryValue::create(); - object->setArray("boxes", boxes_->toValue()); - object->setArray("content", model->getContent()->toValue()); - object->setArray("padding", model->getPadding()->toValue()); - object->setArray("border", model->getBorder()->toValue()); - object->setObject("style", std::move(computed_style)); - overlay_->EvaluateInOverlay("drawDistances", std::move(object)); -} - -void NearbyDistanceTool::VisitNode(Node* node) { - LayoutObject* layout_object = node->GetLayoutObject(); - if (layout_object) - AddLayoutBox(layout_object); - - if (node->IsElementNode()) { - Element* element = ToElement(node); - - if (element->GetPseudoId()) { - if (layout_object) - VisitPseudoLayoutChildren(element->GetPseudoId(), layout_object); - } else { - for (PseudoId pseudo_id : - {kPseudoIdFirstLetter, kPseudoIdBefore, kPseudoIdAfter}) { - if (Node* pseudo_node = element->GetPseudoElement(pseudo_id)) - VisitNode(pseudo_node); - } - } - } - - if (!node->IsContainerNode()) - return; - Node* first_child = InspectorDOMSnapshotAgent::FirstChild(*node, false); - for (Node* child = first_child; child; - child = InspectorDOMSnapshotAgent::NextSibling(*child, false)) - VisitNode(child); -} - -void NearbyDistanceTool::VisitPseudoLayoutChildren( - PseudoId pseudo_id, - LayoutObject* layout_object) { - protocol::DOM::PseudoType pseudo_type; - if (!InspectorDOMAgent::GetPseudoElementType(pseudo_id, &pseudo_type)) - return; - for (LayoutObject* child = layout_object->SlowFirstChild(); child; - child = child->NextSibling()) { - if (child->IsAnonymous()) - AddLayoutBox(child); - } -} - -void NearbyDistanceTool::AddLayoutBox(LayoutObject* layout_object) { - if (layout_object->IsText()) { - LayoutText* layout_text = ToLayoutText(layout_object); - for (const auto& text_box : layout_text->GetTextBoxInfo()) { - LayoutRect text_rect( - TextFragmentRectInRootFrame(layout_object, text_box)); - boxes_->addItem(RectForLayoutRect(text_rect)); - } - } else { - LayoutRect rect(RectInRootFrame(layout_object)); - boxes_->addItem(RectForLayoutRect(rect)); - } + InspectorHighlight highlight( + node, InspectorHighlight::DefaultConfig(), + InspectorHighlightContrastInfo(), false /* append_element_info */, + true /* append_distance_info */, false /* is_locked_ancestor */); + overlay_->EvaluateInOverlay("drawDistances", highlight.AsProtocolValue()); } void NearbyDistanceTool::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/inspector/inspect_tools.h b/third_party/blink/renderer/core/inspector/inspect_tools.h index 9f138d8..2bc42c5 100644 --- a/third_party/blink/renderer/core/inspector/inspect_tools.h +++ b/third_party/blink/renderer/core/inspector/inspect_tools.h
@@ -101,14 +101,9 @@ bool HandleMouseMove(const WebMouseEvent& event) override; bool HandleMouseUp(const WebMouseEvent& event) override; void Draw(float scale) override; - void VisitNode(Node* node); - void VisitPseudoLayoutChildren(PseudoId pseudo_id, - LayoutObject* layout_object); - void AddLayoutBox(LayoutObject* layout_object); void Trace(blink::Visitor* visitor) override; Member<Node> hovered_node_; - std::unique_ptr<protocol::Array<protocol::Array<double>>> boxes_; DISALLOW_COPY_AND_ASSIGN(NearbyDistanceTool); };
diff --git a/third_party/blink/renderer/core/inspector/inspector_highlight.cc b/third_party/blink/renderer/core/inspector/inspector_highlight.cc index 65465a3..09dd603 100644 --- a/third_party/blink/renderer/core/inspector/inspector_highlight.cc +++ b/third_party/blink/renderer/core/inspector/inspector_highlight.cc
@@ -13,11 +13,14 @@ #include "third_party/blink/renderer/core/frame/local_frame_view.h" #include "third_party/blink/renderer/core/frame/visual_viewport.h" #include "third_party/blink/renderer/core/geometry/dom_rect.h" +#include "third_party/blink/renderer/core/inspector/inspector_dom_agent.h" +#include "third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.h" #include "third_party/blink/renderer/core/layout/adjust_for_absolute_zoom.h" #include "third_party/blink/renderer/core/layout/layout_box.h" #include "third_party/blink/renderer/core/layout/layout_grid.h" #include "third_party/blink/renderer/core/layout/layout_inline.h" #include "third_party/blink/renderer/core/layout/layout_object.h" +#include "third_party/blink/renderer/core/layout/layout_view.h" #include "third_party/blink/renderer/core/layout/shapes/shape_outside_info.h" #include "third_party/blink/renderer/core/page/chrome_client.h" #include "third_party/blink/renderer/core/page/page.h" @@ -394,6 +397,40 @@ } } +std::unique_ptr<protocol::Array<double>> RectForLayoutRect( + const LayoutRect& rect) { + std::unique_ptr<protocol::Array<double>> result = + protocol::Array<double>::create(); + + result->addItem(rect.X()); + result->addItem(rect.Y()); + result->addItem(rect.Width()); + result->addItem(rect.Height()); + return result; +} + +// Returns |layout_object|'s bounding box in document coordinates. +LayoutRect RectInRootFrame(const LayoutObject* layout_object) { + LocalFrameView* local_frame_view = layout_object->GetFrameView(); + LayoutRect rect_in_absolute(layout_object->AbsoluteBoundingBoxFloatRect()); + return local_frame_view + ? local_frame_view->ConvertToRootFrame(rect_in_absolute) + : rect_in_absolute; +} + +LayoutRect TextFragmentRectInRootFrame( + const LayoutObject* layout_object, + const LayoutText::TextBoxInfo& text_box) { + FloatRect local_coords_text_box_rect(text_box.local_rect); + LayoutRect absolute_coords_text_box_rect( + layout_object->LocalToAbsoluteQuad(local_coords_text_box_rect) + .BoundingBox()); + LocalFrameView* local_frame_view = layout_object->GetFrameView(); + return local_frame_view ? local_frame_view->ConvertToRootFrame( + absolute_coords_text_box_rect) + : absolute_coords_text_box_rect; +} + } // namespace InspectorHighlight::InspectorHighlight(float scale) @@ -413,6 +450,7 @@ const InspectorHighlightConfig& highlight_config, const InspectorHighlightContrastInfo& node_contrast, bool append_element_info, + bool append_distance_info, bool is_locked_ancestor) : highlight_paths_(protocol::ListValue::create()), show_rulers_(highlight_config.show_rulers), @@ -434,10 +472,104 @@ if (element_info_ && is_locked_ancestor) element_info_->setString("isLockedAncestor", "true"); + if (append_distance_info) + AppendDistanceInfo(node); } InspectorHighlight::~InspectorHighlight() = default; +void InspectorHighlight::AppendDistanceInfo(Node* node) { + if (!InspectorHighlight::GetBoxModel(node, &model_, false)) + return; + boxes_ = protocol::Array<protocol::Array<double>>::create(); + computed_style_ = protocol::DictionaryValue::create(); + + node->GetDocument().EnsurePaintLocationDataValidForNode(node); + LayoutObject* layout_object = node->GetLayoutObject(); + if (!layout_object) + return; + + CSSStyleDeclaration* style = + MakeGarbageCollected<CSSComputedStyleDeclaration>(node, true); + for (size_t i = 0; i < style->length(); ++i) { + AtomicString name(style->item(i)); + const CSSValue* value = style->GetPropertyCSSValueInternal(name); + if (!value) + continue; + if (value->IsColorValue()) { + Color color = static_cast<const cssvalue::CSSColorValue*>(value)->Value(); + String hex_color = + String::Format("#%02X%02X%02X%02X", color.Red(), color.Green(), + color.Blue(), color.Alpha()); + computed_style_->setString(name, hex_color); + } else { + computed_style_->setString(name, value->CssText()); + } + } + + VisitAndCollectDistanceInfo(&(node->GetDocument())); + LayoutRect document_rect(node->GetDocument().GetLayoutView()->DocumentRect()); + LocalFrameView* local_frame_view = node->GetDocument().View(); + boxes_->addItem( + RectForLayoutRect(local_frame_view->ConvertToRootFrame(document_rect))); +} + +void InspectorHighlight::VisitAndCollectDistanceInfo(Node* node) { + LayoutObject* layout_object = node->GetLayoutObject(); + if (layout_object) + AddLayoutBoxToDistanceInfo(layout_object); + + if (node->IsElementNode()) { + Element* element = ToElement(node); + + if (element->GetPseudoId()) { + if (layout_object) + VisitAndCollectDistanceInfo(element->GetPseudoId(), layout_object); + } else { + for (PseudoId pseudo_id : + {kPseudoIdFirstLetter, kPseudoIdBefore, kPseudoIdAfter}) { + if (Node* pseudo_node = element->GetPseudoElement(pseudo_id)) + VisitAndCollectDistanceInfo(pseudo_node); + } + } + } + + if (!node->IsContainerNode()) + return; + Node* first_child = InspectorDOMSnapshotAgent::FirstChild(*node, false); + for (Node* child = first_child; child; + child = InspectorDOMSnapshotAgent::NextSibling(*child, false)) + VisitAndCollectDistanceInfo(child); +} + +void InspectorHighlight::VisitAndCollectDistanceInfo( + PseudoId pseudo_id, + LayoutObject* layout_object) { + protocol::DOM::PseudoType pseudo_type; + if (!InspectorDOMAgent::GetPseudoElementType(pseudo_id, &pseudo_type)) + return; + for (LayoutObject* child = layout_object->SlowFirstChild(); child; + child = child->NextSibling()) { + if (child->IsAnonymous()) + AddLayoutBoxToDistanceInfo(child); + } +} + +void InspectorHighlight::AddLayoutBoxToDistanceInfo( + LayoutObject* layout_object) { + if (layout_object->IsText()) { + LayoutText* layout_text = ToLayoutText(layout_object); + for (const auto& text_box : layout_text->GetTextBoxInfo()) { + LayoutRect text_rect( + TextFragmentRectInRootFrame(layout_object, text_box)); + boxes_->addItem(RectForLayoutRect(text_rect)); + } + } else { + LayoutRect rect(RectInRootFrame(layout_object)); + boxes_->addItem(RectForLayoutRect(rect)); + } +} + void InspectorHighlight::AppendQuad(const FloatQuad& quad, const Color& fill_color, const Color& outline_color, @@ -556,6 +688,16 @@ object->setValue("paths", highlight_paths_->clone()); object->setBoolean("showRulers", show_rulers_); object->setBoolean("showExtensionLines", show_extension_lines_); + if (model_) { + std::unique_ptr<protocol::DictionaryValue> distance_info = + protocol::DictionaryValue::create(); + distance_info->setArray("boxes", boxes_->toValue()); + distance_info->setArray("content", model_->getContent()->toValue()); + distance_info->setArray("padding", model_->getPadding()->toValue()); + distance_info->setArray("border", model_->getBorder()->toValue()); + distance_info->setValue("style", computed_style_->clone()); + object->setValue("distanceInfo", std::move(distance_info)); + } if (element_info_) object->setValue("elementInfo", element_info_->clone()); if (grid_info_ && grid_info_->size() > 0)
diff --git a/third_party/blink/renderer/core/inspector/inspector_highlight.h b/third_party/blink/renderer/core/inspector/inspector_highlight.h index 49d29df..5ca5060 100644 --- a/third_party/blink/renderer/core/inspector/inspector_highlight.h +++ b/third_party/blink/renderer/core/inspector/inspector_highlight.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_BLINK_RENDERER_CORE_INSPECTOR_INSPECTOR_HIGHLIGHT_H_ #include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/dom/pseudo_element.h" #include "third_party/blink/renderer/core/inspector/protocol/DOM.h" #include "third_party/blink/renderer/platform/geometry/float_quad.h" #include "third_party/blink/renderer/platform/geometry/layout_rect.h" @@ -54,6 +55,7 @@ const InspectorHighlightConfig&, const InspectorHighlightContrastInfo&, bool append_element_info, + bool append_distance_info, bool is_locked_ancestor); explicit InspectorHighlight(float scale); ~InspectorHighlight(); @@ -88,6 +90,16 @@ void AppendNodeHighlight(Node*, const InspectorHighlightConfig&); void AppendPathsForShapeOutside(Node*, const InspectorHighlightConfig&); + void AppendDistanceInfo(Node* node); + void VisitAndCollectDistanceInfo(Node* node); + void VisitAndCollectDistanceInfo(PseudoId pseudo_id, + LayoutObject* layout_object); + void AddLayoutBoxToDistanceInfo(LayoutObject* layout_object); + + std::unique_ptr<protocol::Array<protocol::Array<double>>> boxes_; + std::unique_ptr<protocol::DictionaryValue> computed_style_; + std::unique_ptr<protocol::DOM::BoxModel> model_; + std::unique_ptr<protocol::DictionaryValue> distance_info_; std::unique_ptr<protocol::DictionaryValue> element_info_; std::unique_ptr<protocol::ListValue> highlight_paths_; std::unique_ptr<protocol::ListValue> grid_info_;
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc index ec5a47a..5b3ace02 100644 --- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc
@@ -597,6 +597,7 @@ Response InspectorOverlayAgent::getHighlightObjectForTest( int node_id, + Maybe<bool> include_distance, std::unique_ptr<protocol::DictionaryValue>* result) { Node* node = nullptr; Response response = dom_agent_->AssertNode(node_id, node); @@ -612,10 +613,10 @@ is_locked_ancestor = true; } - InspectorHighlight highlight(node, InspectorHighlight::DefaultConfig(), - InspectorHighlightContrastInfo(), - true /* append_element_info */, - is_locked_ancestor); + InspectorHighlight highlight( + node, InspectorHighlight::DefaultConfig(), + InspectorHighlightContrastInfo(), true /* append_element_info */, + include_distance.fromMaybe(false), is_locked_ancestor); *result = highlight.AsProtocolValue(); return Response::OK(); }
diff --git a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.h b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.h index 30bcc8c..37e6802 100644 --- a/third_party/blink/renderer/core/inspector/inspector_overlay_agent.h +++ b/third_party/blink/renderer/core/inspector/inspector_overlay_agent.h
@@ -156,6 +156,7 @@ protocol::Maybe<protocol::DOM::RGBA> content_outline_color) override; protocol::Response getHighlightObjectForTest( int node_id, + protocol::Maybe<bool> include_distance, std::unique_ptr<protocol::DictionaryValue>* highlight) override; // InspectorBaseAgent overrides.
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc index b15114d2..e5a38af4 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -228,7 +228,65 @@ builder->ExitBlock(); } -static bool NeedsShaping(const NGInlineItem& item) { +// Returns whether this text should break shaping. Even within a box, text runs +// that have different shaping properties need to break shaping. +inline bool ShouldBreakShapingBeforeText(const NGInlineItem& item, + const NGInlineItem& start_item, + const ComputedStyle& start_style, + const Font& start_font, + TextDirection start_direction) { + DCHECK_EQ(item.Type(), NGInlineItem::kText); + DCHECK(item.Style()); + const ComputedStyle& style = *item.Style(); + if (&style != &start_style) { + const Font& font = style.GetFont(); + if (&font != &start_font && font != start_font) + return true; + } + + // The resolved direction and run segment properties must match to shape + // across for HarfBuzzShaper. + return item.Direction() != start_direction || + !item.EqualsRunSegment(start_item); +} + +// Returns whether the start of this box should break shaping. +inline bool ShouldBreakShapingBeforeBox(const NGInlineItem& item, + const Font& start_font) { + DCHECK_EQ(item.Type(), NGInlineItem::kOpenTag); + DCHECK(item.Style()); + const ComputedStyle& style = *item.Style(); + + // These properties values must break shaping. + // https://drafts.csswg.org/css-text-3/#boundary-shaping + if ((style.MayHavePadding() && !style.PaddingStart().IsZero()) || + (style.MayHaveMargin() && !style.MarginStart().IsZero()) || + style.BorderStartWidth() || + style.VerticalAlign() != EVerticalAlign::kBaseline) + return true; + + return false; +} + +// Returns whether the end of this box should break shaping. +inline bool ShouldBreakShapingAfterBox(const NGInlineItem& item, + const Font& start_font) { + DCHECK_EQ(item.Type(), NGInlineItem::kCloseTag); + DCHECK(item.Style()); + const ComputedStyle& style = *item.Style(); + + // These properties values must break shaping. + // https://drafts.csswg.org/css-text-3/#boundary-shaping + if ((style.MayHavePadding() && !style.PaddingEnd().IsZero()) || + (style.MayHaveMargin() && !style.MarginEnd().IsZero()) || + style.BorderEndWidth() || + style.VerticalAlign() != EVerticalAlign::kBaseline) + return true; + + return false; +} + +inline bool NeedsShaping(const NGInlineItem& item) { return item.Type() == NGInlineItem::kText && !item.TextShapeResult(); } @@ -611,22 +669,23 @@ if (item.Type() == NGInlineItem::kText) { if (!item.Length()) continue; - // Shape adjacent items together if the font and direction matches to - // allow ligatures and kerning to apply. - // Also run segment properties must match because NGInlineItem gives - // pre-segmented range to HarfBuzzShaper. - // TODO(kojii): Figure out the exact conditions under which this - // behavior is desirable. - if (font != item.Style()->GetFont() || direction != item.Direction() || - !item.EqualsRunSegment(start_item)) + if (ShouldBreakShapingBeforeText(item, start_item, start_style, font, + direction)) { break; + } end_offset = item.EndOffset(); num_text_items++; - } else if (item.Type() == NGInlineItem::kOpenTag || - item.Type() == NGInlineItem::kCloseTag) { - // These items are opaque to shaping. - // Opaque items cannot have text, such as Object Replacement Characters, - // since such characters can affect shaping. + } else if (item.Type() == NGInlineItem::kOpenTag) { + if (ShouldBreakShapingBeforeBox(item, font)) { + break; + } + // Should not have any characters to be opaque to shaping. + DCHECK_EQ(0u, item.Length()); + } else if (item.Type() == NGInlineItem::kCloseTag) { + if (ShouldBreakShapingAfterBox(item, font)) { + break; + } + // Should not have any characters to be opaque to shaping. DCHECK_EQ(0u, item.Length()); } else { break;
diff --git a/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc b/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc index 1f89a1e9..a4bb807 100644 --- a/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc +++ b/third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.cc
@@ -170,6 +170,12 @@ LayoutNGListItem::MarkerType LayoutNGListItem::MarkerText( StringBuilder* text, MarkerTextFormat format) const { + if (IsMarkerImage()) { + if (format == kWithSuffix) + text->Append(' '); + return kStatic; + } + const ComputedStyle& style = StyleRef(); switch (style.ListStyleType()) { case EListStyleType::kNone:
diff --git a/third_party/blink/renderer/core/loader/idleness_detector.cc b/third_party/blink/renderer/core/loader/idleness_detector.cc index af172109..56c3d7ad 100644 --- a/third_party/blink/renderer/core/loader/idleness_detector.cc +++ b/third_party/blink/renderer/core/loader/idleness_detector.cc
@@ -52,11 +52,6 @@ network_2_quiet_ = TimeTicks(); network_0_quiet_ = TimeTicks(); - if (auto* document_resource_coordinator = - local_frame_->GetDocument()->GetResourceCoordinator()) { - document_resource_coordinator->SetNetworkAlmostIdle(false); - } - OnDidLoadResource(); } @@ -154,7 +149,7 @@ DCHECK(local_frame_->GetDocument()); if (auto* document_resource_coordinator = local_frame_->GetDocument()->GetResourceCoordinator()) { - document_resource_coordinator->SetNetworkAlmostIdle(true); + document_resource_coordinator->SetNetworkAlmostIdle(); } local_frame_->GetDocument()->Fetcher()->OnNetworkQuiet(); if (WebServiceWorkerNetworkProvider* service_worker_network_provider =
diff --git a/third_party/blink/renderer/core/loader/image_loader.cc b/third_party/blink/renderer/core/loader/image_loader.cc index c324730..1cb2e74 100644 --- a/third_party/blink/renderer/core/loader/image_loader.cc +++ b/third_party/blink/renderer/core/loader/image_loader.cc
@@ -505,8 +505,8 @@ // own origin checking logic that may get confused if service workers // respond with resources from another origin. // https://w3c.github.io/ServiceWorker/#implementer-concerns - if (GetElement()->IsHTMLElement() && - ToHTMLElement(GetElement())->IsPluginElement()) { + auto* html_element = DynamicTo<HTMLElement>(GetElement()); + if (html_element && html_element->IsPluginElement()) { resource_request.SetSkipServiceWorker(true); }
diff --git a/third_party/blink/renderer/core/origin_trials/BUILD.gn b/third_party/blink/renderer/core/origin_trials/BUILD.gn index de2079f..d2d87524 100644 --- a/third_party/blink/renderer/core/origin_trials/BUILD.gn +++ b/third_party/blink/renderer/core/origin_trials/BUILD.gn
@@ -6,6 +6,7 @@ blink_core_sources("origin_trials") { sources = [ + "navigation_origin_trial_features.cc", "origin_trial_context.cc", "origin_trial_context.h", "origin_trials.h",
diff --git a/third_party/blink/renderer/core/origin_trials/OWNERS b/third_party/blink/renderer/core/origin_trials/OWNERS index 73686a7..5a9194d2 100644 --- a/third_party/blink/renderer/core/origin_trials/OWNERS +++ b/third_party/blink/renderer/core/origin_trials/OWNERS
@@ -1 +1,4 @@ file://third_party/blink/common/origin_trials/OWNERS + +per-file navigation_origin_trial_features.cc=set noparent +per-file navigation_origin_trial_features.cc=file://third_party/blink/SECURITY_OWNERS
diff --git a/third_party/blink/renderer/core/origin_trials/navigation_origin_trial_features.cc b/third_party/blink/renderer/core/origin_trials/navigation_origin_trial_features.cc new file mode 100644 index 0000000..bed5f86 --- /dev/null +++ b/third_party/blink/renderer/core/origin_trials/navigation_origin_trial_features.cc
@@ -0,0 +1,27 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file provides GetNavigationOriginTrialFeatures which is declared in +// origin_trials.h. GetNavigationOriginTrialFeatures is defined in this file +// since changes to it require review from security reviewers, listed in the +// SECURITY_OWNERS file. + +#include "third_party/blink/renderer/core/origin_trials/origin_trials.h" + +namespace blink { + +namespace origin_trials { + +const HashSet<OriginTrialFeature>& GetNavigationOriginTrialFeatures() { + DEFINE_THREAD_SAFE_STATIC_LOCAL( + HashSet<OriginTrialFeature>, navigation_origin_trial_features, + ({// Enable the kOriginTrialsSampleAPINavigation feature as a navigation + // feature, for tests. + OriginTrialFeature::kOriginTrialsSampleAPINavigation})); + return navigation_origin_trial_features; +} + +} // namespace origin_trials + +} // namespace blink
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc b/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc index dad0b08..cd76cd0 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc +++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context.cc
@@ -85,6 +85,13 @@ return result; } +// Returns whether the given feature can be activated across navigations. Only +// features reviewed and approved by security reviewers can be activated across +// navigations. +bool IsCrossNavigationFeature(OriginTrialFeature feature) { + return origin_trials::GetNavigationOriginTrialFeatures().Contains(feature); +} + } // namespace OriginTrialContext::OriginTrialContext( @@ -154,6 +161,15 @@ } // static +void OriginTrialContext::ActivateNavigationFeaturesFromInitiator( + ExecutionContext* context, + const Vector<OriginTrialFeature>* features) { + if (!features || features->IsEmpty()) + return; + FromOrCreate(context)->ActivateNavigationFeaturesFromInitiator(*features); +} + +// static std::unique_ptr<Vector<String>> OriginTrialContext::GetTokens( ExecutionContext* execution_context) { const OriginTrialContext* context = From(execution_context); @@ -162,6 +178,28 @@ return std::make_unique<Vector<String>>(context->tokens_); } +// static +std::unique_ptr<Vector<OriginTrialFeature>> +OriginTrialContext::GetEnabledNavigationFeatures( + ExecutionContext* execution_context) { + const OriginTrialContext* context = From(execution_context); + return context ? context->GetEnabledNavigationFeatures() : nullptr; +} + +std::unique_ptr<Vector<OriginTrialFeature>> +OriginTrialContext::GetEnabledNavigationFeatures() const { + if (enabled_features_.IsEmpty()) + return nullptr; + std::unique_ptr<Vector<OriginTrialFeature>> result = + std::make_unique<Vector<OriginTrialFeature>>(); + for (const OriginTrialFeature& feature : enabled_features_) { + if (IsCrossNavigationFeature(feature)) { + result->push_back(feature); + } + } + return result->IsEmpty() ? nullptr : std::move(result); +} + void OriginTrialContext::AddToken(const String& token) { if (token.IsEmpty()) return; @@ -191,6 +229,16 @@ } } +void OriginTrialContext::ActivateNavigationFeaturesFromInitiator( + const Vector<OriginTrialFeature>& features) { + for (const OriginTrialFeature& feature : features) { + if (IsCrossNavigationFeature(feature)) { + navigation_activated_features_.insert(feature); + } + } + InitializePendingFeatures(); +} + void OriginTrialContext::InitializePendingFeatures() { if (!enabled_features_.size()) return; @@ -207,11 +255,19 @@ return; ScriptState::Scope scope(script_state); for (OriginTrialFeature enabled_feature : enabled_features_) { - if (installed_features_.Contains(enabled_feature)) - continue; - InstallPendingOriginTrialFeature(enabled_feature, script_state); - installed_features_.insert(enabled_feature); + InstallFeature(enabled_feature, script_state); } + for (OriginTrialFeature enabled_feature : navigation_activated_features_) { + InstallFeature(enabled_feature, script_state); + } +} + +void OriginTrialContext::InstallFeature(OriginTrialFeature enabled_feature, + ScriptState* script_state) { + if (installed_features_.Contains(enabled_feature)) + return; + InstallPendingOriginTrialFeature(enabled_feature, script_state); + installed_features_.insert(enabled_feature); } void OriginTrialContext::AddFeature(OriginTrialFeature feature) { @@ -243,6 +299,14 @@ return context->IsFeatureEnabled(feature); } +bool OriginTrialContext::IsNavigationFeatureActivated( + OriginTrialFeature feature) const { + if (!RuntimeEnabledFeatures::OriginTrialsEnabled()) + return false; + + return navigation_activated_features_.Contains(feature); +} + bool OriginTrialContext::EnableTrialFromToken(const String& token) { DCHECK(!token.IsEmpty());
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context.h b/third_party/blink/renderer/core/origin_trials/origin_trial_context.h index 852e877c..9a6b2b3 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trial_context.h +++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context.h
@@ -66,9 +66,28 @@ // Returns null if no tokens were added to the ExecutionContext. static std::unique_ptr<Vector<String>> GetTokens(ExecutionContext*); + // Returns the navigation trial features that are enabled in the specified + // ExecutionContext, that should be forwarded to (and activated in) + // ExecutionContexts navigated to from the given ExecutionContext. Returns + // null if no such trials were added to the ExecutionContext. + static std::unique_ptr<Vector<OriginTrialFeature>> + GetEnabledNavigationFeatures(ExecutionContext*); + + // Activates navigation trial features forwarded from the ExecutionContext + // that navigated to the specified ExecutionContext. Only features for which + // origin_trials::IsCrossNavigationFeature returns true can be activated via + // this method. Trials activated via this method will return true from + // IsNavigationFeatureActivated, for the specified ExecutionContext. + static void ActivateNavigationFeaturesFromInitiator( + ExecutionContext*, + const Vector<OriginTrialFeature>*); + void AddToken(const String& token); void AddTokens(const Vector<String>& tokens); + void ActivateNavigationFeaturesFromInitiator( + const Vector<OriginTrialFeature>& features); + // Forces a given origin-trial-enabled feature to be enabled in this context // and immediately adds required bindings to already initialized JS contexts. void AddFeature(OriginTrialFeature feature); @@ -77,6 +96,16 @@ // execution context. bool IsFeatureEnabled(OriginTrialFeature feature) const; + std::unique_ptr<Vector<OriginTrialFeature>> GetEnabledNavigationFeatures() + const; + + // Returns true if the navigation feature is activated in the current + // ExecutionContext. Navigation features are features that are enabled in one + // ExecutionContext, but whose behavior is activated in ExecutionContexts that + // are navigated to from that context. For example, if navigating from context + // A to B, a navigation feature is enabled in A, and activated in B. + bool IsNavigationFeatureActivated(const OriginTrialFeature feature) const; + // Installs JavaScript bindings on the relevant objects for any features which // should be enabled by the current set of trial tokens. This method is called // every time a token is added to the document (including when tokens are @@ -96,9 +125,14 @@ // the token is valid. bool EnableTrialFromToken(const String& token); + // Installs JavaScript bindings on the relevant objects for the specified + // OriginTrialFeature. + void InstallFeature(OriginTrialFeature, ScriptState*); + Vector<String> tokens_; HashSet<OriginTrialFeature> enabled_features_; HashSet<OriginTrialFeature> installed_features_; + HashSet<OriginTrialFeature> navigation_activated_features_; std::unique_ptr<TrialTokenValidator> trial_token_validator_; };
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc index be78fc0..28cee35 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc +++ b/third_party/blink/renderer/core/origin_trials/origin_trial_context_test.cc
@@ -27,6 +27,7 @@ namespace { const char kFrobulateTrialName[] = "Frobulate"; +const char kFrobulateNavigationTrialName[] = "FrobulateNavigation"; const char kFrobulateEnabledOrigin[] = "https://www.example.com"; const char kFrobulateEnabledOriginUnsecure[] = "http://www.example.com"; @@ -99,6 +100,15 @@ return origin_trial_context_->IsFeatureEnabled(feature); } + std::unique_ptr<Vector<OriginTrialFeature>> GetEnabledNavigationFeatures() { + return origin_trial_context_->GetEnabledNavigationFeatures(); + } + + bool ActivateNavigationFeature(OriginTrialFeature feature) { + origin_trial_context_->ActivateNavigationFeaturesFromInitiator({feature}); + return origin_trial_context_->IsNavigationFeatureActivated(feature); + } + void ExpectStatusUniqueMetric(OriginTrialTokenStatus status, int count) { histogram_tester_->ExpectUniqueSample(kResultHistogram, static_cast<int>(status), count); @@ -137,6 +147,10 @@ // Status metric should be updated. ExpectStatusUniqueMetric(OriginTrialTokenStatus::kSuccess, 1); + + // kOriginTrialsSampleAPI is not a navigation feature, so shouldn't be + // included in GetEnabledNavigationFeatures(). + EXPECT_EQ(nullptr, GetEnabledNavigationFeatures()); } // ... but if the browser says it's invalid for any reason, that's enough to @@ -252,4 +266,25 @@ EXPECT_EQ(mojom::FeaturePolicyFeature::kFrobulate, result[0].feature); } +TEST_F(OriginTrialContextTest, GetEnabledNavigationFeatures) { + TokenValidator()->SetResponse(OriginTrialTokenStatus::kSuccess, + kFrobulateNavigationTrialName); + EXPECT_TRUE( + IsFeatureEnabled(kFrobulateEnabledOrigin, + OriginTrialFeature::kOriginTrialsSampleAPINavigation)); + + auto enabled_navigation_features = GetEnabledNavigationFeatures(); + ASSERT_NE(nullptr, enabled_navigation_features.get()); + EXPECT_EQ(WTF::Vector<OriginTrialFeature>( + {OriginTrialFeature::kOriginTrialsSampleAPINavigation}), + *enabled_navigation_features.get()); +} + +TEST_F(OriginTrialContextTest, ActivateNavigationFeature) { + EXPECT_TRUE(ActivateNavigationFeature( + OriginTrialFeature::kOriginTrialsSampleAPINavigation)); + EXPECT_FALSE( + ActivateNavigationFeature(OriginTrialFeature::kOriginTrialsSampleAPI)); +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/origin_trials/origin_trials.h b/third_party/blink/renderer/core/origin_trials/origin_trials.h index 65524c9..9f36b774 100644 --- a/third_party/blink/renderer/core/origin_trials/origin_trials.h +++ b/third_party/blink/renderer/core/origin_trials/origin_trials.h
@@ -9,6 +9,7 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +#include "third_party/blink/renderer/platform/wtf/hash_set.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "third_party/blink/renderer/platform/wtf/vector.h" @@ -33,6 +34,8 @@ bool FeatureEnabledForOS(OriginTrialFeature feature); +const HashSet<OriginTrialFeature>& GetNavigationOriginTrialFeatures(); + } // namespace origin_trials } // namespace blink
diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/third_party/blink/renderer/core/page/context_menu_controller.cc index 3c8d095..8667c29 100644 --- a/third_party/blink/renderer/core/page/context_menu_controller.cc +++ b/third_party/blink/renderer/core/page/context_menu_controller.cc
@@ -207,8 +207,8 @@ // all else. data.link_url = result.AbsoluteLinkURL(); - if (result.InnerNode()->IsHTMLElement()) { - HTMLElement* html_element = ToHTMLElement(result.InnerNode()); + auto* html_element = DynamicTo<HTMLElement>(result.InnerNode()); + if (html_element) { if (!html_element->title().IsEmpty()) { data.title_text = html_element->title(); } else {
diff --git a/third_party/blink/renderer/core/page/drag_controller.cc b/third_party/blink/renderer/core/page/drag_controller.cc index 46c7b599..5f2097a 100644 --- a/third_party/blink/renderer/core/page/drag_controller.cc +++ b/third_party/blink/renderer/core/page/drag_controller.cc
@@ -801,8 +801,8 @@ return true; for (Node& ancestor_node : NodeTraversal::InclusiveAncestorsOf(node)) { - if (ancestor_node.IsHTMLElement() && - ToHTMLElement(&ancestor_node)->draggable()) + auto* html_element = DynamicTo<HTMLElement>(ancestor_node); + if (html_element && html_element->draggable()) return false; }
diff --git a/third_party/blink/renderer/core/page/focus_controller.cc b/third_party/blink/renderer/core/page/focus_controller.cc index 8e8348d..856562e 100644 --- a/third_party/blink/renderer/core/page/focus_controller.cc +++ b/third_party/blink/renderer/core/page/focus_controller.cc
@@ -413,8 +413,8 @@ } inline bool HasCustomFocusLogic(const Element& element) { - return element.IsHTMLElement() && - ToHTMLElement(element).HasCustomFocusLogic(); + auto* html_element = DynamicTo<HTMLElement>(element); + return html_element && html_element->HasCustomFocusLogic(); } inline bool IsShadowHostWithoutCustomFocusLogic(const Element& element) { @@ -1123,15 +1123,16 @@ // Will nvestigate further for a proper solution later. static const int kFocusTraversalThreshold = 50; element->GetDocument().UpdateStyleAndLayout(); - if (!element->IsHTMLElement()) + auto* html_element = DynamicTo<HTMLElement>(element); + if (!html_element) return nullptr; if (!element->IsFormControlElement() && - !ToHTMLElement(element)->isContentEditableForBinding()) + !html_element->isContentEditableForBinding()) return nullptr; HTMLFormElement* form_owner = nullptr; - if (ToHTMLElement(element)->isContentEditableForBinding()) + if (html_element->isContentEditableForBinding()) form_owner = Traversal<HTMLFormElement>::FirstAncestor(*element); else form_owner = ToHTMLFormControlElement(element)->formOwner(); @@ -1146,9 +1147,10 @@ next_element = FindFocusableElement(focus_type, *next_element, owner_map), ++traversal) { - if (!next_element->IsHTMLElement()) + auto* next_html_element = DynamicTo<HTMLElement>(next_element); + if (!next_html_element) continue; - if (ToHTMLElement(next_element)->isContentEditableForBinding() && + if (next_html_element->isContentEditableForBinding() && next_element->IsDescendantOf(form_owner)) return next_element; if (!next_element->IsFormControlElement())
diff --git a/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc b/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc index 71bd564..80dcd81 100644 --- a/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc +++ b/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc
@@ -139,7 +139,7 @@ check_chunks(); - ToHTMLElement(content1.GetNode()) + To<HTMLElement>(content1.GetNode()) ->setAttribute(html_names::kStyleAttr, "position: absolute; width: 100px; height: 100px; " "background-color: green"); @@ -303,7 +303,7 @@ IsSameId(&container2, kBackgroundType), IsSameId(&content2, kBackgroundType))); - ToHTMLElement(GetElementById("content1")) + To<HTMLElement>(GetElementById("content1")) ->setAttribute(html_names::kStyleAttr, "position: absolute; width: 100px; height: 100px; " "background-color: green"); @@ -458,7 +458,7 @@ )HTML"); LayoutObject& outline_div = *GetDocument().getElementById("outline")->GetLayoutObject(); - ToHTMLElement(outline_div.GetNode()) + To<HTMLElement>(outline_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_outline); UpdateAllLifecyclePhasesForTest(); @@ -479,7 +479,7 @@ // Outline on the self-painting-layer node itself doesn't affect // PaintPhaseDescendantOutlines. - ToHTMLElement(self_painting_layer_object.GetNode()) + To<HTMLElement>(self_painting_layer_object.GetNode()) ->setAttribute(html_names::kStyleAttr, "position: absolute; outline: 1px solid green"); UpdateAllLifecyclePhasesForTest(); @@ -491,7 +491,7 @@ // needsPaintPhaseDescendantOutlines should be set when any descendant on the // same layer has outline. - ToHTMLElement(outline_div.GetNode()) + To<HTMLElement>(outline_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_with_outline); GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseDescendantOutlines()); @@ -503,7 +503,7 @@ // needsPaintPhaseDescendantOutlines should be reset when no outline is // actually painted. - ToHTMLElement(outline_div.GetNode()) + To<HTMLElement>(outline_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_outline); UpdateAllLifecyclePhasesForTest(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseDescendantOutlines()); @@ -525,7 +525,7 @@ )HTML"); LayoutObject& float_div = *GetDocument().getElementById("float")->GetLayoutObject(); - ToHTMLElement(float_div.GetNode()) + To<HTMLElement>(float_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_float); UpdateAllLifecyclePhasesForTest(); @@ -546,7 +546,7 @@ // needsPaintPhaseFloat should be set when any descendant on the same layer // has float. - ToHTMLElement(float_div.GetNode()) + To<HTMLElement>(float_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_with_float); GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseFloat()); @@ -558,7 +558,7 @@ // needsPaintPhaseFloat should be reset when there is no float actually // painted. - ToHTMLElement(float_div.GetNode()) + To<HTMLElement>(float_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_float); UpdateAllLifecyclePhasesForTest(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseFloat()); @@ -627,7 +627,7 @@ )HTML"); LayoutObject& background_div = *GetDocument().getElementById("background")->GetLayoutObject(); - ToHTMLElement(background_div.GetNode()) + To<HTMLElement>(background_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_background); UpdateAllLifecyclePhasesForTest(); @@ -649,7 +649,7 @@ // Background on the self-painting-layer node itself doesn't affect // PaintPhaseDescendantBlockBackgrounds. - ToHTMLElement(self_painting_layer_object.GetNode()) + To<HTMLElement>(self_painting_layer_object.GetNode()) ->setAttribute(html_names::kStyleAttr, "position: absolute; background: green"); UpdateAllLifecyclePhasesForTest(); @@ -662,7 +662,7 @@ // needsPaintPhaseDescendantBlockBackgrounds should be set when any descendant // on the same layer has Background. - ToHTMLElement(background_div.GetNode()) + To<HTMLElement>(background_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_with_background); GetDocument().View()->UpdateAllLifecyclePhasesExceptPaint(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseDescendantBlockBackgrounds()); @@ -675,7 +675,7 @@ // needsPaintPhaseDescendantBlockBackgrounds should be reset when no outline // is actually painted. - ToHTMLElement(background_div.GetNode()) + To<HTMLElement>(background_div.GetNode()) ->setAttribute(html_names::kStyleAttr, style_without_background); UpdateAllLifecyclePhasesForTest(); EXPECT_TRUE(self_painting_layer.NeedsPaintPhaseDescendantBlockBackgrounds()); @@ -704,7 +704,7 @@ EXPECT_TRUE(html_layer.NeedsPaintPhaseFloat()); EXPECT_TRUE(html_layer.NeedsPaintPhaseDescendantBlockBackgrounds()); - ToHTMLElement(layer_div.GetNode()) + To<HTMLElement>(layer_div.GetNode()) ->setAttribute(html_names::kStyleAttr, "position: relative"); UpdateAllLifecyclePhasesForTest(); ASSERT_TRUE(layer_div.HasLayer()); @@ -739,7 +739,7 @@ EXPECT_TRUE(html_layer.NeedsPaintPhaseDescendantOutlines()); EXPECT_TRUE(html_layer.NeedsPaintPhaseDescendantBlockBackgrounds()); - ToHTMLElement(layer_div.GetNode()) + To<HTMLElement>(layer_div.GetNode()) ->setAttribute( html_names::kStyleAttr, "width: 100px; height: 100px; overflow: hidden; position: relative"); @@ -779,7 +779,7 @@ EXPECT_FALSE(html_layer.NeedsPaintPhaseDescendantOutlines()); EXPECT_FALSE(html_layer.NeedsPaintPhaseDescendantBlockBackgrounds()); - ToHTMLElement(layer_div.GetNode()) + To<HTMLElement>(layer_div.GetNode()) ->setAttribute(html_names::kStyleAttr, "width: 100px; height: 100px; overflow: hidden"); UpdateAllLifecyclePhasesForTest(); @@ -826,7 +826,7 @@ EXPECT_TRUE(layer.IsSelfPaintingLayer()); EXPECT_FALSE(layer.NeedsPaintPhaseDescendantBlockBackgrounds()); - ToHTMLElement(table.GetNode()) + To<HTMLElement>(table.GetNode()) ->setAttribute(html_names::kStyleAttr, "position: relative; border-collapse: collapse"); UpdateAllLifecyclePhasesForTest();
diff --git a/third_party/blink/renderer/devtools/front_end/elements_test_runner/ElementsTestRunner.js b/third_party/blink/renderer/devtools/front_end/elements_test_runner/ElementsTestRunner.js index fdf322c..019455d 100644 --- a/third_party/blink/renderer/devtools/front_end/elements_test_runner/ElementsTestRunner.js +++ b/third_party/blink/renderer/devtools/front_end/elements_test_runner/ElementsTestRunner.js
@@ -1117,6 +1117,23 @@ } }; +ElementsTestRunner.dumpInspectorDistanceJSON = function(idValue, callback) { + ElementsTestRunner.nodeWithId(idValue, nodeResolved); + + async function nodeResolved(node) { + const result = await TestRunner.OverlayAgent.getHighlightObjectForTest(node.id, true); + const info = result['distanceInfo']; + if (!info) { + TestRunner.addResult(`${idValue}: No distance info`); + } else { + if (info['style']) + info['style'] = '<style data>'; + TestRunner.addResult(idValue + JSON.stringify(info, null, 2)); + } + callback(); + } +}; + ElementsTestRunner.waitForAnimationAdded = function(callback) { TestRunner.addSniffer(Animation.AnimationTimeline.prototype, '_addAnimationGroup', callback); };
diff --git a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc index 2996fd78..4a19b67 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
@@ -2511,7 +2511,7 @@ ExceptionState exception_state(v8::Isolate::GetCurrent(), ExceptionState::kExecutionContext, nullptr, nullptr); - ToHTMLElement(GetNode())->setInnerText(string, exception_state); + To<HTMLElement>(GetNode())->setInnerText(string, exception_state); if (exception_state.HadException()) { exception_state.ClearException(); return false;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index cf78117..46e820a 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -371,7 +371,8 @@ ax::mojom::Role current_role, HTMLElement* current_element) { Node* parent_node = parent->GetNode(); - if (!parent_node || !parent_node->IsHTMLElement()) + auto* parent_html_element = DynamicTo<HTMLElement>(parent_node); + if (!parent_html_element) return false; if (current_role == ax::mojom::Role::kListItem) @@ -388,7 +389,7 @@ if (IsHTMLTableCellElement(*current_element)) return IsHTMLTableRowElement(*parent_node); if (IsHTMLTableRowElement(*current_element)) - return IsHTMLTableSectionElement(ToHTMLElement(*parent_node)); + return IsHTMLTableSectionElement(parent_html_element); // In case of ListboxRole and its child, ListBoxOptionRole, inheritance of // presentation role is handled in AXListBoxOption because ListBoxOption Role @@ -417,9 +418,7 @@ if (!parent) return nullptr; - HTMLElement* element = nullptr; - if (GetNode() && GetNode()->IsHTMLElement()) - element = ToHTMLElement(GetNode()); + auto* element = DynamicTo<HTMLElement>(GetNode()); if (!parent->HasInheritedPresentationalRole()) return nullptr; @@ -1279,26 +1278,26 @@ } } - if (!node->IsHTMLElement()) + auto* element = DynamicTo<HTMLElement>(node); + if (!element) return 0; - HTMLElement& element = ToHTMLElement(*node); - if (element.HasTagName(kH1Tag)) + if (element->HasTagName(kH1Tag)) return 1; - if (element.HasTagName(kH2Tag)) + if (element->HasTagName(kH2Tag)) return 2; - if (element.HasTagName(kH3Tag)) + if (element->HasTagName(kH3Tag)) return 3; - if (element.HasTagName(kH4Tag)) + if (element->HasTagName(kH4Tag)) return 4; - if (element.HasTagName(kH5Tag)) + if (element->HasTagName(kH5Tag)) return 5; - if (element.HasTagName(kH6Tag)) + if (element->HasTagName(kH6Tag)) return 6; if (RoleValue() == ax::mojom::Role::kHeading) @@ -2187,9 +2186,7 @@ // Based on // http://rawgit.com/w3c/aria/master/html-aam/html-aam.html#accessible-name-and-description-calculation // 5.1/5.5 Text inputs, Other labelable Elements - HTMLElement* html_element = nullptr; - if (GetNode()->IsHTMLElement()) - html_element = ToHTMLElement(GetNode()); + auto* html_element = DynamicTo<HTMLElement>(GetNode()); if (html_element && html_element->IsLabelable()) { if (html_element->labels() && html_element->labels()->length() > 0) return true; @@ -2827,10 +2824,7 @@ // 5.1/5.5 Text inputs, Other labelable Elements // If you change this logic, update AXNodeObject::nameFromLabelElement, too. - HTMLElement* html_element = nullptr; - if (GetNode()->IsHTMLElement()) - html_element = ToHTMLElement(GetNode()); - + auto* html_element = DynamicTo<HTMLElement>(GetNode()); if (html_element && html_element->IsLabelable()) { name_from = ax::mojom::NameFrom::kRelatedElement; if (name_sources) {
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_creation_options.idl b/third_party/blink/renderer/modules/credentialmanager/credential_creation_options.idl index ec630b6..ecac691 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credential_creation_options.idl +++ b/third_party/blink/renderer/modules/credentialmanager/credential_creation_options.idl
@@ -12,4 +12,5 @@ PasswordCredentialInit password; FederatedCredentialInit federated; PublicKeyCredentialCreationOptions publicKey; + AbortSignal signal; };
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc index dd43994..54e44c5 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc +++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc
@@ -117,6 +117,8 @@ switch (status) { case blink::mojom::blink::AuthenticatorStatus::NOT_ALLOWED_ERROR: return CredentialManagerError::NOT_ALLOWED; + case blink::mojom::blink::AuthenticatorStatus::ABORT_ERROR: + return CredentialManagerError::ABORT; case blink::mojom::blink::AuthenticatorStatus::UNKNOWN_ERROR: return CredentialManagerError::UNKNOWN; case blink::mojom::blink::AuthenticatorStatus::PENDING_REQUEST:
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_request_options.idl b/third_party/blink/renderer/modules/credentialmanager/credential_request_options.idl index d413c468..7f501f6 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credential_request_options.idl +++ b/third_party/blink/renderer/modules/credentialmanager/credential_request_options.idl
@@ -17,4 +17,5 @@ CredentialMediationRequirement mediation = "optional"; PublicKeyCredentialRequestOptions publicKey; + AbortSignal signal; };
diff --git a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc index 7539ba77..53534ce 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc
@@ -11,6 +11,7 @@ #include "third_party/blink/public/mojom/credentialmanager/credential_manager.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" +#include "third_party/blink/renderer/core/dom/abort_signal.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" @@ -278,6 +279,8 @@ "requirement cannot be fulfilled by " "this device unless the device is secured " "with a screen lock."); + case CredentialManagerError::ABORT: + return DOMException::Create(DOMExceptionCode::kAbortError); case CredentialManagerError::UNKNOWN: return DOMException::Create(DOMExceptionCode::kNotReadableError, "An unknown error occurred while talking " @@ -289,6 +292,16 @@ return nullptr; } +// Abort an ongoing PublicKeyCredential create() or get() operation. +void Abort(ScriptState* script_state) { + if (!script_state->ContextIsValid()) + return; + + auto* authenticator = + CredentialManagerProxy::From(script_state)->Authenticator(); + authenticator->Cancel(); +} + void OnStoreComplete(std::unique_ptr<ScopedPromiseResolver> scoped_resolver, RequiredOriginType required_origin_type) { auto* resolver = scoped_resolver->Release(); @@ -495,6 +508,15 @@ } } + if (options->hasSignal()) { + if (options->signal()->aborted()) { + resolver->Reject(DOMException::Create(DOMExceptionCode::kAbortError)); + return promise; + } + options->signal()->AddAlgorithm( + WTF::Bind(&Abort, WTF::Passed(WrapPersistent(script_state)))); + } + auto mojo_options = MojoPublicKeyCredentialRequestOptions::From(options->publicKey()); if (mojo_options) { @@ -667,6 +689,15 @@ } } + if (options->hasSignal()) { + if (options->signal()->aborted()) { + resolver->Reject(DOMException::Create(DOMExceptionCode::kAbortError)); + return promise; + } + options->signal()->AddAlgorithm( + WTF::Bind(&Abort, WTF::Passed(WrapPersistent(script_state)))); + } + auto mojo_options = MojoPublicKeyCredentialCreationOptions::From(options->publicKey()); if (!mojo_options) {
diff --git a/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_impl.cc b/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_impl.cc index 4f37992..ef84281 100644 --- a/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_impl.cc +++ b/third_party/blink/renderer/modules/peerconnection/adapters/p2p_quic_transport_impl.cc
@@ -163,7 +163,8 @@ quic::QuicConnectionId(connection_id_bytes, sizeof(connection_id_bytes)); return std::make_unique<quic::QuicConnection>( dummy_connection_id, dummy_address, helper, alarm_factory, packet_writer, - /* owns_writer */ true, perspective, quic::CurrentSupportedVersions()); + /* owns_writer */ true, perspective, + quic::ParsedQuicVersionVector{quic::CurrentSupportedVersions()[0]}); } // A dummy helper for a server crypto stream that accepts all client hellos
diff --git a/third_party/blink/renderer/modules/sms/sms_receiver.cc b/third_party/blink/renderer/modules/sms/sms_receiver.cc index 8484280..87ff16f 100644 --- a/third_party/blink/renderer/modules/sms/sms_receiver.cc +++ b/third_party/blink/renderer/modules/sms/sms_receiver.cc
@@ -8,7 +8,9 @@ #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/mojom/sms/sms_manager.mojom-blink.h" +#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" +#include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/modules/sms/sms.h" #include "third_party/blink/renderer/modules/sms/sms_receiver_options.h" #include "third_party/blink/renderer/platform/bindings/name_client.h" @@ -70,6 +72,14 @@ ExecutionContext* context = ExecutionContext::From(script_state); DCHECK(context->IsContextThread()); + LocalFrame* frame = GetFrame(); + if (!frame->IsMainFrame()) { + return ScriptPromise::RejectWithDOMException( + script_state, + DOMException::Create(DOMExceptionCode::kNotAllowedError, + "Must be in top-level browsing context.")); + } + StartMonitoring(); return ScriptPromise::CastUndefined(script_state);
diff --git a/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.cc b/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.cc index b60f5a03..fbd7ae0 100644 --- a/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.cc +++ b/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.cc
@@ -37,8 +37,8 @@ DocumentResourceCoordinator::~DocumentResourceCoordinator() = default; -void DocumentResourceCoordinator::SetNetworkAlmostIdle(bool idle) { - service_->SetNetworkAlmostIdle(idle); +void DocumentResourceCoordinator::SetNetworkAlmostIdle() { + service_->SetNetworkAlmostIdle(); } void DocumentResourceCoordinator::SetLifecycleState(
diff --git a/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h b/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h index 659a799..e193e35 100644 --- a/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h +++ b/third_party/blink/renderer/platform/instrumentation/resource_coordinator/document_resource_coordinator.h
@@ -27,7 +27,7 @@ service_manager::InterfaceProvider*); ~DocumentResourceCoordinator(); - void SetNetworkAlmostIdle(bool); + void SetNetworkAlmostIdle(); void SetLifecycleState(resource_coordinator::mojom::LifecycleState); void SetHasNonEmptyBeforeUnload(bool has_nonempty_beforeunload); void SetInterventionPolicy(
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 9eaac54..c19dd878 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -1011,6 +1011,10 @@ origin_trial_os: ["invalid"], }, { + name: "OriginTrialsSampleAPINavigation", + origin_trial_feature_name: "FrobulateNavigation", + }, + { name: "OutOfBlinkCors", }, {
diff --git a/third_party/blink/tools/blinkpy/web_tests/run_web_tests.py b/third_party/blink/tools/blinkpy/web_tests/run_web_tests.py index 5bd63d54..f0a15139 100644 --- a/third_party/blink/tools/blinkpy/web_tests/run_web_tests.py +++ b/third_party/blink/tools/blinkpy/web_tests/run_web_tests.py
@@ -46,6 +46,13 @@ def main(argv, stderr): options, args = parse_args(argv) + # Disable LayoutNG unless explicitly enabled during transition period to + # avoid having to unnecessarily update test expectations every time the flag + # is flipped and to allow us to update expectations one bot at a time. + # TODO(eae): Remove once LayoutNG launches. https://crbug.com/961437 + if not '--enable-blink-features=LayoutNG' in options.additional_driver_flag: + options.additional_driver_flag.append('--disable-blink-features=LayoutNG') + if options.platform and 'test' in options.platform and not 'browser_test' in options.platform: # It's a bit lame to import mocks into real code, but this allows the user # to run tests against the test platform interactively, which is useful for
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG index 031f8ee..d6b619f 100644 --- a/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
@@ -102,9 +102,9 @@ crbug.com/591099 external/wpt/css/css-shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html [ Pass ] crbug.com/845902 external/wpt/css/css-sizing/whitespace-and-break.html [ Pass ] crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-001.html [ Pass ] -crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-002.html [ Failure ] -crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-006.html [ Failure ] -crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-007.html [ Failure ] +crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-003.html [ Pass ] +crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-004.html [ Pass ] +crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-005.html [ Pass ] crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-009.html [ Failure ] crbug.com/591099 external/wpt/css/css-text/boundary-shaping/boundary-shaping-010.html [ Pass ] crbug.com/591099 external/wpt/css/css-text/hyphens/hyphens-out-of-flow-002.html [ Failure ] @@ -310,6 +310,7 @@ crbug.com/889721 fast/inline/outline-continuations.html [ Failure ] crbug.com/591099 fast/multicol/border-radius-clipped-layer.html [ Pass ] crbug.com/591099 fast/peerconnection/RTCPeerConnection-many.html [ Pass ] +crbug.com/591099 fast/scrolling/unscrollable-layer-subpixel-size-with-negative-overflow.html [ Failure Pass ] crbug.com/899902 fast/text/ellipsis-with-self-painting-layer.html [ Pass ] crbug.com/591099 fast/text/emoji-vertical-origin-visual.html [ Failure ] crbug.com/591099 fast/text/font-format-support-color-cff2-vertical.html [ Failure ]
diff --git a/third_party/blink/web_tests/MSANExpectations b/third_party/blink/web_tests/MSANExpectations index 26e643b0..71a86f2 100644 --- a/third_party/blink/web_tests/MSANExpectations +++ b/third_party/blink/web_tests/MSANExpectations
@@ -72,8 +72,6 @@ crbug.com/729136 [ Linux ] http/tests/devtools/elements/styles-4/styles-should-not-force-sync-style-recalc.js [ Timeout ] crbug.com/729136 [ Linux ] webaudio/mixing.html [ Timeout ] -crbug.com/739365 [ Linux ] virtual/layout_ng/fast/block/float/assert-when-moving-float.html [ Skip ] - # Tests timing out on WebKit Linux Trusty MSAN crbug.com/760543 [ Linux ] http/tests/devtools/tracing/timeline-layout/timeline-layout-with-invalidations.js [ Pass Timeout ] crbug.com/760543 [ Linux ] http/tests/devtools/tracing/timeline-paint/timeline-paint-with-layout-invalidations.js [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/SmokeTests b/third_party/blink/web_tests/SmokeTests index 93fbb92c..6aa0d74 100644 --- a/third_party/blink/web_tests/SmokeTests +++ b/third_party/blink/web_tests/SmokeTests
@@ -967,9 +967,6 @@ virtual/gpu/fast/canvas/canvas-filter-frameless-document.html virtual/gpu/fast/canvas/feimage-with-foreignobject-taint-canvas-2.html virtual/gpu-rasterization/images/drag-image-descendant-painting-sibling.html -virtual/layout_ng/fast/block/float/floats-not-cleared-crash.html -virtual/layout_ng/fast/block/float/positioned-float-crash.html -virtual/layout_ng/fast/block/margin-collapse/019.html # Include //media/OWNERS on review of changes to media-gpu-accelerated SmokeTests coverage. virtual/media-gpu-accelerated/media/video-autoplay.html
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 06b8b8e..9aa145c 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -48,10 +48,6 @@ crbug.com/887140 hdr/color-profile-video.html [ Failure ] crbug.com/887140 hdr/video-canvas-alpha.html [ Failure ] -# Unexpected failures (due to leaks?) -crbug.com/927454 [ Linux ] external/wpt/pointerevents/pointerevent_pointerleave_descendant_over.html [ Pass Failure ] -crbug.com/927454 [ Linux ] external/wpt/pointerevents/pointerevent_lostpointercapture_is_first.html [ Pass Failure ] - # ====== Site Isolation failures from here ====== # See also third_party/blink/web_tests/virtual/not-site-per-process/README.md # @@ -667,76 +663,6 @@ crbug.com/591099 external/wpt/css/css-writing-modes/inline-box-border-vlr-001.html [ Failure ] crbug.com/591099 external/wpt/css/filter-effects/filtered-inline-applies-to-float.html [ Failure ] crbug.com/591099 tables/mozilla/bugs/bug14159-1.html [ Failure ] - -### virtual/layout_ng/external/wpt/css/CSS2/floats -crbug.com/711704 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-rule3-outside-left-002.xht [ Failure ] -crbug.com/711704 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-rule3-outside-right-002.xht [ Failure ] -crbug.com/711704 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-rule7-outside-left-001.xht [ Failure ] -crbug.com/711704 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-rule7-outside-right-001.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats/floats-wrap-bfc-006.xht [ Failure ] - -# Inline: border in continuations. Fail in Blink. -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-001f.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/block-in-inline-insert-002f.xht [ Failure ] - -# Tables. -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/max-width-applies-to-005.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/max-width-applies-to-006.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/max-width-applies-to-013.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/max-width-applies-to-014.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-width-applies-to-005.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-width-applies-to-006.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/min-width-applies-to-014.xht [ Failure ] - -# SVG intrinsic sizing. -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/replaced-intrinsic-001.xht [ Failure ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/replaced-intrinsic-002.xht [ Failure ] - -### virtual/layout_ng/external/wpt/css/CSS2/positioning -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-035.xht [ Failure ] - -### virtual/layout_ng/fast/block/basic -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/basic/011.html [ Failure ] -crbug.com/635619 virtual/layout_ng/fast/block/basic/018.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/basic/text-indent-rtl.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/basic/truncation-rtl.html [ Failure ] - -### virtual/layout_ng/fast/block/float -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/020.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/026.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/028.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/float-in-float-hit-testing.html [ Failure ] -crbug.com/635619 virtual/layout_ng/fast/block/float/clear-intruding-floats-when-moving-to-inline-parent-3.html [ Failure Crash Pass ] -crbug.com/635619 virtual/layout_ng/fast/block/float/float-in-float-painting.html [ Failure ] -crbug.com/635619 virtual/layout_ng/fast/block/float/float-list-changed-before-layout-crash.html [ Crash Pass ] -crbug.com/635619 virtual/layout_ng/fast/block/float/float-not-removed-from-next-sibling4.html [ Crash Pass ] -crbug.com/635619 virtual/layout_ng/fast/block/float/float-reparent-during-detach-crash.html [ Crash Pass ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/intruding-painted-twice.html [ Failure ] -crbug.com/635619 virtual/layout_ng/fast/block/float/line-break-after-white-space-crash.html [ Pass Crash Timeout ] -crbug.com/635619 virtual/layout_ng/fast/block/float/nopaint-after-layer-destruction2.html [ Failure ] -crbug.com/810370 virtual/layout_ng/fast/block/float/overhanging-float-remove-from-fixed-position-block.html [ Failure ] -crbug.com/810370 virtual/layout_ng/fast/block/float/overhanging-float-remove-from-fixed-position-block2.html [ Failure ] -crbug.com/635619 virtual/layout_ng/fast/block/float/rubybase-children-moved-crash.html [ Crash Pass ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/float/width-update-after-clear.html [ Failure ] - -### virtual/layout_ng/fast/block/margin-collapse -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/103.html [ Failure ] - -### virtual/layout_ng/overflow -crbug.com/724701 virtual/layout_ng/overflow/overflow-basic-004.html [ Failure ] - -### single pixel underline Mac failures -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/001.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/005.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/001.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/005.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/010.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/011.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/012.html [ Failure ] -crbug.com/635619 [ Mac ] virtual/layout_ng/fast/block/margin-collapse/block-inside-inline/015.html [ Failure ] - - - crbug.com/836300 fast/css3-text/css3-text-decoration/text-decoration-skip-ink-links.html [ Pass Failure ] # ====== LayoutNG ====== @@ -746,55 +672,6 @@ crbug.com/835810 [ Win7 ] http/tests/devtools/startup/dom-storage-open.js [ Pass Timeout ] -### Image/text failures -#crbug.com/714962 virtual/layout_ng/fast/inline/001.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/emptyInlinesWithinLists.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/inline-box-background-long-image.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/inline-box-background-repeat-x.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/inline-box-background-repeat-y.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/inline-box-background.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/justify-emphasis-inline-box.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/inline/br-text-decoration.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/inline/drawStyledEmptyInlines.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/inline/drawStyledEmptyInlinesWithWS.html [ Failure ] - -### Image/text failures also on LayoutNG -crbug.com/714962 virtual/layout_ng/fast/inline/absolute-positioned-inline-in-centred-block.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/continuation-outlines-with-layers.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/continuation-outlines.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/inline-borders-with-bidi-override.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/inline/outline-continuations.html [ Failure ] - -### virtual/layout_ng/fast/block/float/ -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/block/float/002.html [ Failure ] - -### virtual/layout_ng/fast/writing-mode/ -crbug.com/714962 virtual/layout_ng/fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/background-vertical-lr.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/basic-vertical-line.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/border-image-vertical-lr.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/border-radius-clipping-vertical-lr.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/border-styles-vertical-lr.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/box-shadow-vertical-lr.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/box-shadow-vertical-rl.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/broken-ideograph-small-caps.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/broken-ideographic-font.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/fieldsets.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/flipped-blocks-hit-test-line-edges.html [ Failure ] -crbug.com/714962 [ Mac Linux ] virtual/layout_ng/fast/writing-mode/japanese-lr-selection.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/japanese-lr-text.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/japanese-rl-selection.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/percentage-height-orthogonal-writing-modes.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/vertical-align-table-baseline.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/vertical-baseline-alignment.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/vertical-font-fallback.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/vertical-lr-replaced-selection.html [ Failure ] -crbug.com/714962 virtual/layout_ng/fast/writing-mode/vertical-rl-replaced-selection.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/border-vertical-lr.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/english-lr-text.html [ Failure ] -crbug.com/714962 [ Win ] virtual/layout_ng/fast/writing-mode/english-lr-text.html [ Failure ] -crbug.com/714962 [ Mac ] virtual/layout_ng/fast/writing-mode/text-orientation-basic.html [ Failure ] - # Crashes/asserts due to inline item reuse. crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-after-spanner.html [ Failure Crash Timeout ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/dynamic/remove-block-from-content-before-spanner.html [ Failure Crash Timeout ] @@ -804,48 +681,7 @@ crbug.com/797591 virtual/layout_ng_experimental/fast/multicol/regular-block-becomes-multicol.html [ Failure ] crbug.com/797591 virtual/layout_ng_experimental/fast/multicol/newmulticol/regular-block-becomes-multicol.html [ Failure ] -### 1px diff with ref files. -crbug.com/635619 [ Linux ] virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-sub-001.xht [ Failure ] -crbug.com/635619 [ Linux ] virtual/layout_ng/external/wpt/css/CSS2/linebox/vertical-align-super-001.xht [ Failure ] - ### Missing refs, these are also skipped for existing layout. -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floating-replaced-height-008.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-108.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-109.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-110.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-126.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-127.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-128.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-129.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-130.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-131.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/floats-clear/floats-137.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-002.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-003.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-004.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inline-block-005.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inlines-003.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inlines-004.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inlines-005.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/normal-flow/inlines-006.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-001.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-002.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-003.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-004.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-005.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-inline-006.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-paged-001.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/abspos-paged-002.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-004.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-fixed-003.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-fixed-004.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-fixed-005.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-020.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-021.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-022.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-034.xht [ Skip ] -crbug.com/635619 virtual/layout_ng/external/wpt/css/CSS2/positioning/position-relative-036.xht [ Skip ] - crbug.com/829028 virtual/layout_ng_experimental/external/wpt/css/css-multicol/balance-table-with-fractional-height-row.html [ Failure ] crbug.com/829028 virtual/layout_ng_experimental/external/wpt/css/css-multicol/filter-with-abspos.html [ Failure ] crbug.com/829028 virtual/layout_ng_experimental/external/wpt/css/css-multicol/float-and-block.html [ Failure ] @@ -1188,7 +1024,6 @@ crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/positive-leading.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/pushed-line-affected-by-float.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/relayout-and-push-float.html [ Failure ] -crbug.com/591099 [ Mac ] virtual/layout_ng_experimental/fast/multicol/relpos-inside-inline-block.html [ Failure ] crbug.com/591099 virtual/layout_ng_experimental/fast/multicol/rule-in-nested-with-too-tall-line.html [ Failure ] crbug.com/714962 virtual/layout_ng_experimental/fast/multicol/scale-transform-text.html [ Failure ] crbug.com/874506 virtual/layout_ng_experimental/fast/multicol/scrollable-basic.html [ Failure ] @@ -1743,7 +1578,6 @@ # they are related to timing and to the same issues as above. # Here is an example: https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_rel_ng/221340 crbug.com/891427 fast/block/float/4145535Crash.html [ Pass Failure Timeout Crash ] -crbug.com/891427 virtual/layout_ng/fast/block/float/4145535Crash.html [ Pass Failure Timeout Crash ] crbug.com/891427 http/tests/webfont/font-display-intervention.html [ Pass Failure Timeout Crash ] crbug.com/891427 paint/invalidation/scroll/fixed-img-src-change-after-scroll.html [ Pass Failure Timeout Crash ] crbug.com/891427 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-changing-style-relayout-body-scrollablearea.html [ Pass Failure Timeout Crash ] @@ -1760,7 +1594,6 @@ crbug.com/767269 [ Win ] inspector-protocol/layout-fonts/cjk-ideograph-fallback-by-lang.js [ Pass Failure ] -crbug.com/788110 [ Linux ] inspector-protocol/layout-fonts/unicode-range-combining-chars-fallback.js [ Pass Failure ] crbug.com/788110 [ Win10 ] inspector-protocol/layout-fonts/unicode-range-combining-chars-fallback.js [ Pass Failure ] crbug.com/803276 [ Mac ] inspector-protocol/memory/sampling-native-profile.js [ Skip ] @@ -1813,20 +1646,16 @@ crbug.com/862716 [ Mac ] css3/filters/effect-brightness-clamping-hw.html [ Failure Pass Timeout ] crbug.com/862716 [ Linux ] css3/filters/effect-brightness-clamping-hw.html [ Failure Pass Timeout ] crbug.com/862716 [ Win ] css3/filters/effect-brightness-clamping-hw.html [ Failure Pass Timeout ] -crbug.com/862806 [ Mac ] css3/filters/effect-drop-shadow-hw.html [ Failure Pass ] # gpuBenchmarking.pinchBy is busted on desktops for touchscreen pinch crbug.com/787615 [ Win ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-zoom-in-slow.html [ Failure Pass ] -crbug.com/787615 [ Linux ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-zoom-in-slow.html [ Failure Pass ] crbug.com/787615 [ Fuchsia ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-zoom-in-slow.html [ Failure Pass ] crbug.com/787615 [ Win ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen.html [ Failure Pass ] crbug.com/787615 [ Linux ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen.html [ Failure Pass ] crbug.com/787615 [ Fuchsia ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen.html [ Failure Pass ] # Flakily fail on Linux Tests (dbg) and Win7. -crbug.com/953725 [ Linux ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchpad-zoom-in-slow.html [ Failure Pass ] crbug.com/953725 [ Win ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchpad-zoom-in-slow.html [ Failure Pass ] -crbug.com/922508 [ Linux Debug ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchpad.html [ Failure Pass ] crbug.com/922508 [ Win ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchpad.html [ Failure Pass ] crbug.com/871139 [ Android ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-zoom-in-slow.html [ Failure Timeout ] @@ -1849,8 +1678,6 @@ crbug.com/520611 [ Debug ] fast/filesystem/workers/file-writer-events-shared-worker.html [ Failure Pass ] crbug.com/520194 http/tests/xmlhttprequest/timeout/xmlhttprequest-timeout-worker-overridesexpires.html [ Failure Pass ] -crbug.com/761798 [ Mac ] inspector-protocol/emulation/device-emulation-desktop.js [ Failure ] - crbug.com/771233 [ Win10 ] http/tests/devtools/audits2/ [ Skip ] crbug.com/923269 virtual/gpu/fast/canvas/OffscreenCanvas-copyImage.html [ Failure ] @@ -1939,8 +1766,6 @@ crbug.com/487281 [ Mac ] fast/forms/select/menulist-narrow-width.html [ Failure ] -crbug.com/543110 [ Mac ] fast/text/international/text-shaping-arabic.html [ Failure ] - crbug.com/731731 inspector-protocol/layers/paint-profiler-load-empty.js [ Failure Pass ] # Will be re-enabled and rebaselined once we remove the '--enable-file-cookies' flag. @@ -1979,7 +1804,6 @@ crbug.com/766135 fast/dom/Window/redirect-with-timer.html [ Timeout Pass ] # Ref tests that needs investigation. -crbug.com/404597 [ Mac ] fast/css3-text/css3-text-justify/text-justify-crash.html [ Failure ] crbug.com/404597 fast/forms/long-text-in-input.html [ Skip ] crbug.com/552494 virtual/prefer_compositing_to_lcd_text/scrollbars/overflow-scrollbar-combinations.html [ Pass Failure ] @@ -2465,7 +2289,6 @@ crbug.com/660185 [ Mac ] fast/forms/datalist/input-appearance-range-with-transform.html [ Pass Failure ] crbug.com/658304 [ Win ] fast/forms/select/input-select-after-resize.html [ Crash Timeout Pass ] -crbug.com/658304 [ Linux ] fast/forms/select/input-select-after-resize.html [ Crash Timeout Pass ] # We don't support requesting flex line breaks and it is not clear that we should. # See https://lists.w3.org/Archives/Public/www-style/2015May/0065.html @@ -2510,9 +2333,7 @@ crbug.com/752449 [ Mac10.13 ] external/wpt/css/css-fonts/matching/fixed-stretch-style-over-weight.html [ Failure ] crbug.com/752449 [ Retina ] external/wpt/css/css-fonts/matching/fixed-stretch-style-over-weight.html [ Failure ] crbug.com/752449 [ Mac10.12 ] external/wpt/css/css-fonts/matching/stretch-distance-over-weight-distance.html [ Failure ] -crbug.com/752449 [ Retina ] external/wpt/css/css-fonts/matching/stretch-distance-over-weight-distance.html [ Failure ] crbug.com/752449 [ Mac10.12 ] external/wpt/css/css-fonts/matching/style-ranges-over-weight-direction.html [ Failure ] -crbug.com/752449 [ Retina ] external/wpt/css/css-fonts/matching/style-ranges-over-weight-direction.html [ Failure ] crbug.com/796619 [ Win10 ] external/wpt/css/css-fonts/matching/fixed-stretch-style-over-weight.html [ Failure ] crbug.com/796619 [ Win10 ] external/wpt/css/css-fonts/matching/stretch-distance-over-weight-distance.html [ Failure ] crbug.com/796619 [ Win10 ] external/wpt/css/css-fonts/matching/style-ranges-over-weight-direction.html [ Failure ] @@ -2553,8 +2374,6 @@ crbug.com/501659 http/tests/security/xss-DENIED-xml-external-entity.xhtml [ Failure ] crbug.com/501659 fast/css/stylesheet-candidate-nodes-crash.xhtml [ Failure ] -crbug.com/545140 [ Mac ] fast/encoding/denormalised-voiced-japanese-chars.html [ Failure ] - crbug.com/591500 [ Win10 ] printing/webgl-repeated-printing.html [ Failure ] crbug.com/591500 [ Win10 ] printing/simultaneous-position-float-change.html [ Failure ] @@ -2657,8 +2476,6 @@ crbug.com/399507 virtual/threaded/http/tests/devtools/tracing/timeline-paint/layer-tree.js [ Skip ] -crbug.com/636424 [ Win7 Debug ] editing/selection/modify_move/move-by-word-visually-crash-test-5.html [ Pass Timeout ] - # These tests have test harness errors and PASS lines that have a # non-deterministic order. crbug.com/705125 fast/mediacapturefromelement/CanvasCaptureMediaStream-capture-out-of-DOM-element.html [ Failure ] @@ -2763,7 +2580,6 @@ crbug.com/626703 http/tests/devtools/indexeddb/database-refresh-view.js [ Pass Failure ] crbug.com/626703 crbug.com/946710 http/tests/devtools/extensions/extensions-sidebar.js [ Crash Failure Pass Timeout ] crbug.com/751952 fast/text/international/complex-text-rectangle.html [ Timeout Pass ] -crbug.com/751952 [ Mac ] editing/selection/modify_extend/extend_by_character.html [ Failure Pass ] crbug.com/751952 [ Win ] editing/selection/modify_extend/extend_by_character.html [ Failure Pass ] crbug.com/751952 http/tests/devtools/console/console-uncaught-promise.js [ Pass Failure ] @@ -2776,11 +2592,8 @@ crbug.com/805463 external/wpt/acid/acid3/numbered-tests.html [ Skip ] -crbug.com/828506 [ Linux ] fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] crbug.com/828506 [ Win ] fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] -crbug.com/828506 [ Linux ] virtual/mouseevent_fractional/fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] crbug.com/828506 [ Win ] virtual/mouseevent_fractional/fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] -crbug.com/828506 [ Linux ] virtual/scroll_customization/fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] crbug.com/828506 [ Win ] virtual/scroll_customization/fast/events/touch/scroll-without-mouse-lacks-mousemove-events.html [ Pass Failure ] # Failure messages are unstable so we cannot create baselines. @@ -3039,50 +2852,11 @@ crbug.com/626703 external/wpt/css/css-text/overflow-wrap/overflow-wrap-cluster-002.html [ Failure ] crbug.com/626703 external/wpt/css/css-text/overflow-wrap/overflow-wrap-cluster-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text/overflow-wrap/overflow-wrap-normal-keep-all-001.html [ Failure ] -crbug.com/626703 [ Mac10.12 ] external/wpt/media-source/mediasource-config-change-webm-av-framesize.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/media-source/mediasource-config-change-webm-av-framesize.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/media-source/mediasource-config-change-webm-av-framesize.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-pause-on-exit.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-pause-on-exit.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-pause-on-exit.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/media-source/mediasource-play.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/media-source/mediasource-play.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-enter-exit.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-cuechange.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-timestamp-events.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-sorted-before-dispatch.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-sorted-before-dispatch.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-sorted-before-dispatch.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/mediacapture-fromelement/ended.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/mediacapture-fromelement/ended.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/mediacapture-fromelement/ended.html [ Timeout ] crbug.com/626703 [ Mac10.12 ] external/wpt/media-source/mediasource-config-change-webm-a-bitrate.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/media-source/mediasource-config-change-webm-a-bitrate.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/media-source/mediasource-config-change-webm-a-bitrate.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-disabled.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-disabled.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cues-missed.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/playing-the-media-resource/loop-from-ended.tentative.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/mediaElementAudioSourceToScriptProcessorTest.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-cue-negative-duration.html [ Timeout ] crbug.com/626703 external/wpt/html/semantics/embedded-content/media-elements/src_object_blob.html [ Timeout ] crbug.com/626703 external/wpt/css/css-lists/list-item-definition.html [ Failure ] crbug.com/626703 external/wpt/html/semantics/forms/the-textarea-element/multiline-placeholder-cr.html [ Failure ] -crbug.com/626703 [ Mac10.10 ] external/wpt/event-timing/onloadthenobserve.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/event-timing/onloadthenobserve.html [ Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/event-timing/onloadthenobserve.html [ Timeout ] crbug.com/626703 [ Win7 ] external/wpt/webrtc/RTCPeerConnection-ondatachannel.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html [ Timeout ] crbug.com/626703 external/wpt/media-source/mediasource-correct-frames-after-reappend.html [ Pass Failure Timeout ] crbug.com/626703 external/wpt/media-source/mediasource-correct-frames.html [ Pass Failure Timeout ] @@ -3099,14 +2873,7 @@ crbug.com/626703 external/wpt/svg/text/reftests/text-text-anchor-002.svg [ Failure ] crbug.com/626703 external/wpt/svg/text/reftests/text-text-anchor-203.svg [ Failure ] crbug.com/626703 external/wpt/svg/text/reftests/text-text-anchor-003.svg [ Failure ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaStreamTrack-id.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/layout_ng/external/wpt/css/CSS2/abspos/abspos-containing-block-initial-009e.xht [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaStream-add-audio-track.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/layout_ng/external/wpt/css/CSS2/abspos/static-inside-table-cell.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/GUM-unknownkey-option-param.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/layout_ng/external/wpt/css/CSS2/abspos/abspos-containing-block-initial-004f.xht [ Timeout ] crbug.com/626703 virtual/webrtc-wpt-plan-b/external/wpt/webrtc/RTCPeerConnection-getStats.https.html [ Timeout ] -crbug.com/626703 [ Mac10.13 ] virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/async_005.htm [ Timeout ] crbug.com/626703 external/wpt/webrtc/RTCPeerConnection-getStats.https.html [ Timeout ] crbug.com/626703 external/wpt/infrastructure/reftest/reftest_fuzzy.html [ Failure ] crbug.com/626703 external/wpt/infrastructure/reftest/reftest_fuzzy_1.html [ Failure ] @@ -3143,7 +2910,6 @@ crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/clients-matchall-exact-controller.https.html [ Timeout ] crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/claim-with-redirect.https.html [ Timeout ] crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaStreamTrack-getCapabilities.https.html [ Timeout ] crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Timeout ] crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/navigation-redirect.https.html?client [ Timeout ] crbug.com/626703 [ Retina ] virtual/disabled-service-worker-servicification/external/wpt/service-workers/service-worker/multiple-update.https.html [ Timeout ] @@ -3153,16 +2919,7 @@ crbug.com/626703 external/wpt/reporting/bufferSize.html [ Timeout ] crbug.com/626703 external/wpt/reporting/order.html [ Timeout ] crbug.com/626703 external/wpt/reporting/nestedReport.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaDevices-enumerateDevices.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaDevices-getUserMedia.https.html [ Timeout ] crbug.com/626703 virtual/not-site-per-process/external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction/document_domain_access_details.sub.html [ Skip ] -crbug.com/626703 [ Retina ] external/wpt/websockets/interfaces/WebSocket/events/015.html?wss [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/websockets/Secure-Close-3000-reason.any.worker.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/websockets/Secure-Close-1000-verify-code.any.worker.html [ Timeout ] -crbug.com/626703 [ Retina ] external/wpt/websockets/Secure-Send-binary-arraybufferview-uint8-offset-length.any.worker.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaStream-default-feature-policy.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/GUM-non-applicable-constraint.https.html [ Timeout ] -crbug.com/626703 [ Retina ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaStream-audio-only.https.html [ Timeout ] crbug.com/626703 crbug.com/930297 [ Linux ] external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Timeout Pass Failure Crash ] crbug.com/626703 [ Win7 ] external/wpt/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html [ Failure Timeout ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-007v.html [ Failure ] @@ -3182,14 +2939,6 @@ crbug.com/626703 external/wpt/css/css-grid/abspos/descendant-static-position-003.html [ Failure ] crbug.com/626703 external/wpt/css/css-grid/abspos/descendant-static-position-002.html [ Failure ] crbug.com/626703 external/wpt/css/css-grid/abspos/descendant-static-position-001.html [ Failure ] -crbug.com/626703 [ Mac10.10 ] external/wpt/content-security-policy/inside-worker/shared-inheritance.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-self-block.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/fetch/api/cors/cors-redirect.any.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-cross-self-block.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] virtual/not-site-per-process/external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/html/dom/self-origin.sub.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/fetch/api/cors/cors-redirect-preflight.any.html [ Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/content-security-policy/frame-ancestors/frame-ancestors-url-block.html [ Timeout ] crbug.com/626703 [ Retina Mac ] external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html [ Crash Timeout ] crbug.com/626703 external/wpt/css/css-values/ic-unit-010.html [ Failure ] crbug.com/626703 external/wpt/css/css-values/ic-unit-011.html [ Failure ] @@ -3198,7 +2947,6 @@ crbug.com/626703 external/wpt/css/css-values/ic-unit-012.html [ Failure ] crbug.com/626703 external/wpt/html/semantics/document-metadata/the-link-element/stylesheet-not-removed-until-next-stylesheet-loads.html [ Timeout ] crbug.com/626703 external/wpt/svg/interact/manual/event-attribute-001-manual.svg [ Skip ] -crbug.com/626703 [ Retina ] virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/async_005.htm [ Timeout ] crbug.com/626703 external/wpt/css/css-values/vh-support-atviewport.html [ Failure ] crbug.com/626703 external/wpt/css/CSS2/text/white-space-nowrap-attribute-001.xht [ Failure ] crbug.com/626703 external/wpt/css/css-text/white-space/white-space-intrinsic-size-004.html [ Failure ] @@ -3233,37 +2981,17 @@ crbug.com/626703 external/wpt/css/css-text/white-space/text-space-trim-trim-inner-001.xht [ Failure ] crbug.com/626703 external/wpt/svg/painting/marker-006.svg [ Failure ] crbug.com/626703 external/wpt/svg/painting/marker-005.svg [ Failure ] -crbug.com/626703 [ Mac10.13 ] external/wpt/preload/dynamic-adding-preload-imagesrcset.html [ Timeout ] crbug.com/906369 external/wpt/css/css-text/text-transform/text-transform-capitalize-033.html [ Failure ] crbug.com/626703 virtual/streams-native/external/wpt/fetch/content-type/response.window.html [ Timeout ] crbug.com/626703 [ Mac10.10 ] external/wpt/mimesniff/mime-types/parsing.any.worker.html [ Failure Timeout ] crbug.com/626703 [ Mac10.11 ] external/wpt/mimesniff/mime-types/parsing.any.worker.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.10 ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] crbug.com/626703 [ Win ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.11 ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/html/semantics/embedded-content/media-elements/ready-states/autoplay-hidden.optional.html [ Failure Timeout ] crbug.com/626703 external/wpt/fetch/content-type/response.window.html [ Timeout ] crbug.com/626703 virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-manual-module.html [ Timeout ] crbug.com/626703 virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-manual-classic.html [ Timeout ] crbug.com/626703 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-manual-classic.html [ Timeout ] crbug.com/626703 external/wpt/html/semantics/scripting-1/the-script-element/module/dynamic-import/no-active-script-manual-module.html [ Timeout ] crbug.com/626703 external/wpt/html/webappapis/user-prompts/newline-normalization-manual.html [ Skip ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/browsers/browsing-the-web/read-media/pageload-video.html [ Crash ] -crbug.com/626703 [ Mac10.13 ] external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy.https.sub.html [ Crash ] -crbug.com/626703 [ Mac10.13 ] external/wpt/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Crash ] -crbug.com/626703 [ Retina ] virtual/unified-autoplay/external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Crash ] -crbug.com/626703 [ Mac10.13 ] external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/feature-policy/picture-in-picture-allowed-by-feature-policy-attribute.https.sub.html [ Crash ] -crbug.com/626703 [ Mac10.13 ] virtual/unified-autoplay/external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Crash ] -crbug.com/626703 [ Retina ] virtual/unified-autoplay/external/wpt/feature-policy/picture-in-picture-default-feature-policy.https.sub.html [ Crash ] -crbug.com/626703 [ Mac10.13 ] external/wpt/media-source/mediasource-detach.html [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/media-source/mediasource-detach.html [ Crash ] crbug.com/626703 [ Mac ] external/wpt/infrastructure/testdriver/actions/pause.html [ Pass Timeout ] crbug.com/626703 external/wpt/infrastructure/testdriver/actions/eventOrder.html [ Timeout ] crbug.com/626703 external/wpt/css/css-text/writing-system/writing-system-segment-break-001.html [ Failure ] @@ -3437,11 +3165,8 @@ crbug.com/432153 external/wpt/css/css-masking/mask-image/mask-image-url-image-hash.html [ Failure ] crbug.com/626703 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow.html [ Failure ] crbug.com/626703 external/wpt/css/CSS2/floats/float-nowrap-9.html [ Failure ] -crbug.com/626703 virtual/layout_ng/external/wpt/css/CSS2/floats/float-nowrap-8.html [ Failure ] crbug.com/626703 external/wpt/css/CSS2/floats/float-nowrap-3.html [ Failure ] crbug.com/626703 external/wpt/css/CSS2/floats/float-nowrap-8.html [ Failure ] -crbug.com/626703 virtual/layout_ng/external/wpt/css/CSS2/floats/float-nowrap-7.html [ Failure ] -crbug.com/626703 virtual/layout_ng/external/wpt/css/CSS2/floats/float-nowrap-9.html [ Failure ] crbug.com/626703 external/wpt/css/CSS2/floats/float-nowrap-7.html [ Failure ] crbug.com/626703 [ Mac ] external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html [ Failure ] crbug.com/626703 external/wpt/css/selectors/old-tests/css3-modsel-16.xml [ Skip ] @@ -3530,8 +3255,6 @@ crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-column-row-gap-002.html [ Failure ] crbug.com/626703 external/wpt/fetch/api/request/request-keepalive-quota.html?include=slow-2 [ Timeout ] crbug.com/626703 virtual/streams-native/external/wpt/fetch/api/request/request-keepalive-quota.html?include=slow-2 [ Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/preload/link-header-preload.html [ Timeout ] -crbug.com/626703 [ Win7 ] external/wpt/preload/onerror-event.html [ Timeout ] crbug.com/626703 external/wpt/svg/painting/reftests/paint-context-001.svg [ Failure ] crbug.com/626703 external/wpt/svg/painting/reftests/paint-context-002.svg [ Failure ] crbug.com/626703 external/wpt/css/css-scoping/shadow-directionality-002.tentative.html [ Failure ] @@ -3547,7 +3270,6 @@ crbug.com/626703 external/wpt/css/css-transforms/transform-box/view-box-mutation.html [ Failure ] crbug.com/626703 external/wpt/fetch/security/redirect-to-url-with-credentials.https.html [ Timeout ] crbug.com/626703 virtual/streams-native/external/wpt/fetch/security/redirect-to-url-with-credentials.https.html [ Timeout ] -crbug.com/626703 [ Mac10.12 ] external/wpt/domxpath/xml_xpath_runner.html [ Timeout ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-024.html [ Failure ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-ellipse-048.html [ Failure ] crbug.com/626703 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-026.html [ Failure ] @@ -3636,9 +3358,7 @@ crbug.com/626703 external/wpt/fetch/http-cache/basic-auth-cache-test.html [ Timeout ] crbug.com/626703 virtual/streams-native/external/wpt/fetch/http-cache/basic-auth-cache-test.html [ Timeout ] crbug.com/626703 external/wpt/css/css-fonts/font-feature-settings-descriptor-01.html [ Failure ] -crbug.com/626703 [ Linux ] external/wpt/fetch/api/redirect/redirect-count.any.worker.html [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/fetch/api/redirect/redirect-count.any.worker.html [ Timeout ] -crbug.com/626703 [ Linux ] external/wpt/fetch/api/redirect/redirect-count.any.html [ Timeout ] crbug.com/626703 [ Win10 ] external/wpt/fetch/api/redirect/redirect-count.any.html [ Timeout ] crbug.com/626703 external/wpt/css/cssom-view/scroll-behavior-smooth.html [ Timeout ] @@ -3768,8 +3488,6 @@ crbug.com/626703 external/wpt/css/css-writing-modes/available-size-016.html [ Failure ] crbug.com/626703 external/wpt/css/css-writing-modes/available-size-015.html [ Failure ] crbug.com/626703 external/wpt/css/css-writing-modes/available-size-017.html [ Failure ] -crbug.com/626703 [ Mac10.11 ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-active-cue.html [ Crash ] -crbug.com/626703 [ Retina ] external/wpt/html/semantics/embedded-content/media-elements/track/track-element/track-remove-active-cue.html [ Crash ] crbug.com/626703 [ Linux ] external/wpt/css/css-ui/text-overflow-028.html [ Failure ] crbug.com/626703 [ Win ] external/wpt/css/css-ui/text-overflow-028.html [ Failure ] crbug.com/626703 external/wpt/css/css-writing-modes/astral-bidi/adlam-anti-ref.html [ Failure Pass ] @@ -4308,7 +4026,6 @@ crbug.com/595993 virtual/omt-worker-fetch/external/wpt/service-workers/service-worker/fetch-header-visibility.https.html [ Failure ] crbug.com/619427 [ Mac ] fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ] -crbug.com/619427 [ Linux ] fast/overflow/overflow-height-float-not-removed-crash3.html [ Pass Failure ] # [css-ui] Imported tests from W3C suite. crbug.com/669473 external/wpt/css/css-ui/box-sizing-014.html [ Failure ] @@ -4407,10 +4124,6 @@ crbug.com/678346 [ Debug ] fast/dom/shadow/selections-in-shadow.html [ Pass Timeout ] crbug.com/678346 [ Mac Debug ] storage/indexeddb/index-cursor.html [ Pass Timeout ] crbug.com/678346 [ Win7 Debug ] storage/indexeddb/index-cursor.html [ Pass Timeout ] -crbug.com/810254 [ Win7 ] storage/indexeddb/observer-frame.html [ Pass Timeout ] -crbug.com/810254 [ Win7 ] storage/indexeddb/observer-workers.html [ Pass Timeout ] - -crbug.com/678346 [ Win7 Debug ] storage/indexeddb/mozilla/test_objectStore_openKeyCursor.html [ Pass Timeout ] crbug.com/678493 http/tests/permissions/chromium/test-request-window.html [ Timeout Pass ] crbug.com/678499 http/tests/security/contentSecurityPolicy/require-sri-for/require-sri-for-script-preload-allowed.php [ Failure Pass ] @@ -4477,9 +4190,6 @@ # Sheriff failures 2017-02-21 crbug.com/73609 http/tests/media/video-play-stall.html [ Pass Timeout ] -# Sheriff failures 2017-02-27 -crbug.com/696407 [ Linux ] external/wpt/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html [ Failure Pass ] - # Sheriff failures 2017-03-10 crbug.com/741210 [ Mac ] inspector-protocol/emulation/device-emulation-restore.js [ Failure ] @@ -4574,14 +4284,9 @@ crbug.com/745887 [ Mac ] fast/frames/sandboxed-iframe-plugins.html [ Failure Pass ] crbug.com/745887 [ Win ] fast/frames/sandboxed-iframe-plugins.html [ Failure Pass ] -crbug.com/626703 [ Win7 ] external/wpt/domxpath/xml_xpath_runner.html [ Timeout Pass ] - crbug.com/746128 [ Win7 Debug ] media/controls/video-enter-exit-fullscreen-without-hovering-doesnt-show-controls.html [ Failure ] crbug.com/746128 [ Mac ] media/controls/video-enter-exit-fullscreen-without-hovering-doesnt-show-controls.html [ Failure Pass ] -# Sheriff failures 2017-08-04 -crbug.com/626703 [ Win7 Release ] external/wpt/html/semantics/tabular-data/processing-model-1/span-limits.html [ Timeout ] - crbug.com/731018 [ Mac ] sensor/accelerometer.html [ Failure Pass Crash ] crbug.com/731018 [ Mac ] sensor/ambient-light-sensor.html [ Failure Pass Crash ] crbug.com/731018 [ Mac ] sensor/gyroscope.html [ Failure Pass Crash ] @@ -4691,8 +4396,6 @@ # Tests occasionaly timing out (flaky) on WebKit Win7 dbg builder crbug.com/757955 [ Win7 Debug ] http/tests/devtools/sources/debugger-pause/pause-on-elements-panel.js [ Pass Timeout ] -crbug.com/757955 [ Win7 Debug ] storage/indexeddb/mozilla/cursors.html [ Pass Timeout ] -crbug.com/757955 [ Win7 Debug ] storage/indexeddb/objectstore-cursor.html [ Pass Timeout ] crbug.com/757955 http/tests/devtools/tracing/timeline-paint/layer-tree.js [ Pass Failure Timeout ] # This test has a fixed number of time which can depend on performance. @@ -4729,10 +4432,6 @@ # Previous/NextWordPosition crossing editing boundaries. crbug.com/900060 editing/selection/mixed-editability-8.html [ Failure ] -# Sheriff failures 2017-09-11 -crbug.com/763975 [ Mac Debug ] webaudio/internals/cycle-connection-gc.html [ Pass Failure ] -crbug.com/763975 [ Linux Debug ] webaudio/internals/cycle-connection-gc.html [ Pass Failure ] - # Sheriff failure 2017-09-18 crbug.com/766404 [ Mac ] plugins/keyboard-events.html [ Pass Failure ] @@ -4740,10 +4439,6 @@ # This was previously skipped on Windows in the section for crbug.com/757165 crbug.com/775957 virtual/gpu/fast/canvas/canvas-incremental-repaint.html [ Skip ] -# Sheriff failures 2017-09-20 -# Fails reliably on last 3 builds of this bot. -crbug.com/767091 [ Mac10.12 ] http/tests/security/link-crossorigin-preload-use-credentials.html [ Failure ] - # Sheriff failures 2017-09-21 crbug.com/767469 http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ] crbug.com/767469 virtual/stable/http/tests/navigation/start-load-during-provisional-loader-detach.html [ Pass Failure ] @@ -4764,12 +4459,10 @@ # Text rendering on Win7 failing image diffs, flakily. crbug.com/773122 [ Win7 ] fast/text/international/unicode-bidi-plaintext-in-textarea.html [ Failure Pass ] crbug.com/773122 [ Win7 ] fast/text/whitespace/022.html [ Failure Pass ] -crbug.com/773122 [ Win7 ] fast/text/word-break.html [ Failure Pass ] # Sheriff failures 2017-10-13 crbug.com/774463 [ Win7 Debug ] fast/events/autoscroll-should-not-stop-on-keypress.html [ Failure Pass ] crbug.com/774463 [ Win7 Debug ] virtual/mouseevent_fractional/fast/events/autoscroll-should-not-stop-on-keypress.html [ Failure Pass ] -crbug.com/774688 [ Mac ] fast/spatial-navigation/snav-container-white-space.html [ Pass Failure ] # Sheriff failures 2017-10-23 crbug.com/772411 http/tests/media/autoplay-crossorigin.html [ Timeout Failure Pass ] @@ -4818,10 +4511,6 @@ crbug.com/789478 virtual/prefer_compositing_to_lcd_text/scrollbars/custom-scrollbar-adjust-on-inactive-pseudo.html [ Pass Failure ] crbug.com/786641 virtual/gpu/fast/canvas/OffscreenCanvas-2d-imageSmoothing.html [ Pass Failure Timeout ] -# Sheriff failures 2017-11-30 -crbug.com/789921 [ Win7 ] media/video-controls-overflow-menu-last-button-visible.html [ Pass Failure ] -crbug.com/789921 [ Mac ] media/video-controls-overflow-menu-last-button-visible.html [ Pass Failure ] - # Sheriff failures 2017-12-04 crbug.com/667560 http/tests/devtools/elements/styles-4/inline-style-sourcemap.js [ Pass Failure ] @@ -4858,9 +4547,7 @@ # Sheriff failures 2018-01-02 crbug.com/798592 [ Win7 ] http/tests/devtools/tracing/timeline-style/timeline-recalculate-styles.js [ Pass Failure ] -crbug.com/798592 [ Mac ] http/tests/devtools/tracing/timeline-style/timeline-recalculate-styles.js [ Pass Failure ] crbug.com/798592 [ Win7 ] virtual/threaded/http/tests/devtools/tracing/timeline-style/timeline-recalculate-styles.js [ Pass Failure ] -crbug.com/798592 [ Mac ] virtual/threaded/http/tests/devtools/tracing/timeline-style/timeline-recalculate-styles.js [ Pass Failure ] # Sheriff failures 2018-01-25 # Flaking on Linux Tests, WebKit Linux Trusty (also ASAN, Leak) @@ -4870,9 +4557,6 @@ # Sheriff failures 2018-02-05 crbug.com/809152 netinfo/estimate-multiple-frames.html [ Pass Failure ] -# Sheriff failures 2018-02-07 -crbug.com/810009 [ Linux ] paint/invalidation/image/canvas-composite-repaint-by-all-imagesource.html [ Pass Timeout ] - # Sheriff failures 2018-02-20 crbug.com/789921 media/controls/repaint-on-resize.html [ Failure Pass ] @@ -4923,7 +4607,6 @@ # Sheriff 2018-03-02 crbug.com/818076 http/tests/devtools/oopif/oopif-elements-navigate-in.js [ Failure Pass ] -crbug.com/818154 [ Linux Debug ] virtual/gpu-rasterization/images/gif-loop-count.html [ Failure Pass ] # Sheriff 2018-03-05 crbug.com/818650 [ Linux ] fast/speech/scripted/speechrecognition-restart-onend.html [ Crash Pass ] @@ -4989,22 +4672,13 @@ # Sheriff 2018-04-11 crbug.com/831796 fast/events/autoscroll-in-textfield.html [ Failure Pass ] -crbug.com/831685 [ Linux ] external/wpt/2dcontext/compositing/2d.composite.canvas.lighter.html [ Pass Timeout ] crbug.com/831673 http/tests/devtools/reveal-objects.js [ Pass Timeout ] crbug.com/831496 virtual/gpu/fast/canvas/fillrect_gradient.html [ Pass Timeout ] -crbug.com/831482 [ Linux ] virtual/gpu-rasterization/images/cross-fade-background-size.html [ Pass Timeout ] -crbug.com/831249 [ Linux ] virtual/gpu/fast/canvas/canvas-filter-svg-inline.html [ Pass Timeout ] crbug.com/829952 fast/webgl/texImage-imageBitmap-from-image-resize.html [ Pass Timeout ] -crbug.com/829938 [ Linux ] css3/filters/blur-filter-page-scroll.html [ Pass Timeout ] -crbug.com/818426 [ Linux ] virtual/gpu/fast/canvas/canvas-lost-gpu-context.html [ Pass Timeout ] -crbug.com/800745 [ Linux ] virtual/gpu/fast/canvas/canvas-composite-video.html [ Pass Timeout ] crbug.com/832274 [ Linux ] fast/forms/search/search-appearance-basic.html [ Pass Failure ] crbug.com/832274 [ Win ] fast/forms/search/search-appearance-basic.html [ Pass Failure ] -# Sheriff 2018-04-12 -crbug.com/831993 [ Linux ] virtual/gpu-rasterization/images/cross-fade-overflow-position.html [ Pass Timeout ] - # Sheriff 2018-04-13 crbug.com/833655 [ Linux ] media/controls/closed-captions-dynamic-update.html [ Skip ] crbug.com/833658 [ Linux ] media/video-controls-focus-movement-on-hide.html [ Pass Failure ] @@ -5030,7 +4704,6 @@ # Merged failing devtools/editor tests. crbug.com/749738 http/tests/devtools/editor/text-editor-word-jumps.js [ Timeout Pass ] crbug.com/846997 http/tests/devtools/editor/text-editor-ctrl-d-1.js [ Timeout Pass ] -crbug.com/849284 [ Mac ] http/tests/devtools/editor/text-editor-ctrl-d-2.js [ Timeout Pass ] crbug.com/846982 http/tests/devtools/editor/text-editor-formatter.js [ Timeout Pass ] crbug.com/846981 fast/webgl/texImage-imageBitmap-from-imageData-resize.html [ Pass Timeout ] ### See crbug.com/891427 comment near the top of this file: @@ -5079,8 +4752,6 @@ crbug.com/853360 [ Mac ] fast/forms/calendar-picker/calendar-picker-appearance-required-ar.html [ Failure ] crbug.com/853360 [ Mac ] fast/forms/calendar-picker/month-picker-appearance-step.html [ Failure ] crbug.com/853360 [ Mac ] fast/forms/calendar-picker/week-picker-appearance.html [ Failure ] -crbug.com/853360 [ Mac10.13 ] http/tests/eventsource/workers/eventsource-cors-no-server.html [ Failure ] -crbug.com/853360 [ Mac ] http/tests/media/controls/toggle-class-with-state-source.html [ Pass Timeout ] crbug.com/853360 [ Mac ] http/tests/misc/slow-loading-image-in-pattern.html [ Pass Timeout Failure ] crbug.com/853360 [ Mac ] paint/invalidation/media-audio-no-spurious-repaints.html [ Failure ] crbug.com/853360 [ Mac ] tables/mozilla/bugs/bug30692.html [ Failure ] @@ -5101,10 +4772,6 @@ # they can be run via virtual/origin-policy instead. crbug.com/751996 external/wpt/origin-policy [ Skip ] -# Sheriff 2018-06-18 -crbug.com/853852 [ Win7 ] virtual/threaded/external/wpt/feature-policy/experimental-features/vertical-scroll-wheel-block-manual.tentative.html [ Pass Timeout ] -crbug.com/853852 [ Linux ] virtual/threaded/external/wpt/feature-policy/experimental-features/vertical-scroll-wheel-block-manual.tentative.html [ Pass Timeout ] - crbug.com/854538 [ Win7 ] http/tests/security/contentSecurityPolicy/1.1/form-action-src-default-ignored-with-redirect.html [ Skip ] # Sheriff 2018-06-21 @@ -5114,9 +4781,6 @@ # Sheriff 2018-06-25 crbug.com/855816 [ Win ] virtual/stable/http/tests/navigation/rename-subframe-goback.html [ Pass Timeout ] -# Sheriff 2018-06-29 -crbug.com/859169 [ Linux Debug ] http/tests/devtools/layers/layer-scroll-rects-get.js [ Failure Pass ] - # User Activation crbug.com/736415 external/wpt/html/user-activation/activation-api-iframe.tenative.html [ Failure ] @@ -5127,7 +4791,6 @@ # Other timeouts crbug.com/818324 [ Linux ] external/wpt/content-security-policy/embedded-enforcement/required_csp-header.html [ Timeout Pass ] crbug.com/818324 [ Mac ] external/wpt/content-security-policy/embedded-enforcement/required_csp-header.html [ Timeout Pass ] -crbug.com/818324 [ Win7 ] external/wpt/content-security-policy/embedded-enforcement/required_csp-header.html [ Timeout Pass ] # S13N Sheriff 2018-7-11 crbug.com/862643 http/tests/serviceworker/navigation_preload/use-counter.html [ Failure Pass ] @@ -5141,23 +4804,7 @@ # Sheriff 2018-07-18 crbug.com/864994 [ Mac ] external/wpt/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc_5601.html [ Timeout Failure Pass ] -crbug.com/865432 [ Linux ] external/wpt/workers/modules/dedicated-worker-import-blob-url.any.worker.html [ Timeout Pass ] -crbug.com/865432 [ Linux ] virtual/omt-worker-fetch/external/wpt/workers/modules/dedicated-worker-import-blob-url.any.worker.html [ Timeout Pass ] - -crbug.com/867532 [ Linux ] external/wpt/workers/modules/dedicated-worker-import-data-url.any.worker.html [ Timeout Pass ] -crbug.com/867532 [ Linux ] external/wpt/workers/modules/dedicated-worker-import.any.worker.html [ Timeout Pass ] -crbug.com/867532 [ Linux ] virtual/omt-worker-fetch/external/wpt/workers/modules/dedicated-worker-import-data-url.any.worker.html [ Timeout Pass ] -crbug.com/867532 [ Linux ] virtual/omt-worker-fetch/external/wpt/workers/modules/dedicated-worker-import.any.worker.html [ Timeout Pass ] - # Sheriff 2018-07-26 -crbug.com/867376 [ Mac ] css3/filters/filter-repaint-composited-fallback-crash.html [ Timeout Pass ] -crbug.com/867376 [ Linux ] css3/filters/filter-repaint-composited-fallback-crash.html [ Timeout Pass ] -crbug.com/867376 [ Mac ] external/wpt/encoding/textdecoder-fatal-single-byte.any.html [ Timeout Pass ] -crbug.com/867376 [ Mac ] http/tests/devtools/elements/elements-inspect-iframe-from-different-domain.js [ Timeout Pass ] -crbug.com/867376 [ Mac ] http/tests/devtools/elements/css-variables/resolve-inherited-css-variables.js [ Timeout Pass ] -crbug.com/867376 [ Linux ] virtual/gpu/fast/canvas/canvas-blending-image-over-color.html [ Timeout Pass ] -crbug.com/867376 [ Linux ] virtual/gpu/fast/canvas/canvas-blending-image-over-image.html [ Timeout Pass ] -crbug.com/867376 [ Linux ] virtual/gpu-rasterization/images/color-profile-mask-image-svg.html [ Timeout Pass ] crbug.com/867982 [ Debug ] external/wpt/requestidlecallback/basic.html [ Timeout Pass ] crbug.com/882756 [ Debug ] external/wpt/requestidlecallback/cancel-invoked.html [ Timeout Pass ] @@ -5276,7 +4923,6 @@ crbug.com/824539 [ Android ] tables/mozilla_expected_failures/bugs/bug1055-2.html [ Failure Timeout ] crbug.com/824539 [ Android ] tables/mozilla_expected_failures/bugs/bug2479-5.html [ Failure Timeout ] crbug.com/824539 [ Android ] transforms/transformed-caret.html [ Failure Timeout ] -crbug.com/824539 [ Android ] virtual/layout_ng/fast/block/margin-collapse/019.html [ Crash Failure Timeout ] # Sheriff 2018-07-30 crbug.com/866166 virtual/gpu-rasterization/images/color-profile-image-filter-all.html [ Pass Timeout ] @@ -5290,22 +4936,12 @@ # Sheriff 2018-08-01 crbug.com/869773 http/tests/misc/window-dot-stop.html [ Pass Failure ] -crbug.com/862806 [ Linux ] css3/filters/effect-drop-shadow-hw.html [ Pass Timeout ] - -# Sheriff 2018-08-08 -crbug.com/871105 [ Linux ] svg/dom/remove-use-target-element-indirectly.html [ Pass Crash ] -crbug.com/872025 [ Mac ] fast/css-grid-layout/crash-large-positions.html [ Pass Timeout ] -crbug.com/872025 [ Linux ] fast/css-grid-layout/crash-large-positions.html [ Pass Timeout ] - -# Only passes on bots with GPUs. -crbug.com/871445 [ Mac ] http/tests/media/video-load-metadata-decode-error.html [ Timeout ] crbug.com/873873 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Timeout Pass ] crbug.com/873873 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html [ Timeout Pass ] crbug.com/875884 [ Linux ] lifecycle/background-change-lifecycle-count.html [ Pass Failure ] crbug.com/875884 [ Win ] lifecycle/background-change-lifecycle-count.html [ Pass Failure ] -crbug.com/875884 [ Linux ] virtual/threaded/lifecycle/background-change-lifecycle-count.html [ Pass Failure ] crbug.com/875884 [ Win ] virtual/threaded/lifecycle/background-change-lifecycle-count.html [ Pass Failure ] # Sheriff 2018-08-16 @@ -5362,9 +4998,6 @@ # Does not set correct realm as scope in current implementation crbug.com/872138 external/wpt/client-hints/accept_ch.tentative.https.html [ Timeout Pass ] -# Flaky -crbug.com/878315 [ Mac ] virtual/threaded/fast/scroll-behavior/overscroll-behavior.html [ Pass Failure ] - crbug.com/898186 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-intrinsic-ratio-003v.html [ Pass Failure ] # Sheriff 2018-09-10 @@ -5391,7 +5024,6 @@ # Sheriff 2018-09-19 crbug.com/662010 [ Win7 ] http/tests/csspaint/invalidation-background-image.html [ Skip ] -crbug.com/886566 [ Linux ] http/tests/csspaint/invalidation-background-image.html [ Pass Timeout ] crbug.com/886566 [ Win10 ] http/tests/csspaint/invalidation-background-image.html [ Pass Timeout ] crbug.com/886566 [ Mac ] http/tests/csspaint/invalidation-background-image.html [ Pass Timeout ] crbug.com/886566 [ Android ] http/tests/csspaint/invalidation-background-image.html [ Pass Timeout ] @@ -5403,11 +5035,8 @@ # Sheriff 2018-10-03 crbug.com/891530 [ Linux ] virtual/android/rootscroller/remove-rootscroller-crash.html [ Pass Timeout ] -crbug.com/891510 [ Linux ] fast/dom/inline-event-attributes-release.html [ Failure Pass ] -crbug.com/891510 [ Win7 ] fast/dom/inline-event-attributes-release.html [ Failure Pass ] # Sheriff 2018-10-09 -crbug.com/893869 [ Linux ] css3/masking/mask-repeat-space-padding.html [ Failure Pass ] crbug.com/893869 [ Mac ] css3/masking/mask-repeat-space-padding.html [ Failure Pass ] # Sheriff 2018-10-12 @@ -5416,15 +5045,12 @@ # Sheriff 2018-10-15 crbug.com/895257 [ Mac ] external/wpt/css/css-fonts/variations/at-font-face-font-matching.html [ Failure Pass ] -crbug.com/891155 [ Linux ] fast/events/middleClickAutoscroll-event-fired.html [ Failure Pass ] -crbug.com/891155 [ Linux ] fast/events/middleClickAutoscroll-drag.html [ Failure Pass ] # run_web_tests.py crashes content_shell when <link href="about:blank"> is present crbug.com/895777 external/wpt/css/css-transforms/text-perspective-001.html [ Pass Crash ] crbug.com/895777 external/wpt/infrastructure/assumptions/blank.html [ Failure Crash ] #Sheriff 2018-10-23 -crbug.com/898050 [ Mac ] fast/workers/taskqueue/basic.html [ Pass Timeout ] crbug.com/898050 [ Win ] fast/workers/taskqueue/basic.html [ Pass Timeout ] crbug.com/898378 [ Mac10.13 ] fast/scroll-behavior/smooth-scroll/keyboard-scroll.html [ Timeout ] @@ -5439,9 +5065,7 @@ # Sheriff 2018-10-29 -crbug.com/899710 [ Linux ] virtual/threaded/http/tests/devtools/tracing/timeline-paint/timeline-paint-with-layout-invalidations.js [ Failure Pass Timeout ] crbug.com/899710 [ Win ] virtual/threaded/http/tests/devtools/tracing/timeline-paint/timeline-paint-with-layout-invalidations.js [ Failure Pass Timeout ] -crbug.com/766357 [ Mac ] virtual/threaded/fast/scroll-behavior/wheel-and-touch-scroll-use-count.html [ Failure Pass ] crbug.com/766357 [ Win ] virtual/threaded/fast/scroll-behavior/wheel-and-touch-scroll-use-count.html [ Failure Pass ] # Sheriff 2018-10-30 @@ -5450,11 +5074,6 @@ crbug.com/899222 [ Linux ] virtual/scroll_customization/fast/events/touch/gesture/gesture-scrollbar-touchscreen-fling.html [ Failure Pass ] crbug.com/899222 [ Win ] virtual/scroll_customization/fast/events/touch/gesture/gesture-scrollbar-touchscreen-fling.html [ Failure Pass ] -# Sheriff 2018-10-31 -crbug.com/900326 [ Win7 ] http/tests/devtools/network/preview-searchable.js [ Timeout Pass ] -crbug.com/900326 [ Mac10.12 ] http/tests/devtools/network/preview-searchable.js [ Timeout Pass ] -crbug.com/900730 [ Mac ] rootscroller/gesture-scroll-document-not-root-scroller.html [ Pass Failure Timeout Crash ] - # ecosystem-infra sheriff 2018-11-02, 2019-03-18 crbug.com/901271 external/wpt/dom/events/Event-dispatch-on-disabled-elements.html [ Pass Failure Timeout ] @@ -5469,7 +5088,6 @@ crbug.com/904389 http/tests/preload/delaying_onload_link_preload_after_discovery.html [ Failure Pass ] #Sheriff 2018-11-14 -crbug.com/905694 [ Linux ] virtual/threaded/fast/scroll-behavior/smooth-scroll/scroll-during-selection.html [ Failure Pass Crash ] crbug.com/905827 fast/dom/StyleSheet/stylesheet-move-between-documents-crash.html [ Skip ] # Flaky crash due to "bad mojo message". @@ -5498,7 +5116,6 @@ #Sheriff 2018-12-04 crbug.com/911515 [ Mac ] transforms/shadows.html [ Pass Failure ] -crbug.com/911634 [ Linux ] fast/events/touch/gesture/touch-gesture-scroll-input-field.html [ Pass Failure ] crbug.com/911782 [ Mac ] paint/invalidation/forms/submit-focus-by-mouse-then-keydown.html [ Pass Failure ] # Sheriff 2018-12-06 @@ -5516,7 +5133,6 @@ crbug.com/914782 [ Linux ] fast/scrolling/no-hover-during-scroll.html [ Pass Failure ] # Sheriff 2018-12-14 -crbug.com/914782 [ Linux ] virtual/fractional_scrolling/fast/scrolling/no-hover-during-scroll.html [ Pass Failure ] crbug.com/914782 [ Linux ] virtual/scroll_customization/fast/scrolling/no-hover-during-scroll.html [ Pass Failure ] crbug.com/913931 [ Mac10.11 ] external/wpt/css/css-layout-api/auto-block-size-absolute.https.html [ Pass Failure ] @@ -5674,9 +5290,6 @@ crbug.com/961015 [ Mac ] external/wpt/webxr/xrSession_requestAnimationFrame_callback_calls.https.html [ Timeout ] crbug.com/961015 [ Mac ] external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Timeout ] -# Sheriff 2019-01-25 -crbug.com/925325 [ Mac ] storage/indexeddb/index-population.html [ Pass Failure ] - # Sheriff 2019-02-01, 2019-02-19 # These are crashy on Win10, and seem to leave processes lying around, causing the swarming # task to hang. @@ -5686,11 +5299,7 @@ # Flay probably due to outstanding work for FeaturePolicyForSandbox. -# Sheriff 2019-02-06 -crbug.com/929435 [ Mac ] external/wpt/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html [ Pass Failure ] - # Sheriff 2019-02-12 -crbug.com/931349 [ Mac ] fast/events/popup-blocking-timers5.html [ Failure Timeout Pass ] crbug.com/931349 [ Mac ] media/video-played-ranges-1.html [ Failure Timeout Pass ] # Viz on Android causes issues due to synchronization of view / renderer sizes. @@ -5719,8 +5328,6 @@ # Sheriff 2019-02-22 crbug.com/934636 http/tests/security/cross-origin-indexeddb-allowed.html [ Crash Pass ] -crbug.com/934768 [ Mac ] http/tests/devtools/tracing/worker-events.js [ Failure Pass ] -crbug.com/934768 [ Mac ] virtual/threaded/http/tests/devtools/tracing/worker-events.js [ Failure Pass ] crbug.com/934818 virtual/threaded/http/tests/devtools/tracing/decode-resize.js [ Failure Pass ] # Sheriff 2019-02-25 @@ -5738,7 +5345,6 @@ # Sheriff 2019-02-27 crbug.com/936279 external/wpt/import-maps/fallback-disallowed.sub.tentative.html [ Failure Pass Timeout ] -crbug.com/936479 [ Mac10.13 ] http/tests/devtools/sources/debugger/async-callstack-fetch.js [ Failure Crash Pass ] crbug.com/936615 [ Win7 ] external/wpt/kv-storage/values.https.html [ Timeout Pass ] # Device Sensor Events were restricted to secure browsing contexts in M74, with a flag available until M76 to undo the change in case of an emergency. @@ -5760,14 +5366,9 @@ crbug.com/915352 [ Mac10.10 Mac10.11 ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-with-scroll-timeline-and-display-none.https.html [ Pass Failure ] # Sheriff 2019-03-01 -crbug.com/937170 [ Linux Win7 ] external/wpt/IndexedDB/interleaved-cursors-large.html [ Pass Timeout Crash ] -crbug.com/937312 [ Win7 ] external/wpt/background-fetch/fetch.https.window.html [ Pass Timeout ] crbug.com/864994 [ Linux Win7 ] external/wpt/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc_5601.html [ Timeout Failure Pass ] crbug.com/937416 http/tests/devtools/resource-tree/resource-tree-htmlimports.js [ Pass Failure ] crbug.com/937416 http/tests/devtools/resource-tree/resource-tree-frame-navigate.js [ Pass Failure ] -crbug.com/937546 [ Win7 ] http/tests/security/xss-DENIED-cross-origin-stack-overflow.html [ Pass Timeout ] -# Sheriff 2019-03-02 -crbug.com/937639 [ Linux Debug ] external/wpt/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html [ Pass Failure ] # Sheriff 2019-03-04 crbug.com/937811 [ Linux Release ] http/tests/devtools/elements/shadow/elements-panel-shadow-selection-on-refresh-2.js [ Pass Failure ] @@ -5777,15 +5378,11 @@ crbug.com/935689 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/symbols-function.html [ Failure Pass ] crbug.com/937858 [ Debug ] external/wpt/ambient-light/AmbientLightSensor.https.html [ Pass Failure ] crbug.com/937902 [ Linux Debug ] virtual/disable-blink-gen-property-trees/compositing/overflow/overflow-scroll-with-local-background.html [ Pass Failure ] -crbug.com/937991 [ Win7 Release ] http/tests/devtools/cache-storage/cache-data.js [ Pass Timeout ] # Sheriff 2019-03-05 crbug.com/938200 http/tests/devtools/network/network-blocked-reason.js [ Timeout Pass ] crbug.com/938780 [ Mac10.10 Mac10.11 ] virtual/threaded/external/wpt/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html [ Pass Failure ] -# Sheriff 2019-03-06 -crbug.com/938591 [ Linux ] fast/events/middleClickAutoscroll-nested-divs-forbidden.html [ Failure Pass ] - # Caused a revert of a good change. crbug.com/931533 media/video-played-collapse.html [ Pass Failure ] @@ -5852,7 +5449,6 @@ # Sheriff 2019-03-27 crbug.com/835943 [ Release ] http/tests/appcache/non-html.xhtml [ Crash Pass Failure Timeout ] -crbug.com/946323 [ Mac ] editing/caret/caret-painting-low-dpi.html [ Failure Pass ] # Sheriff 2019-03-28 crbug.com/946890 external/wpt/html/semantics/embedded-content/media-elements/location-of-the-media-resource/currentSrc.html [ Failure Pass Crash ] @@ -5860,12 +5456,10 @@ crbug.com/946719 http/tests/serviceworker/resolve-after-window-close.html [ Crash Pass ] crbug.com/946714 [ Release ] http/tests/devtools/elements/styles-4/styles-live-locations-leak.js [ Pass Timeout ] crbug.com/946699 [ Release ] http/tests/devtools/network/network-filter-service-worker.js [ Pass Timeout ] -crbug.com/946700 [ Win7 Release ] http/tests/devtools/coverage/decorations-after-script-formatter.js [ Pass Timeout ] crbug.com/946711 [ Release ] http/tests/devtools/editor/text-editor-search-switch-editor.js [ Crash Pass Timeout ] crbug.com/946712 [ Release ] http/tests/devtools/elements/styles-2/paste-property.js [ Crash Pass Timeout ] crbug.com/946713 [ Release ] http/tests/devtools/extensions/extensions-resources.js [ Crash Pass Timeout ] crbug.com/848799 [ Win7 ] http/tests/devtools/coverage/multiple-instances-merge.js [ Pass Timeout ] -crbug.com/942411 [ Win7 Linux ] http/tests/devtools/network/network-search.js [ Pass Timeout ] crbug.com/947383 inspector-protocol/css/reattach-after-editing-styles.js [ Pass Timeout ] ### external/wpt/fetch/sec-metadata/ @@ -5888,14 +5482,6 @@ crbug.com/949444 [ Mac10.13 Debug ] virtual/mouseevent_fractional/fast/events/sequential-focus-navigation-starting-point.html [ Pass Crash ] crbug.com/949445 [ Mac ] fast/forms/text/input-text-scroll-left-on-blur.html [ Failure ] -# Sheriff 2019-04-05 -crbug.com/ [ Win7 ] virtual/streams-native/http/tests/fetch/serviceworker/referrer-base-https-other-https.html [ Pass Timeout ] - -# Sheriff 2019-04-08 -crbug.com/946701 [ Win7 ] virtual/streams-native/http/tests/fetch/serviceworker-proxied/thorough/auth-base-https-other-https.html [ Pass Timeout ] -crbug.com/950222 [ Win7 ] virtual/streams-native/http/tests/fetch/serviceworker-proxied/thorough/auth.html [ Pass Timeout ] -crbug.com/947670 [ Win7 ] virtual/streams-native/http/tests/fetch/serviceworker-proxied/thorough/cors-preflight2-base-https-other-https.html [ Pass Timeout ] - # Sheriff 2019-04-09 crbug.com/946335 [ Linux Mac ] fast/filesystem/file-writer-abort-depth.html [ Pass Crash ] @@ -5905,7 +5491,6 @@ crbug.com/951638 [ Win7 ] virtual/mouseevent_fractional/fast/events/mouse-right-coords-in-zoom-and-scroll-right.html [ Pass Failure ] # Sheriff 2019-04-11 -crbug.com/951811 [ Mac10.13 ] external/wpt/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html [ Pass Timeout ] crbug.com/802029 [ Mac10.13 Debug ] fast/dom/shadow/focus-controller-recursion-crash.html [ Pass Timeout ] # Sheriff 2019-04-15 @@ -5971,3 +5556,6 @@ # Sheriff 2019-05-10 crbug.com/960623 [ Win ] http/tests/misc/resource-timing-sizes-multipart.html [ Pass Failure ] + +# This test might need to be removed. +crbug.com/954349 fast/forms/autofocus-in-sandbox-with-allow-scripts.html [ Timeout ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 04913032..61a053e 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -338,66 +338,6 @@ "args": ["--force-device-scale-factor=1.5"] }, { - "prefix": "layout_ng", - "base": "fast/block/basic", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "fast/block/margin-collapse", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "fast/block/float", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/linebox", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/normal-flow", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/abspos", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/positioning", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/floats", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "external/wpt/css/CSS2/floats-clear", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "overflow", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "fast/inline", - "args": ["--enable-blink-features=LayoutNG"] - }, - { - "prefix": "layout_ng", - "base": "fast/writing-mode", - "args": ["--enable-blink-features=LayoutNG"] - }, - { "prefix": "layout_ng_experimental", "base": "external/wpt/css/css-multicol", "args": ["--enable-blink-features=LayoutNGBlockFragmentation"]
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html index 88d5eed..9b1de227 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_sequence_at_implicit_release_on_drag.html
@@ -56,7 +56,7 @@ // Inject touch inputs. pointerDragInTarget("touch", target, 'right').then(function() { - return touchTapInTarget(button); + return clickInTarget("touch", button); }).then(function() { test_pointer_event.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js index 44dba45..9a491dd6 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_support.js
@@ -286,9 +286,10 @@ .send(); } -function touchTapInTarget(target) { +function clickInTarget(pointerType, target) { + var pointerId = pointerType + "Pointer1"; return new test_driver.Actions() - .addPointer("pointer1", "touch") + .addPointer(pointerId, pointerType) .pointerMove(0, 0, {origin: target}) .pointerDown() .pointerUp()
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html index ae2373c3..f05aadf 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html
@@ -115,7 +115,7 @@ touchScrollInTarget(scrollTarget, 'down').then(function() { return touchScrollInTarget(scrollTarget, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html index 81f0ea6..4f9e75d 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-none_touch.html
@@ -110,7 +110,7 @@ touchScrollInTarget(scrollTarget, 'down').then(function() { return touchScrollInTarget(scrollTarget, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html index 775708d4..62fc8c22 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html
@@ -110,7 +110,7 @@ touchScrollInTarget(scrollTarget, 'down').then(function() { return touchScrollInTarget(scrollTarget, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html index 592cfd6..704b41889 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch.html
@@ -115,7 +115,7 @@ touchScrollInTarget(scrollTarget, 'down').then(function() { return touchScrollInTarget(scrollTarget, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html index 45ea143..d525fe6 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html
@@ -110,7 +110,7 @@ touchScrollInTarget(scrollTarget, 'down').then(function() { return touchScrollInTarget(scrollTarget, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html index cc96024..5e963ab 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-none-css_touch.html
@@ -109,7 +109,7 @@ touchScrollInTarget(target0, 'down').then(function() { return touchScrollInTarget(target0, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html index a91f1f5..ebdc180 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-css_touch.html
@@ -104,7 +104,7 @@ touchScrollInTarget(target0, 'down').then(function() { return touchScrollInTarget(target0, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html index d056eb9..ef59c99 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch.html
@@ -109,7 +109,7 @@ touchScrollInTarget(target0, 'down').then(function() { return touchScrollInTarget(target0, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html index 98168755..b6444ed 100644 --- a/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html +++ b/third_party/blink/web_tests/external/wpt/pointerevents/pointerevent_touch-action-pan-y-css_touch.html
@@ -105,7 +105,7 @@ touchScrollInTarget(target0, 'down').then(function() { return touchScrollInTarget(target0, 'right'); }).then(function() { - return touchTapInTarget(btnComplete); + return clickInTarget("touch", btnComplete); }).then(function() { test_touchaction.step(function () { assert_true(clickIsReceived, "click should be received before the test finishes");
diff --git a/third_party/blink/web_tests/external/wpt/sms/constructor.tentative.https.any.js b/third_party/blink/web_tests/external/wpt/sms/constructor.tentative.https.any.js index 0c9a62c..321e5510 100644 --- a/third_party/blink/web_tests/external/wpt/sms/constructor.tentative.https.any.js +++ b/third_party/blink/web_tests/external/wpt/sms/constructor.tentative.https.any.js
@@ -56,5 +56,5 @@ }, 'constructor uses a default value for the timeout when none is passed'); promise_test(async t => { - new IdleDetector({timeout: undefined}); + new SMSReceiver({timeout: undefined}); }, 'constructor uses a default value for the timeout');
diff --git a/third_party/blink/web_tests/external/wpt/sms/resources/iframe.html b/third_party/blink/web_tests/external/wpt/sms/resources/iframe.html new file mode 100644 index 0000000..44410e8 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/sms/resources/iframe.html
@@ -0,0 +1,8 @@ +<script> +'use strict'; + +new SMSReceiver().start().catch(error => { + window.parent.postMessage({errorType: error.name}, '*'); +}); + +</script>
diff --git a/third_party/blink/web_tests/external/wpt/sms/sms-top-level-frame-only.https.html b/third_party/blink/web_tests/external/wpt/sms/sms-top-level-frame-only.https.html new file mode 100644 index 0000000..ba6374e85 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/sms/sms-top-level-frame-only.https.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<body> + +<script> +'use strict'; + +promise_test(async t => { + const messageWatcher = new EventWatcher(t, window, "message"); + var iframe = document.createElement("iframe"); + iframe.src = "resources/iframe.html" + document.body.appendChild(iframe); + + const message = await messageWatcher.wait_for("message"); + assert_equals(message.data.errorType, "NotAllowedError"); + +}, "Test SMSReceiver API disabled in iframes"); + +</script> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/sms/sms_receiver.idl b/third_party/blink/web_tests/external/wpt/sms/sms_receiver.idl index 8166c444..bc6fb1d 100644 --- a/third_party/blink/web_tests/external/wpt/sms/sms_receiver.idl +++ b/third_party/blink/web_tests/external/wpt/sms/sms_receiver.idl
@@ -1,7 +1,6 @@ [ SecureContext, - Exposed=(Window,DedicatedWorker), - RuntimeEnabled=SmsRetrieval] + Exposed=(Window,DedicatedWorker)] interface SMS { readonly attribute DOMString content; }; @@ -18,4 +17,4 @@ readonly attribute SMS sms; attribute EventHandler onchange; Promise<void> start(); -}; \ No newline at end of file +};
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-00-d-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-00-d-expected.png index 990a4d5..6ffe291 100644 --- a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-00-d-expected.png +++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-00-d-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-02-d-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-02-d-expected.png index 32072ed4..c6db0860 100644 --- a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-02-d-expected.png +++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-02-d-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-03-d-expected.png b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-03-d-expected.png index 597e527c..350af9f 100644 --- a/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-03-d-expected.png +++ b/third_party/blink/web_tests/flag-specific/enable-blink-features=LayoutNG/css2.1/t090501-c414-flt-ln-03-d-expected.png Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-basics.html b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-basics.html index 3cb85506..471820b 100644 --- a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-basics.html +++ b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-basics.html
@@ -36,6 +36,21 @@ }, "Verify that invalid domain error returned by mock is properly handled."); promise_test(t => { + mockAuthenticator.setAuthenticatorStatus( + blink.mojom.AuthenticatorStatus.ABORT_ERROR); + return promise_rejects(t, "AbortError", + navigator.credentials.create({publicKey : MAKE_CREDENTIAL_OPTIONS})); +}, "Verify that abort error returned by mock is properly handled."); + +promise_test(t => { + var authAbortController = new AbortController(); + var authAbortSignal = authAbortController.signal; + authAbortController.abort(); + return promise_rejects(t, "AbortError", + navigator.credentials.create({publicKey : MAKE_CREDENTIAL_OPTIONS, signal : authAbortSignal})); +}, "navigator.credentials.create() with abort signal"); + +promise_test(t => { var customMakeCredOptions = deepCopy(MAKE_CREDENTIAL_OPTIONS); delete customMakeCredOptions.challenge; return promise_rejects(t, new TypeError(),
diff --git a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-with-virtual-authenticator.html b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-with-virtual-authenticator.html index bd3c338..ace86c06 100644 --- a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-with-virtual-authenticator.html +++ b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-create-with-virtual-authenticator.html
@@ -50,6 +50,36 @@ navigator.credentials.create({ publicKey : customMakeCredOptions})); }, "navigator.credentials.create() with resident keys is disabled"); +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + return navigator.credentials.create({ publicKey : MAKE_CREDENTIAL_OPTIONS, signal : authAbortSignal}); +}, "navigator.credentials.create() with abort signal flag not set"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + authAbortController.abort(); + var promise = navigator.credentials.create({ publicKey : MAKE_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + return promise_rejects(t, "AbortError", promise); +}, "navigator.credentials.create() with abort signal flag set before sending request"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + var promise = navigator.credentials.create({ publicKey : MAKE_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + authAbortController.abort(); + return promise_rejects(t, "AbortError", promise); +}, "navigator.credentials.create() with abort signal flag is set after sending request"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + let promise = await navigator.credentials.create({ publicKey : MAKE_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + authAbortController.abort(); + return promise; +}, "navigator.credentials.create() with abort signal flag is set after promise resolved"); + promise_test(t => { return navigator.credentials.test.clearAuthenticators(); }, "Clean up testing environment.");
diff --git a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-basics.html b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-basics.html index 0c28153..29a85d3 100644 --- a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-basics.html +++ b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-basics.html
@@ -168,6 +168,12 @@ navigator.credentials.get({ publicKey : customGetCredentialOptions})); }, "Verify that empty allow credentials error returned by mock is properly handled."); +promise_test(t => { + mockAuthenticator.setAuthenticatorStatus( + blink.mojom.AuthenticatorStatus.ABORT_ERROR); + return promise_rejects(t, "AbortError", + navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS})); +}, "Verify that abort error returned by mock is properly handled."); promise_test(function(t) { var customGetCredentialOptions = deepCopy(GET_CREDENTIAL_OPTIONS); @@ -216,4 +222,12 @@ }); }, "navigator.credentials.get() with cableAuthentication extension"); +promise_test(t => { + var authAbortController = new AbortController(); + var authAbortSignal = authAbortController.signal; + authAbortController.abort() + return promise_rejects(t, "AbortError", + navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS, signal : authAbortSignal})); +}, "navigator.credentials.get() with abort signal."); + </script>
diff --git a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-with-virtual-authenticator.html b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-with-virtual-authenticator.html index 0a7b343..de227a6 100644 --- a/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-with-virtual-authenticator.html +++ b/third_party/blink/web_tests/http/tests/credentialmanager/credentialscontainer-get-with-virtual-authenticator.html
@@ -56,6 +56,36 @@ return navigator.credentials.get({publicKey: customGetCredentialOptions}).then(); }, "navigator.credentials.get() with missing transports in allowCredentials."); +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + return navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS, signal : authAbortSignal}); +}, "navigator.credentials.get() with abort signal flag not set"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + authAbortController.abort(); + var promise = navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + return promise_rejects(t, "AbortError", promise); +}, "navigator.credentials.get() with abort signal flag set before sending request"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + var promise = navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + authAbortController.abort(); + return promise_rejects(t, "AbortError", promise); +}, "navigator.credentials.get() with abort signal flag set after sending request"); + +promise_test(async t => { + authAbortController = new AbortController(); + authAbortSignal = authAbortController.signal; + let promise = await navigator.credentials.get({ publicKey : GET_CREDENTIAL_OPTIONS, signal : authAbortSignal}); + authAbortController.abort(); + return promise; +}, "navigator.credentials.get() with abort signal flag set after promise resolved"); + promise_test(t => { return navigator.credentials.test.clearAuthenticators(); }, "Clean up testing environment.");
diff --git a/third_party/blink/web_tests/http/tests/credentialmanager/resources/mock-navigator-credentials.js b/third_party/blink/web_tests/http/tests/credentialmanager/resources/mock-navigator-credentials.js index c546f1a..54c96068 100644 --- a/third_party/blink/web_tests/http/tests/credentialmanager/resources/mock-navigator-credentials.js +++ b/third_party/blink/web_tests/http/tests/credentialmanager/resources/mock-navigator-credentials.js
@@ -112,6 +112,8 @@ return false; } + async cancel() {} + // Resets state of mock Authenticator. reset() { this.status_ = blink.mojom.AuthenticatorStatus.UNKNOWN_ERROR;
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances-expected.txt b/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances-expected.txt new file mode 100644 index 0000000..f06c832 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances-expected.txt
@@ -0,0 +1,80 @@ +Tests that distance data produced for overlays are correct. + +inspected{ + "boxes": [ + [ + 0, + 0, + 800, + 600 + ], + [ + 0, + 0, + 800, + 600 + ], + [ + 0, + 5, + 800, + 590 + ], + [ + 5, + 5, + 250, + 250 + ], + [ + 300, + 5, + 10, + 10 + ], + [ + 5, + 300, + 10, + 10 + ], + [ + 0, + 0, + 800, + 600 + ] + ], + "content": [ + 30, + 30, + 230, + 30, + 230, + 230, + 30, + 230 + ], + "padding": [ + 15, + 15, + 245, + 15, + 245, + 245, + 15, + 245 + ], + "border": [ + 5, + 5, + 255, + 5, + 255, + 255, + 5, + 255 + ], + "style": "<style data>" +} +
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances.js b/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances.js new file mode 100644 index 0000000..59dbd30 --- /dev/null +++ b/third_party/blink/web_tests/http/tests/devtools/elements/distance/node-distances.js
@@ -0,0 +1,48 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(async function() { + TestRunner.addResult(`Tests that distance data produced for overlays are correct.\n`); + await TestRunner.loadModule('elements_test_runner'); + await TestRunner.showPanel('elements'); + await TestRunner.loadHTML(` + <style> + body { + margin: 0; + } + .inspected { + margin: 5px; + border: solid 10px aqua; + padding: 15px; + width: 200px; + height: 200px; + background-color: blue; + } + .right { + position: absolute; + top: 5px; + left: 300px; + width: 10px; + height: 10px; + background: coral; + } + .bottom { + position: absolute; + top: 300px; + left: 5px; + width: 10px; + height: 10px; + background: coral; + } + + </style> + <div id="inspected" class="inspected"></div> + <div class="right"></div> + <div class="bottom"></div> + `); + + ElementsTestRunner.dumpInspectorDistanceJSON('inspected', () => { + TestRunner.completeTest(); + }); +})();
diff --git a/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus-expected.html b/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus-expected.html index ce72c53..1615e6d 100644 --- a/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus-expected.html +++ b/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus-expected.html
@@ -17,6 +17,13 @@ testRunner.waitUntilDone(); } onload = function() { + if (window.eventSender) { + // Give the frame user gesture to make sure 'focus' API works. + const iframe = document.querySelector("iframe"); + window.eventSender.mouseMoveTo(iframe.offsetLeft + 10, iframe.offsetTop + 10); + window.eventSender.mouseDown(); + window.eventSender.mouseUp(); + } requestAnimationFrame(function() { if (window.testRunner) { testRunner.notifyDone();
diff --git a/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus.html b/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus.html index c5956d3..777c5b10 100644 --- a/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus.html +++ b/third_party/blink/web_tests/http/tests/navigation/anchor-frames-shifting-focus.html
@@ -14,10 +14,19 @@ <div style='width:10px;height:2000px;background:white;position:absolute'></div> <iframe src='http://127.0.0.1:8000/navigation/resources/focus-shifting-frame-with-anchor.html' sandbox='allow-scripts'></iframe> <script> + if (window.testRunner) { testRunner.waitUntilDone(); } + onload = function() { + if (window.eventSender) { + // Give the frame user gesture to make sure 'focus' API works. + const iframe = document.querySelector("iframe"); + window.eventSender.mouseMoveTo(iframe.offsetLeft + 10, iframe.offsetTop + 10); + window.eventSender.mouseDown(); + window.eventSender.mouseUp(); + } requestAnimationFrame(function() { if (window.testRunner) { testRunner.notifyDone();
diff --git a/third_party/blink/web_tests/http/tests/navigation/resources/focus-shifting-frame-with-anchor.html b/third_party/blink/web_tests/http/tests/navigation/resources/focus-shifting-frame-with-anchor.html index 1b194f6..538ade1 100644 --- a/third_party/blink/web_tests/http/tests/navigation/resources/focus-shifting-frame-with-anchor.html +++ b/third_party/blink/web_tests/http/tests/navigation/resources/focus-shifting-frame-with-anchor.html
@@ -3,7 +3,7 @@ <a id='dummy' href='dummy'>dummy</a> <div style='width:10px;height:2000px;background:white'></div> <script> -onload = function() { +window.onmousedown = function() { location.href = '#'; requestAnimationFrame(function() { document.getElementById('dummy').focus();
diff --git a/third_party/metrics_proto/ukm/source.proto b/third_party/metrics_proto/ukm/source.proto index 21f6ebc..100cb4b 100644 --- a/third_party/metrics_proto/ukm/source.proto +++ b/third_party/metrics_proto/ukm/source.proto
@@ -84,8 +84,12 @@ // Flag indicating if the metric was collected while inside a "custom tab". optional bool is_custom_tab = 7; - // Timestamp of navigation to this Source, as seen by the client. Time of - // events related to this Source will generally be relative to this timestamp. + // Relative time of navigation for this Source, as seen by the client, and is + // set for sources of type ukm::SourceIdType::NAVIGATION_ID. Time of events + // related to this Source will generally be relative to this timestamp. The + // recorded navigation time is in TimeTicks, which is the relative time since + // the origin. The origin is platform-specific but is guaranteed to be + // monotonically increase within each session. optional int64 navigation_time_msec = 3; // Unique identifier (for a given client_id/session_id) for the tab this
diff --git a/tools/binary_size/generate_official_build_report.py b/tools/binary_size/generate_official_build_report.py index 4fe245f..44649c40 100755 --- a/tools/binary_size/generate_official_build_report.py +++ b/tools/binary_size/generate_official_build_report.py
@@ -85,15 +85,19 @@ def _UploadReports(reports_json_path, base_url, *ndjson_paths): for path in ndjson_paths: dst = os.path.join(base_url, os.path.basename(path)) - subprocess.check_call(['gsutil.py', 'cp', '-a', 'public-read', path, dst]) + cmd = ['gsutil.py', 'cp', '-a', 'public-read', path, dst] + logging.warning(' '.join(cmd)) + subprocess.check_call(cmd) with open(reports_json_path, 'w') as f: _WriteReportsJson(f) - subprocess.check_call([ + cmd = [ 'gsutil.py', 'cp', '-a', 'public-read', reports_json_path, _REPORTS_JSON_GS_URL - ]) + ] + logging.warning(' '.join(cmd)) + subprocess.check_call(cmd) def main(): @@ -134,9 +138,10 @@ diff_report_path = os.path.join( tmp_dir, 'report_{}_{}.ndjson'.format(ref_version, args.version)) reports_json_path = os.path.join(tmp_dir, 'reports.json') - reports_base_url = os.path.join( - _REPORTS_GS_URL, args.arch, - os.path.splitext(os.path.basename(args.size_path))[0]) + report_basename = os.path.splitext(os.path.basename(args.size_path))[0] + # Maintain name through transition to bundles. + report_basename = report_basename.replace('.minimal.apks', '.apk') + reports_base_url = os.path.join(_REPORTS_GS_URL, args.arch, report_basename) _FetchSizeFileForVersion(args.gs_size_url, ref_version, args.gs_size_path, ref_size_path)
diff --git a/tools/gritsettings/resource_ids b/tools/gritsettings/resource_ids index 30f7e24..2db73252 100644 --- a/tools/gritsettings/resource_ids +++ b/tools/gritsettings/resource_ids
@@ -81,29 +81,36 @@ # START chrome/browser section. "chrome/browser/browser_resources.grd": { "includes": [11000], - "structures": [12000], + "structures": [11900], }, "chrome/browser/resources/chromeos/cellular_setup/cellular_setup_resources.grd": { - "structures": [12040], + "structures": [11940], }, "chrome/browser/resources/chromeos/multidevice_setup/multidevice_setup_resources.grd": { - "structures": [12045], + "structures": [11945], }, "chrome/browser/resources/component_extension_resources.grd": { - "includes": [12100], - "structures": [12350], + "includes": [12000], + "structures": [12250], }, - "chrome/browser/resources/invalidations_resources.grd": { - "includes": [12400], + "chrome/browser/resources/downloads/downloads_resources_vulcanized.grd": { + "includes": [12300], }, - "chrome/browser/resources/local_ntp/local_ntp_resources.grd": { - "includes": [12440], + "chrome/browser/resources/downloads/downloads_resources.grd": { + "includes": [12310], + "structures": [12320], }, "chrome/browser/resources/extensions/extensions_resources_vulcanized.grd": { - "includes": [12500], + "includes": [12400], }, "chrome/browser/resources/extensions/extensions_resources.grd": { - "structures": [12510], + "structures": [12410], + }, + "chrome/browser/resources/invalidations_resources.grd": { + "includes": [12500], + }, + "chrome/browser/resources/local_ntp/local_ntp_resources.grd": { + "includes": [12540], }, "chrome/browser/resources/net_internals/net_internals_resources.grd": { "includes": [12600],
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index dd85fc5..3e435ae 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -12380,6 +12380,7 @@ <enum name="DevToolsBackgroundService"> <int value="2" label="Background Fetch"/> <int value="3" label="Background Sync"/> + <int value="4" label="Push Messaging"/> </enum> <enum name="DevToolsPanel"> @@ -23202,6 +23203,9 @@ <int value="2888" label="MediaCapabilitiesDecodingInfoWithKeySystemConfig"/> <int value="2889" label="RevertInCustomIdent"/> <int value="2890" label="UnoptimizedImagePolicies"/> + <int value="2891" label="VTTCueParser"/> + <int value="2892" label="MediaElementTextTrackContainer"/> + <int value="2893" label="MediaElementTextTrackList"/> </enum> <enum name="FeaturePolicyFeature"> @@ -32953,6 +32957,7 @@ <int value="-1650769314" label="enable-webgl2-compute-context"/> <int value="-1649778035" label="disable-clear-browsing-data-counters"/> <int value="-1648216169" label="NewOmniboxAnswerTypes:disabled"/> + <int value="-1645071473" label="ChromeColors:disabled"/> <int value="-1638815914" label="enable-experimental-productivity-features"/> <int value="-1634878515" label="ChromeHomeModernLayout:enabled"/> <int value="-1634490190" @@ -34731,6 +34736,7 @@ <int value="1070164693" label="MidiManagerDynamicInstantiation:disabled"/> <int value="1070300488" label="disable-webgl"/> <int value="1070449228" label="ContextualSuggestionsCarousel:enabled"/> + <int value="1070840417" label="ChromeColors:enabled"/> <int value="1071520357" label="WebAuthenticationTouchId:enabled"/> <int value="1072010558" label="NTPModernLayout:disabled"/> <int value="1074359194" label="UseSuggestionsEvenIfFew:enabled"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index f96ef4df..697c1d28 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -81265,7 +81265,7 @@ </histogram> <histogram name="OfflinePages.OfflineUsage.NotOfflineResilient" - enum="OfflinePagesOfflineUsage" expires_after="2019-05-31"> + enum="OfflinePagesOfflineUsage" expires_after="2020-05-31"> <owner>carlosk@chromium.org</owner> <owner>dimich@chromium.org</owner> <summary> @@ -86372,6 +86372,22 @@ </summary> </histogram> +<histogram + name="PageLoad.InteractiveTiming.FirstInputDelay.SkipFilteringComparison" + units="ms" expires_after="2020-02-23"> + <owner>tdresser@chromium.org</owner> + <owner>speed-metrics-dev@chromium.org</owner> + <summary> + This metric will be used to compare first inputs during the + SkipTouchEventFilter experiment. + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. Recorded on first page interaction. See + https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + </summary> +</histogram> + <histogram name="PageLoad.InteractiveTiming.FirstInputDelay2" units="ms" expires_after="2020-01-23"> <obsolete> @@ -86407,6 +86423,21 @@ </summary> </histogram> +<histogram name="PageLoad.InteractiveTiming.FirstInputDelay4" units="ms" + expires_after="2020-02-23"> + <owner>tdresser@chromium.org</owner> + <owner>speed-metrics-dev@chromium.org</owner> + <summary> + This metric will replace PageLoad.InteractiveTiming.FirstInputDelay3 if the + SkipTouchEventFilter experiment launches. + + Measures First Input Delay, the duration between the hardware timestamp and + the start of event processing on the main thread for the first meaningful + input per navigation. Recorded on first page interaction. See + https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + </summary> +</histogram> + <histogram name="PageLoad.InteractiveTiming.FirstInputTimestamp" units="ms" expires_after="2019-01-23"> <obsolete> @@ -86422,6 +86453,21 @@ </summary> </histogram> +<histogram + name="PageLoad.InteractiveTiming.FirstInputTimestamp.SkipFilteringComparison" + units="ms" expires_after="2020-02-23"> + <owner>tdresser@chromium.org</owner> + <owner>speed-metrics-dev@chromium.org</owner> + <summary> + This metric will be used to compare first inputs during the + SkipTouchEventFilter experiment. + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. Recorded on first page interaction. + See https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + </summary> +</histogram> + <histogram name="PageLoad.InteractiveTiming.FirstInputTimestamp2" units="ms" expires_after="2020-01-23"> <obsolete> @@ -86449,6 +86495,20 @@ </summary> </histogram> +<histogram name="PageLoad.InteractiveTiming.FirstInputTimestamp4" units="ms" + expires_after="2020-02-23"> + <owner>tdresser@chromium.org</owner> + <owner>speed-metrics-dev@chromium.org</owner> + <summary> + This metric will replace PageLoad.InteractiveTiming.FirstInputTimestamp3 if + the SkipTouchEventFilter experiment launches. + + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. Recorded on first page interaction. + See https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls. + </summary> +</histogram> + <histogram name="PageLoad.InteractiveTiming.InputDelay" units="ms" expires_after="2019-01-23"> <obsolete> @@ -107917,8 +107977,22 @@ </summary> </histogram> -<histogram name="SBClientDownload.ExtractDmgFeaturesTime" units="ms" - expires_after="M77"> +<histogram name="SBClientDownload.ExtractDmgFeaturesTime" units="ms"> + <obsolete> + Deprecated in M76, replaced by + SBClientDownload.ExtractDmgFeaturesTimeMedium. + </obsolete> + <owner>drubery@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <owner>rsesek@chromium.org</owner> + <summary> + Records the time it takes for the SafeBrowsing download service to extract + info from a downloaded DMG file. + </summary> +</histogram> + +<histogram name="SBClientDownload.ExtractDmgFeaturesTimeMedium" units="ms" + expires_after="M79"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <owner>rsesek@chromium.org</owner> @@ -107940,6 +108014,19 @@ </histogram> <histogram name="SBClientDownload.ExtractRarFeaturesTime" units="ms"> + <obsolete> + Deprecated in M76, replaced by + SBClientDownload.ExtractRarFeaturesTimeMedium. + </obsolete> + <owner>drubery@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <summary> + Records the time it takes for the SafeBrowsing download service to extract + info from a downloaded rar file. + </summary> +</histogram> + +<histogram name="SBClientDownload.ExtractRarFeaturesTimeMedium" units="ms"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <summary> @@ -107961,6 +108048,20 @@ </histogram> <histogram name="SBClientDownload.ExtractZipFeaturesTime" units="ms"> + <obsolete> + Deprecated in M76, replaced by + SBClientDownload.ExtractZipFeaturesTimeMedium. + </obsolete> + <owner>drubery@chromium.org</owner> + <owner>chrome-safebrowsing-alerts@google.com</owner> + <owner>mattm@chromium.org</owner> + <summary> + Records the time it takes for the SafeBrowsing download service to extract + info from a downloaded zip file. + </summary> +</histogram> + +<histogram name="SBClientDownload.ExtractZipFeaturesTimeMedium" units="ms"> <owner>vakh@chromium.org</owner> <owner>chrome-safebrowsing-alerts@google.com</owner> <owner>mattm@chromium.org</owner> @@ -144088,9 +144189,15 @@ <affected-histogram name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> <affected-histogram + name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/> + <affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> <affected-histogram + name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/> + <affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Activated"/> + <affected-histogram + name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage.Activated"/> </histogram_suffixes> <histogram_suffixes name="AdsPageLoadMetricsBytes" separator="."> @@ -144113,6 +144220,9 @@ label="The average load of an ad creative across the life of the page. This is measured at percentage of a cpu core used and capped at 100% for multicore systems."/> + <suffix base="true" name="AdFrames.PerFrame.TotalUsage" + label="The total load of an ad creative across the life of the page. + This is measured in milliseconds and capped at 10 seconds."/> <affected-histogram name="PageLoad.Clients.Ads.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu"/> <affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu"/> @@ -144126,9 +144236,15 @@ <affected-histogram name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage"/> <affected-histogram + name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage"/> + <affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage"/> <affected-histogram + name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage"/> + <affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage"/> + <affected-histogram + name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage"/> </histogram_suffixes> <histogram_suffixes name="AdsPageLoadMetricsCpuFullPage" separator="."> @@ -144136,6 +144252,9 @@ label="The average load of the page across its lifetime. This is measured at percentage of a cpu core used and capped at 100% for multicore systems."/> + <suffix base="true" name="FullPage.TotalUsage" + label="The total load of the page across its lifetime. This is measured + in milliseconds and capped at 10 minutes."/> <affected-histogram name="PageLoad.Clients.Ads.Cpu"/> </histogram_suffixes> @@ -144145,11 +144264,18 @@ <suffix name="PreInteractive" label="Usage before the page is interactive."/> <affected-histogram name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> + <affected-histogram + name="PageLoad.Clients.Ads.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/> <affected-histogram name="PageLoad.Clients.Ads.Cpu.FullPage.PercentUsage"/> + <affected-histogram name="PageLoad.Clients.Ads.Cpu.FullPage.TotalUsage"/> <affected-histogram name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> <affected-histogram + name="PageLoad.Clients.Ads.NonVisible.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/> + <affected-histogram name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.PercentUsage.Unactivated"/> + <affected-histogram + name="PageLoad.Clients.Ads.Visible.Cpu.AdFrames.PerFrame.TotalUsage.Unactivated"/> </histogram_suffixes> <histogram_suffixes name="AdsPageLoadMetricsMainFrameBytes" separator=".">
diff --git a/tools/metrics/ukm/ukm.xml b/tools/metrics/ukm/ukm.xml index 20bc922..59a589e 100644 --- a/tools/metrics/ukm/ukm.xml +++ b/tools/metrics/ukm/ukm.xml
@@ -4567,6 +4567,15 @@ explanation. In ms. </summary> </metric> + <metric name="InteractiveTiming.FirstInputDelay.SkipFilteringComparison"> + <summary> + For comparing FirstInputDelay metrics in the SkipTouchEventFilter + experiment. Measures First Input Delay, the duration between the hardware + timestamp and the start of event processing on the main thread for the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + </summary> + </metric> <metric name="InteractiveTiming.FirstInputDelay2"> <obsolete> Removed on February 2019 in favor of InteractiveTiming.FirstInputDelay3 @@ -4595,6 +4604,25 @@ </history> </aggregation> </metric> + <metric name="InteractiveTiming.FirstInputDelay4"> + <summary> + Measures First Input Delay, the duration between the hardware timestamp + and the start of event processing on the main thread for the first + meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed + explanation. In ms. + + This metric MAY replace InteractiveTiming.FirstInputDelay3 if the + SkipTouchEventFilter experiment is successful. + </summary> + <aggregation> + <history> + <index fields="profile.country"/> + <statistics> + <quantiles type="std-percentiles"/> + </statistics> + </history> + </aggregation> + </metric> <metric name="InteractiveTiming.FirstInputTimestamp"> <obsolete> Deprecated on January 2019 in favor of @@ -4607,6 +4635,16 @@ detailed explanation. In ms. </summary> </metric> + <metric name="InteractiveTiming.FirstInputTimestamp.SkipFilteringComparison"> + <summary> + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + This metric is used for comparing FirstInputTimestamp metrics in the + SkipTouchEventFilter experiment. + </summary> + </metric> <metric name="InteractiveTiming.FirstInputTimestamp2"> <obsolete> Removed on February 2019 in favor of @@ -4620,17 +4658,22 @@ </summary> </metric> <metric name="InteractiveTiming.FirstInputTimestamp3"> - <obsolete> - Removed on February 2019 in favor of - InteractiveTiming.FirstInputTimestamp3 which brings the metric more in - line with the EventTiming API. - </obsolete> <summary> The duration between navigation start and the hardware timestamp of the first meaningful input per navigation. See https://goo.gl/tr1oTZ for a detailed explanation. In ms. </summary> </metric> + <metric name="InteractiveTiming.FirstInputTimestamp4"> + <summary> + The duration between navigation start and the hardware timestamp of the + first meaningful input per navigation. See https://goo.gl/tr1oTZ for a + detailed explanation. In ms. + + This metric MAY replace InteractiveTiming.FirstInputTimestamp3 if the + SkipTouchEventFilter experiment is successful. + </summary> + </metric> <metric name="InteractiveTiming.LongestInputDelay"> <obsolete> Deprecated on January 2019 in favor of
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index 91ede4a2..210b0a0 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -305,8 +305,6 @@ crbug.com/923527 [ Android_Webview ] system_health.memory_mobile/load:media:soundcloud:2018 [ Skip ] crbug.com/947267 [ Nexus_5X ] system_health.memory_mobile/background:media:imgur [ Skip ] crbug.com/954949 [ Nexus5X_Webview ] system_health.memory_mobile/browse:news:washingtonpost [ Skip ] -crbug.com/961434 [ Android_Go_Webview ] system_health.memory_mobile/browse:shopping:lazada [ Skip ] -crbug.com/961434 [ Android_Go_Webview ] system_health.memory_mobile/browse:shopping:amazon [ Skip ] crbug.com/961417 [ Android_Go ] system_health.memory_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ] # Benchmark: tab_switching.typical_25 @@ -352,7 +350,6 @@ crbug.com/923116 [ Android ] v8.browsing_mobile/browse:shopping:avito [ Skip ] crbug.com/929839 [ Android_Go ] v8.browsing_mobile/browse:chrome:newtab [ Skip ] crbug.com/954949 [ Nexus5X_Webview ] v8.browsing_mobile/browse:news:washingtonpost [ Skip ] -crbug.com/961434 [ Android_Go ] v8.browsing_mobile/browse:shopping:lazada [ Skip ] crbug.com/961417 [ Android_Go ] v8.browsing_mobile/browse:social:tumblr_infinite_scroll:2018 [ Skip ] # Benchmark: v8.browsing_mobile-future
diff --git a/ui/accessibility/platform/OWNERS b/ui/accessibility/platform/OWNERS index 60385a0..aa76e7de 100644 --- a/ui/accessibility/platform/OWNERS +++ b/ui/accessibility/platform/OWNERS
@@ -1,3 +1,14 @@ # For ATK / AuraLinux jdiggs@igalia.com mrobinson@igalia.com + +# For Windows / UIA +per-file *_win*=kschmi@microsoft.com +per-file *_win*=kbabbitt@microsoft.com +per-file *_win*=iapres@microsoft.com +per-file *_base*=kschmi@microsoft.com +per-file *_base*=kbabbitt@microsoft.com +per-file *_base*=iapres@microsoft.com +per-file *test*=kschmi@microsoft.com +per-file *test*=kbabbitt@microsoft.com +per-file *test*=iapres@microsoft.com
diff --git a/ui/android/java/res/color/default_icon_color_secondary_list.xml b/ui/android/java/res/color/default_icon_color_secondary_list.xml index 6800110..5ed66d5 100644 --- a/ui/android/java/res/color/default_icon_color_secondary_list.xml +++ b/ui/android/java/res/color/default_icon_color_secondary_list.xml
@@ -6,6 +6,6 @@ <selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources"> <item android:alpha="@dimen/default_disabled_alpha" - android:color="@color/light_icon_color" android:state_enabled="false"/> - <item android:color="@color/light_icon_color" /> + android:color="@color/default_icon_color_secondary" android:state_enabled="false"/> + <item android:color="@color/default_icon_color_secondary" /> </selector> \ No newline at end of file
diff --git a/ui/android/java/res/values/color_palette.xml b/ui/android/java/res/values/color_palette.xml index 3c9ce487..03e6a2b 100644 --- a/ui/android/java/res/values/color_palette.xml +++ b/ui/android/java/res/values/color_palette.xml
@@ -54,6 +54,9 @@ @color/white_alpha_50 </color> + <color name="default_icon_color_secondary_dark">@color/modern_grey_600</color> + <color name="default_icon_color_secondary_light">@color/modern_grey_500</color> + <!-- Common text colors --> <color name="default_text_color_dark">@color/modern_grey_900</color> <color name="default_text_color_light">@android:color/white</color>
diff --git a/ui/android/java/res/values/colors.xml b/ui/android/java/res/values/colors.xml index ac13bdc..d5014fb0 100644 --- a/ui/android/java/res/values/colors.xml +++ b/ui/android/java/res/values/colors.xml
@@ -34,7 +34,7 @@ <color name="default_icon_color_blue" tools:ignore="UnusedResources"> @color/modern_blue_600 </color> - <color name="light_icon_color" tools:ignore="UnusedResources">@color/modern_grey_500</color> + <color name="default_icon_color_secondary" tools:ignore="UnusedResources">@color/default_icon_color_secondary_dark</color> <color name="hairline_stroke_color">@color/modern_grey_300</color> <!-- Common background and branding color. -->
diff --git a/ui/android/java/res_night/values-night/colors.xml b/ui/android/java/res_night/values-night/colors.xml index 2446e8e..6cd9a7d1 100644 --- a/ui/android/java/res_night/values-night/colors.xml +++ b/ui/android/java/res_night/values-night/colors.xml
@@ -19,6 +19,7 @@ <color name="default_icon_color_inverse">@color/default_icon_color_dark</color> <color name="default_icon_color_inverse_disabled">@color/default_icon_color_dark_disabled</color> <color name="default_icon_color_blue">@color/modern_blue_300</color> + <color name="default_icon_color_secondary">@color/default_icon_color_secondary_light</color> <color name="hairline_stroke_color">@color/white_alpha_10</color> <!-- Common background and branding color. -->
diff --git a/ui/base/models/simple_menu_model.cc b/ui/base/models/simple_menu_model.cc index b6470d8..709c584 100644 --- a/ui/base/models/simple_menu_model.cc +++ b/ui/base/models/simple_menu_model.cc
@@ -122,11 +122,10 @@ AddRadioItem(command_id, l10n_util::GetStringUTF16(string_id), group_id); } -void SimpleMenuModel::AddHighlightedItemWithStringIdAndIcon( - int command_id, - int string_id, - const gfx::ImageSkia& icon) { - Item item(command_id, TYPE_HIGHLIGHTED, l10n_util::GetStringUTF16(string_id)); +void SimpleMenuModel::AddHighlightedItemWithIcon(int command_id, + const base::string16& label, + const gfx::ImageSkia& icon) { + Item item(command_id, TYPE_HIGHLIGHTED, label); item.icon = gfx::Image(icon); AppendItem(std::move(item)); }
diff --git a/ui/base/models/simple_menu_model.h b/ui/base/models/simple_menu_model.h index 895fd62..7381e70 100644 --- a/ui/base/models/simple_menu_model.h +++ b/ui/base/models/simple_menu_model.h
@@ -90,9 +90,9 @@ void AddCheckItemWithStringId(int command_id, int string_id); void AddRadioItem(int command_id, const base::string16& label, int group_id); void AddRadioItemWithStringId(int command_id, int string_id, int group_id); - void AddHighlightedItemWithStringIdAndIcon(int command_id, - int string_id, - const gfx::ImageSkia& icon); + void AddHighlightedItemWithIcon(int command_id, + const base::string16& label, + const gfx::ImageSkia& icon); // Adds a separator of the specified type to the model. // - Adding a separator after another separator is always invalid if they
diff --git a/ui/base/resource/resource_bundle_unittest.cc b/ui/base/resource/resource_bundle_unittest.cc index 70b0539..4b3f0f5 100644 --- a/ui/base/resource/resource_bundle_unittest.cc +++ b/ui/base/resource/resource_bundle_unittest.cc
@@ -35,6 +35,7 @@ using ::testing::_; using ::testing::Between; +using ::testing::DoAll; using ::testing::Property; using ::testing::Return; using ::testing::ReturnArg;
diff --git a/ui/events/blink/blink_event_util.cc b/ui/events/blink/blink_event_util.cc index 8f155bd..e0395a4 100644 --- a/ui/events/blink/blink_event_util.cc +++ b/ui/events/blink/blink_event_util.cc
@@ -1261,13 +1261,13 @@ generated_gesture_event->data.scroll_begin.delta_x_hint = -scroll_delta.x(); generated_gesture_event->data.scroll_begin.delta_y_hint = -scroll_delta.y(); generated_gesture_event->data.scroll_begin.inertial_phase = - WebGestureEvent::kNonMomentumPhase; + WebGestureEvent::InertialPhaseState::kNonMomentum; generated_gesture_event->data.scroll_begin.delta_hint_units = granularity; } else if (type == WebInputEvent::Type::kGestureScrollUpdate) { generated_gesture_event->data.scroll_update.delta_x = -scroll_delta.x(); generated_gesture_event->data.scroll_update.delta_y = -scroll_delta.y(); generated_gesture_event->data.scroll_update.inertial_phase = - WebGestureEvent::kNonMomentumPhase; + WebGestureEvent::InertialPhaseState::kNonMomentum; generated_gesture_event->data.scroll_update.delta_units = granularity; }
diff --git a/ui/events/blink/fling_booster.cc b/ui/events/blink/fling_booster.cc index 7ccd58ab..2fa2ae2 100644 --- a/ui/events/blink/fling_booster.cc +++ b/ui/events/blink/fling_booster.cc
@@ -78,7 +78,7 @@ case WebInputEvent::kGestureScrollUpdate: { if (gesture_event.data.scroll_update.inertial_phase == - WebGestureEvent::kMomentumPhase) { + WebGestureEvent::InertialPhaseState::kMomentum) { // GSU events in momentum phase are generated by FlingController to // progress fling and should not interfere with fling boosting. return false;
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc index 3abe139..1b43d84 100644 --- a/ui/events/blink/input_handler_proxy.cc +++ b/ui/events/blink/input_handler_proxy.cc
@@ -59,7 +59,7 @@ // start. scroll_state_data.is_in_inertial_phase = (event.data.scroll_begin.inertial_phase == - WebGestureEvent::kMomentumPhase); + WebGestureEvent::InertialPhaseState::kMomentum); break; case WebInputEvent::kGestureScrollUpdate: scroll_state_data.delta_x = -event.data.scroll_update.delta_x; @@ -68,7 +68,7 @@ scroll_state_data.velocity_y = event.data.scroll_update.velocity_y; scroll_state_data.is_in_inertial_phase = event.data.scroll_update.inertial_phase == - WebGestureEvent::kMomentumPhase; + WebGestureEvent::InertialPhaseState::kMomentum; break; case WebInputEvent::kGestureScrollEnd: scroll_state_data.is_ending = true; @@ -152,8 +152,9 @@ cc::SnapFlingController::GestureScrollUpdateInfo info; info.delta = gfx::Vector2dF(-event.data.scroll_update.delta_x, -event.data.scroll_update.delta_y); - info.is_in_inertial_phase = event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase; + info.is_in_inertial_phase = + event.data.scroll_update.inertial_phase == + blink::WebGestureEvent::InertialPhaseState::kMomentum; info.event_time = event.TimeStamp(); return info; }
diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc index 3c2af23..72aeea8a 100644 --- a/ui/events/blink/input_handler_proxy_unittest.cc +++ b/ui/events/blink/input_handler_proxy_unittest.cc
@@ -45,6 +45,7 @@ using blink::WebTouchEvent; using blink::WebTouchPoint; using testing::_; +using testing::DoAll; using testing::Field; namespace ui { @@ -822,7 +823,7 @@ gesture_.data.scroll_update.delta_y = -40; // -Y means scroll down - i.e. in the +Y direction. gesture_.data.scroll_update.inertial_phase = - blink::WebGestureEvent::kMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kMomentum; EXPECT_CALL(mock_input_handler_, GetSnapFlingInfo(_, _, _)) .WillOnce(DoAll(testing::SetArgPointee<1>(gfx::Vector2dF(0, 0)), testing::SetArgPointee<2>(gfx::Vector2dF(0, 100)), @@ -850,7 +851,7 @@ expected_disposition_ = InputHandlerProxy::DROP_EVENT; gesture_.SetType(WebInputEvent::kGestureScrollEnd); gesture_.data.scroll_end.inertial_phase = - blink::WebGestureEvent::kMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kMomentum; EXPECT_CALL(mock_input_handler_, ScrollEnd(_, _)).Times(0); EXPECT_EQ(expected_disposition_, input_handler_->RouteToTypeSpecificHandler(gesture_));
diff --git a/ui/events/blink/input_scroll_elasticity_controller.cc b/ui/events/blink/input_scroll_elasticity_controller.cc index 4a6c928..c845f5b 100644 --- a/ui/events/blink/input_scroll_elasticity_controller.cc +++ b/ui/events/blink/input_scroll_elasticity_controller.cc
@@ -164,11 +164,12 @@ if (gesture_event.data.scroll_begin.synthetic) return; - bool enter_momentum = gesture_event.data.scroll_begin.inertial_phase == - blink::WebGestureEvent::kMomentumPhase; + bool enter_momentum = + gesture_event.data.scroll_begin.inertial_phase == + blink::WebGestureEvent::InertialPhaseState::kMomentum; bool leave_momentum = gesture_event.data.scroll_begin.inertial_phase == - blink::WebGestureEvent::kNonMomentumPhase && + blink::WebGestureEvent::InertialPhaseState::kNonMomentum && gesture_event.data.scroll_begin.delta_hint_units == blink::WebScrollGranularity::kScrollByPrecisePixel; ObserveRealScrollBegin(enter_momentum, leave_momentum); @@ -178,7 +179,7 @@ gfx::Vector2dF event_delta(-gesture_event.data.scroll_update.delta_x, -gesture_event.data.scroll_update.delta_y); bool has_momentum = gesture_event.data.scroll_update.inertial_phase == - blink::WebGestureEvent::kMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kMomentum; ObserveScrollUpdate(event_delta, scroll_result.unused_scroll_delta, event_timestamp, scroll_result.overscroll_behavior, has_momentum);
diff --git a/ui/events/blink/input_scroll_elasticity_controller_unittest.cc b/ui/events/blink/input_scroll_elasticity_controller_unittest.cc index 4767f1d..4823113 100644 --- a/ui/events/blink/input_scroll_elasticity_controller_unittest.cc +++ b/ui/events/blink/input_scroll_elasticity_controller_unittest.cc
@@ -23,11 +23,12 @@ }; enum InertialPhaseState { - UnknownMomentumPhase = - blink::WebGestureEvent::InertialPhaseState::kUnknownMomentumPhase, - NonMomentumPhase = - blink::WebGestureEvent::InertialPhaseState::kNonMomentumPhase, - MomentumPhase = blink::WebGestureEvent::InertialPhaseState::kMomentumPhase, + UnknownMomentumPhase = static_cast<int>( + blink::WebGestureEvent::InertialPhaseState::kUnknownMomentum), + NonMomentumPhase = static_cast<int>( + blink::WebGestureEvent::InertialPhaseState::kNonMomentum), + MomentumPhase = + static_cast<int>(blink::WebGestureEvent::InertialPhaseState::kMomentum), }; class MockScrollElasticityHelper : public cc::ScrollElasticityHelper {
diff --git a/ui/events/blink/scroll_predictor.cc b/ui/events/blink/scroll_predictor.cc index cef49dcf..7c95975 100644 --- a/ui/events/blink/scroll_predictor.cc +++ b/ui/events/blink/scroll_predictor.cc
@@ -110,7 +110,7 @@ static_cast<const WebGestureEvent&>(*event); // When fling, GSU is sending per frame, resampling is not needed. if (gesture_event.data.scroll_update.inertial_phase == - WebGestureEvent::kMomentumPhase) { + WebGestureEvent::InertialPhaseState::kMomentum) { should_resample_scroll_events_ = false; return; }
diff --git a/ui/events/blink/scroll_predictor_unittest.cc b/ui/events/blink/scroll_predictor_unittest.cc index b76ae66..f3aad4c9 100644 --- a/ui/events/blink/scroll_predictor_unittest.cc +++ b/ui/events/blink/scroll_predictor_unittest.cc
@@ -47,7 +47,7 @@ float delta_y = 0, double time_delta_in_milliseconds = 0, WebGestureEvent::InertialPhaseState phase = - WebGestureEvent::kNonMomentumPhase) { + WebGestureEvent::InertialPhaseState::kNonMomentum) { WebGestureEvent gesture( WebInputEvent::kGestureScrollUpdate, WebInputEvent::kNoModifiers, WebInputEvent::GetStaticTimeStampForTests() + @@ -163,8 +163,8 @@ EXPECT_TRUE(GetResamplingState()); // after GSU with momentum phase - gesture_update = CreateGestureScrollUpdate(0, 10, 10 /* ms */, - WebGestureEvent::kMomentumPhase); + gesture_update = CreateGestureScrollUpdate( + 0, 10, 10 /* ms */, WebGestureEvent::InertialPhaseState::kMomentum); HandleResampleScrollEvents(gesture_update, 15 /* ms */); EXPECT_FALSE(GetResamplingState());
diff --git a/ui/events/blink/web_input_event_traits.cc b/ui/events/blink/web_input_event_traits.cc index a5e7e853..ff87855 100644 --- a/ui/events/blink/web_input_event_traits.cc +++ b/ui/events/blink/web_input_event_traits.cc
@@ -262,7 +262,7 @@ } } else if (event.SourceDevice() == blink::WebGestureDevice::kTouchscreen) { blink::WebGestureEvent::InertialPhaseState inertial_phase_state = - blink::WebGestureEvent::kUnknownMomentumPhase; + blink::WebGestureEvent::InertialPhaseState::kUnknownMomentum; switch (event.GetType()) { case blink::WebInputEvent::kGestureScrollBegin: @@ -278,7 +278,8 @@ break; } bool is_in_inertial_phase = - inertial_phase_state == blink::WebGestureEvent::kMomentumPhase; + inertial_phase_state == + blink::WebGestureEvent::InertialPhaseState::kMomentum; source_event_type = is_in_inertial_phase ? SourceEventType::INERTIAL : SourceEventType::TOUCH; }
diff --git a/ui/file_manager/file_manager_resource_util.cc b/ui/file_manager/file_manager_resource_util.cc index 4825662..aee5d28 100644 --- a/ui/file_manager/file_manager_resource_util.cc +++ b/ui/file_manager/file_manager_resource_util.cc
@@ -9,7 +9,7 @@ namespace file_manager { -const GzippedGritResourceMap* GetFileManagerResources(size_t* size) { +const GritResourceMap* GetFileManagerResources(size_t* size) { DCHECK(size); *size = kFileManagerResourcesSize; return kFileManagerResources;
diff --git a/ui/file_manager/file_manager_resource_util.h b/ui/file_manager/file_manager_resource_util.h index 56df554..2b3b32f1 100644 --- a/ui/file_manager/file_manager_resource_util.h +++ b/ui/file_manager/file_manager_resource_util.h
@@ -9,13 +9,13 @@ #include "ui/file_manager/file_manager_export.h" -struct GzippedGritResourceMap; +struct GritResourceMap; namespace file_manager { // Get the list of resources. |size| is populated with the number of resources // in the returned array. -FILE_MANAGER_EXPORT const GzippedGritResourceMap* GetFileManagerResources( +FILE_MANAGER_EXPORT const GritResourceMap* GetFileManagerResources( size_t* size); } // namespace file_manager
diff --git a/ui/file_manager/file_manager_resources.grd b/ui/file_manager/file_manager_resources.grd index 3057332..09f2ab7 100644 --- a/ui/file_manager/file_manager_resources.grd +++ b/ui/file_manager/file_manager_resources.grd
@@ -4,8 +4,8 @@ <output filename="grit/file_manager_resources.h" type="rc_header"> <emit emit_type='prepend'></emit> </output> - <output filename="grit/file_manager_resources_map.cc" type="gzipped_resource_file_map_source" /> - <output filename="grit/file_manager_resources_map.h" type="gzipped_resource_map_header" /> + <output filename="grit/file_manager_resources_map.cc" type="resource_file_map_source" /> + <output filename="grit/file_manager_resources_map.h" type="resource_map_header" /> <output filename="file_manager_resources.pak" type="data_package" /> <output filename="file_manager_resources.rc" type="rc_all" /> </outputs>
diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn index 852fe1f8..9ba09f1 100644 --- a/ui/gfx/BUILD.gn +++ b/ui/gfx/BUILD.gn
@@ -69,7 +69,6 @@ "font.cc", "font.h", "font_fallback.h", - "font_fallback_android.cc", "font_fallback_linux.cc", "font_fallback_linux.h", "font_fallback_mac.mm", @@ -81,7 +80,6 @@ "font_list_impl.h", "font_render_params.cc", "font_render_params.h", - "font_render_params_android.cc", "font_render_params_linux.cc", "font_render_params_mac.cc", "font_render_params_win.cc", @@ -299,6 +297,13 @@ ] } + if (is_android || is_fuchsia) { + sources += [ + "font_fallback_skia.cc", + "font_render_params_skia.cc", + ] + } + if (!is_ios) { sources += [ "bidi_line_iterator.cc", @@ -363,13 +368,6 @@ } else { sources -= [ "path_x11.cc" ] } - - if (is_fuchsia) { - sources += [ - "font_fallback_fuchsia.cc", - "font_render_params_fuchsia.cc", - ] - } } jumbo_component("color_space") { @@ -666,7 +664,6 @@ "color_space_unittest.cc", "color_transform_unittest.cc", "color_utils_unittest.cc", - "font_fallback_android_unittest.cc", "font_fallback_linux_unittest.cc", "font_fallback_mac_unittest.cc", "font_list_unittest.cc", @@ -758,6 +755,10 @@ deps += [ "//ui/android:ui_java" ] } + if (is_android || is_fuchsia) { + sources += [ "font_fallback_skia_unittest.cc" ] + } + if (!use_aura && !is_ios) { sources -= [ "nine_image_painter_unittest.cc" ] } @@ -809,6 +810,10 @@ sources += [ "linux/native_pixmap_dmabuf_unittest.cc" ] deps += [ "//third_party/fontconfig" ] } + + if (is_fuchsia) { + deps += [ "//skia:test_fonts" ] + } } if (is_android) {
diff --git a/ui/gfx/font_fallback.h b/ui/gfx/font_fallback.h index f7f3619..cf0cb7267 100644 --- a/ui/gfx/font_fallback.h +++ b/ui/gfx/font_fallback.h
@@ -19,7 +19,8 @@ // Given a font, returns the fonts that are suitable for fallback. GFX_EXPORT std::vector<Font> GetFallbackFonts(const Font& font); -#if defined(ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) +#if defined(ANDROID) || defined(OS_MACOSX) || defined(OS_WIN) || \ + defined(OS_FUCHSIA) // Finds a fallback font to render the specified |text| with respect to an // initial |font|. Returns the resulting font via out param |result|. Returns @@ -28,7 +29,7 @@ base::StringPiece16 text, Font* result); -#endif // ANDROID || OS_MACOSX || OS_WIN +#endif // ANDROID || OS_MACOSX || OS_WIN || OS_FUCHSIA } // namespace gfx
diff --git a/ui/gfx/font_fallback_fuchsia.cc b/ui/gfx/font_fallback_fuchsia.cc deleted file mode 100644 index bfdc7aa2..0000000 --- a/ui/gfx/font_fallback_fuchsia.cc +++ /dev/null
@@ -1,18 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/gfx/font_fallback.h" - -#include <string> -#include <vector> - -namespace gfx { - -std::vector<Font> GetFallbackFonts(const Font& font) { - // TODO(fuchsia): Stubbed while bringing up headless build, see - // https://crbug.com/743296. - return std::vector<Font>(); -} - -} // namespace gfx
diff --git a/ui/gfx/font_fallback_android.cc b/ui/gfx/font_fallback_skia.cc similarity index 81% rename from ui/gfx/font_fallback_android.cc rename to ui/gfx/font_fallback_skia.cc index 051f22f..39f0f27 100644 --- a/ui/gfx/font_fallback_android.cc +++ b/ui/gfx/font_fallback_skia.cc
@@ -7,9 +7,9 @@ #include <string> #include <vector> -#include "base/android/locale_utils.h" #include "base/strings/utf_string_conversions.h" #include "base/trace_event/trace_event.h" +#include "build/build_config.h" #include "third_party/icu/source/common/unicode/uchar.h" #include "third_party/icu/source/common/unicode/uscript.h" #include "third_party/icu/source/common/unicode/utf16.h" @@ -17,6 +17,10 @@ #include "third_party/skia/include/core/SkTypeface.h" #include "ui/gfx/font.h" +#if defined(OS_ANDROID) +#include "base/android/locale_utils.h" +#endif // defined(OS_ANDROID) + namespace gfx { std::vector<Font> GetFallbackFonts(const Font& font) { @@ -31,8 +35,19 @@ sk_sp<SkFontMgr> font_mgr(SkFontMgr::RefDefault()); + const char** bcp47_locales = nullptr; + int num_bcp_locals = 0; + + // TODO(sergeyu): Specify bcp47 locale on all platforms. Ideally the locale + // should be passed here through gfx::RenderText. +#if defined(OS_ANDROID) std::string locale = base::android::GetDefaultLocaleString(); - const char* bcp47_locales[] = {locale.c_str()}; + const char* android_bcp47_locales[] = {locale.c_str()}; + if (!locale.empty()) { + bcp47_locales = android_bcp47_locales; + num_bcp_locals = base::size(android_bcp47_locales); + } +#endif // defined(OS_ANDROID) const int font_weight = (font.GetWeight() == Font::Weight::INVALID) ? static_cast<int>(Font::Weight::NORMAL) @@ -52,8 +67,7 @@ U16_NEXT(text.data(), offset, text.length(), code_point); sk_sp<SkTypeface> typeface(font_mgr->matchFamilyStyleCharacter( - font.GetFontName().c_str(), skia_style, - locale.empty() ? nullptr : bcp47_locales, locale.empty() ? 0 : 1, + font.GetFontName().c_str(), skia_style, bcp47_locales, num_bcp_locals, code_point)); // If the typeface is not found or was already tested, skip it. if (!typeface || !tested_typeface.insert(typeface->uniqueID()).second)
diff --git a/ui/gfx/font_fallback_android_unittest.cc b/ui/gfx/font_fallback_skia_unittest.cc similarity index 87% rename from ui/gfx/font_fallback_android_unittest.cc rename to ui/gfx/font_fallback_skia_unittest.cc index 7ea7e7d..07a579c7 100644 --- a/ui/gfx/font_fallback_android_unittest.cc +++ b/ui/gfx/font_fallback_skia_unittest.cc
@@ -14,13 +14,13 @@ static const wchar_t* kFallbackFontTests[] = { L"\u0540\u0541", // Armenian, L"\u0631\u0632", // Arabic - L"\u0D21\u0D22", // Malayalam + L"\u0915\u093f", // Devanagari L"\u5203\u5204", // CJK Unified Ideograph }; } // namespace -TEST(FontFallbackAndroidTest, EmptyStringFallback) { +TEST(FontFallbackSkiaTest, EmptyStringFallback) { Font base_font; Font fallback_font; bool result = @@ -28,7 +28,7 @@ EXPECT_FALSE(result); } -TEST(FontFallbackAndroidTest, FontFallback) { +TEST(FontFallbackSkiaTest, FontFallback) { for (const auto* test : kFallbackFontTests) { Font base_font; Font fallback_font;
diff --git a/ui/gfx/font_names_testing.cc b/ui/gfx/font_names_testing.cc index 0815bcb6..fda2dfe0 100644 --- a/ui/gfx/font_names_testing.cc +++ b/ui/gfx/font_names_testing.cc
@@ -22,7 +22,7 @@ dessert. */ -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_FUCHSIA) const char kTestFontName[] = "Arimo"; #elif defined(OS_ANDROID) const char kTestFontName[] = "sans-serif"; @@ -30,7 +30,7 @@ const char kTestFontName[] = "Arial"; #endif -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_FUCHSIA) const char kSymbolFontName[] = "DejaVu Sans"; #elif defined(OS_ANDROID) const char kSymbolFontName[] = "monospace"; @@ -40,7 +40,7 @@ const char kSymbolFontName[] = "Symbol"; #endif -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_FUCHSIA) const char kCJKFontName[] = "Noto Sans CJK JP"; #elif defined(OS_ANDROID) const char kCJKFontName[] = "serif";
diff --git a/ui/gfx/font_render_params_fuchsia.cc b/ui/gfx/font_render_params_fuchsia.cc deleted file mode 100644 index cc44366..0000000 --- a/ui/gfx/font_render_params_fuchsia.cc +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/gfx/font_render_params.h" - -#include "base/logging.h" -#include "base/macros.h" -#include "base/no_destructor.h" - -namespace gfx { - -namespace { - -// Returns the system's default settings. -FontRenderParams LoadDefaults() { - FontRenderParams params; - params.antialiasing = true; - params.autohinter = true; - params.use_bitmaps = true; - params.subpixel_rendering = FontRenderParams::SUBPIXEL_RENDERING_NONE; - params.subpixel_positioning = true; - params.hinting = FontRenderParams::HINTING_SLIGHT; - - return params; -} - -} // namespace - -FontRenderParams GetFontRenderParams(const FontRenderParamsQuery& query, - std::string* family_out) { - if (family_out) - NOTIMPLEMENTED(); - // Customized font rendering settings are not supported, only defaults. - static const base::NoDestructor<gfx::FontRenderParams> params(LoadDefaults()); - return *params; -} - -float GetFontRenderParamsDeviceScaleFactor() { - return 1.0; -} - -} // namespace gfx
diff --git a/ui/gfx/font_render_params_android.cc b/ui/gfx/font_render_params_skia.cc similarity index 100% rename from ui/gfx/font_render_params_android.cc rename to ui/gfx/font_render_params_skia.cc
diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc index 3b8a2be7..c5a0bc4 100644 --- a/ui/gfx/render_text_harfbuzz.cc +++ b/ui/gfx/render_text_harfbuzz.cc
@@ -1799,7 +1799,8 @@ std::string preferred_fallback_family; -#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_MACOSX) +#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_MACOSX) || \ + defined(OS_FUCHSIA) Font fallback_font(primary_font); bool fallback_found; { @@ -1820,7 +1821,7 @@ if (runs.empty()) return; } -#endif // OS_ANDROID || OS_WIN || OS_MACOSX +#endif // OS_ANDROID || OS_WIN || OS_MACOSX || OS_FUCHSIA std::vector<Font> fallback_font_list; {
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc index bdfeca8a..2bcf52e 100644 --- a/ui/gfx/render_text_unittest.cc +++ b/ui/gfx/render_text_unittest.cc
@@ -2668,6 +2668,12 @@ // TODO(mboc): Add some unittests for other weights (currently not // implemented because of test system font configuration). RenderText* render_text = GetRenderText(); + +#if defined(OS_FUCHSIA) + // Increase font size to ensure that bold and regular styles differ in width. + render_text->SetFontList(FontList("Arial, 20px")); +#endif // defined(OS_FUCHSIA) + render_text->SetText(UTF8ToUTF16("Hello World")); const int plain_width = render_text->GetStringSize().width(); @@ -4306,8 +4312,6 @@ // Ensure that the fallback fonts offered by GetFallbackFont() support glyphs // for different languages. -// TODO(https://crbug.com/743296): Implements Fallback fonts on Fuchsia. -#if !defined(OS_FUCHSIA) TEST_F(RenderTextTest, HarfBuzz_FallbackFontsSupportGlyphs) { // The word 'test' in different languages. static const wchar_t* kLanguageTests[] = { @@ -4328,13 +4332,9 @@ } } } -#endif // !defined(OS_FUCHSIA) - // Ensure that the fallback fonts offered by GetFallbackFont() support glyphs // for different languages. -// TODO(https://crbug.com/743296): Implements Fallback fonts on Fuchsia. -#if !defined(OS_FUCHSIA) TEST_F(RenderTextTest, HarfBuzz_MultiRunsSupportGlyphs) { static const wchar_t* kLanguageTests[] = { L"www.اختبار.com", @@ -4358,7 +4358,6 @@ } } } -#endif // !defined(OS_FUCHSIA) // Ensure that the width reported by RenderText is sufficient for drawing. Draws // to a canvas and checks if any pixel beyond the bounding rectangle is colored. @@ -4419,39 +4418,23 @@ } { SCOPED_TRACE("TextDoesntClip Left Side"); -#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ - defined(OS_ANDROID) || defined(ARCH_CPU_MIPS_FAMILY) - // TODO(dschuyler): On Windows, Chrome OS, Linux, Android, and Mac - // smoothing draws to the left of text. This appears to be a preexisting - // issue that wasn't revealed by the prior unit tests. RenderText - // currently only uses origins and advances and ignores bounding boxes so - // cannot account for under- and over-hang. + // TODO(dschuyler): Smoothing draws to the left of text. This appears to + // be a preexisting issue that wasn't revealed by the prior unit tests. + // RenderText currently only uses origins and advances and ignores + // bounding boxes so cannot account for under- and over-hang. rect_buffer.EnsureSolidRect(SK_ColorWHITE, 0, kTestSize, kTestSize - 1, string_size.height()); -#else - rect_buffer.EnsureSolidRect(SK_ColorWHITE, 0, kTestSize, kTestSize, - string_size.height()); -#endif } { SCOPED_TRACE("TextDoesntClip Right Side"); -#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ - defined(OS_ANDROID) || defined(ARCH_CPU_MIPS_FAMILY) - // TODO(dschuyler): On Windows, Chrome OS, Linux, Android, and Mac - // smoothing draws to the right of text. This appears to be a preexisting - // issue that wasn't revealed by the prior unit tests. RenderText - // currently only uses origins and advances and ignores bounding boxes so - // cannot account for under- and over-hang. + // TODO(dschuyler): Smoothing draws to the right of text. This appears to + // be a preexisting issue that wasn't revealed by the prior unit tests. + // RenderText currently only uses origins and advances and ignores + // bounding boxes so cannot account for under- and over-hang. rect_buffer.EnsureSolidRect(SK_ColorWHITE, kTestSize + string_size.width() + 1, kTestSize, kTestSize - 1, string_size.height()); -#else - rect_buffer.EnsureSolidRect(SK_ColorWHITE, - kTestSize + string_size.width(), - kTestSize, kTestSize, - string_size.height()); -#endif } } } @@ -4572,7 +4555,7 @@ render_text->SetText(UTF8ToUTF16("x")); DrawVisualText(); -#if defined(OS_LINUX) || defined(OS_ANDROID) +#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) // On Linux, whether subpixel AA is supported is determined by the platform // FontConfig. Force it into a particular style after computing runs. Other // platforms use a known default FontRenderParams from a static local. @@ -4586,7 +4569,7 @@ render_text->set_subpixel_rendering_suppressed(true); DrawVisualText(); -#if defined(OS_LINUX) || defined(OS_ANDROID) +#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) // For Linux, runs shouldn't be re-calculated, and the suppression of the // SUBPIXEL_RENDERING_RGB set above should now take effect. But, after // checking, apply the override anyway to be explicit that it is suppressed.
diff --git a/ui/gfx/test/run_all_unittests.cc b/ui/gfx/test/run_all_unittests.cc index ae93b4e..6e6882c 100644 --- a/ui/gfx/test/run_all_unittests.cc +++ b/ui/gfx/test/run_all_unittests.cc
@@ -26,6 +26,10 @@ #include "mojo/core/embedder/embedder.h" // nogncheck #endif +#if defined(OS_FUCHSIA) +#include "skia/ext/test_fonts.h" // nogncheck +#endif + namespace { class GfxTestSuite : public base::TestSuite { @@ -50,6 +54,10 @@ #if defined(OS_WIN) gfx::win::InitializeDirectWrite(); #endif + +#if defined(OS_FUCHSIA) + skia::ConfigureTestFont(); +#endif } void Shutdown() override {
diff --git a/ui/keyboard/keyboard_resources.grd b/ui/keyboard/keyboard_resources.grd index ee4ec347..91ca2ba2 100644 --- a/ui/keyboard/keyboard_resources.grd +++ b/ui/keyboard/keyboard_resources.grd
@@ -8,7 +8,7 @@ <output filename="grit/keyboard_resources.h" type="rc_header"> <emit emit_type='prepend'></emit> </output> - <output filename="grit/keyboard_resources_map.h" type="gzipped_resource_map_header" /> + <output filename="grit/keyboard_resources_map.h" type="resource_map_header" /> <output filename="keyboard_resources.pak" type="data_package" /> </outputs> <release seq="1">
diff --git a/ui/keyboard/resources/keyboard_resource_util.cc b/ui/keyboard/resources/keyboard_resource_util.cc index 9f667d85..79e2f9e 100644 --- a/ui/keyboard/resources/keyboard_resource_util.cc +++ b/ui/keyboard/resources/keyboard_resource_util.cc
@@ -16,11 +16,11 @@ const char kKeyboardURL[] = "chrome://keyboard"; const char kKeyboardHost[] = "keyboard"; -const GzippedGritResourceMap* GetKeyboardExtensionResources(size_t* size) { +const GritResourceMap* GetKeyboardExtensionResources(size_t* size) { // This looks a lot like the contents of a resource map; however it is // necessary to have a custom path for the extension path, so the resource // map cannot be used directly. - static const GzippedGritResourceMap kKeyboardResources[] = { + static const GritResourceMap kKeyboardResources[] = { {"keyboard/locales/en.js", IDR_KEYBOARD_LOCALES_EN}, {"keyboard/config/emoji.js", IDR_KEYBOARD_CONFIG_EMOJI}, {"keyboard/config/hwt.js", IDR_KEYBOARD_CONFIG_HWT},
diff --git a/ui/keyboard/resources/keyboard_resource_util.h b/ui/keyboard/resources/keyboard_resource_util.h index c4f7750..b353e137 100644 --- a/ui/keyboard/resources/keyboard_resource_util.h +++ b/ui/keyboard/resources/keyboard_resource_util.h
@@ -9,7 +9,7 @@ #include "ui/keyboard/keyboard_export.h" -struct GzippedGritResourceMap; +struct GritResourceMap; namespace keyboard { @@ -21,7 +21,7 @@ // Get the list of keyboard resources. |size| is populated with the number of // resources in the returned array. -KEYBOARD_EXPORT const GzippedGritResourceMap* GetKeyboardExtensionResources( +KEYBOARD_EXPORT const GritResourceMap* GetKeyboardExtensionResources( size_t* size); // Initializes the keyboard module. This includes adding the necessary pak files
diff --git a/ui/native_theme/common_theme.cc b/ui/native_theme/common_theme.cc index d0f6ba7..89f324a5 100644 --- a/ui/native_theme/common_theme.cc +++ b/ui/native_theme/common_theme.cc
@@ -301,7 +301,7 @@ // FocusableBorder case NativeTheme::kColorId_FocusedBorderColor: - return gfx::kGoogleBlue500; + return SkColorSetA(gfx::kGoogleBlue500, 0x66); case NativeTheme::kColorId_UnfocusedBorderColor: return SkColorSetA(SK_ColorBLACK, 0x66);
diff --git a/ui/views/controls/focus_ring.cc b/ui/views/controls/focus_ring.cc index 2346789..95c79c9 100644 --- a/ui/views/controls/focus_ring.cc +++ b/ui/views/controls/focus_ring.cc
@@ -97,8 +97,8 @@ cc::PaintFlags paint; paint.setAntiAlias(true); - paint.setColor(color_.value_or(SkColorSetA( - GetNativeTheme()->GetSystemColor(ColorIdForValidity(!invalid_)), 0x66))); + paint.setColor(color_.value_or( + GetNativeTheme()->GetSystemColor(ColorIdForValidity(!invalid_)))); paint.setStyle(cc::PaintFlags::kStroke_Style); paint.setStrokeWidth(PlatformStyle::kFocusHaloThickness);
diff --git a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html index 8187937..242047c 100644 --- a/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html +++ b/ui/webui/resources/cr_elements/cr_toolbar/cr_toolbar.html
@@ -42,16 +42,17 @@ } #leftContent { - /* margin-start here must match margin-end on #rightContent. */ - margin-inline-start: 12px; position: relative; transition: opacity 100ms; } #leftSpacer { align-items: center; + box-sizing: border-box; display: flex; - margin-inline-start: 6px; + /* 12px to match #rightSpacer + 6px to align with icons in menus. */ + padding-inline-start: calc(12px + 6px); + width: var(--cr-toolbar-left-spacer-width, auto); } cr-icon-button { @@ -69,8 +70,8 @@ justify-content: center; } - #rightContent { - margin-inline-end: 12px; + #rightSpacer { + padding-inline-end: 12px; } :host([narrow]) #centeredContent { @@ -91,6 +92,10 @@ flex: 1 1 var(--cr-toolbar-field-margin, 0); } + :host(:not([narrow])) #centeredContent { + flex-basis: var(--cr-toolbar-center-basis, 0); + } + :host(:not([narrow])) #rightContent { flex: 1 1 0; text-align: end; @@ -178,7 +183,9 @@ </div> <div id="rightContent"> - <slot></slot> + <div id="rightSpacer"> + <slot></slot> + </div> </div> </template> <script src="cr_toolbar.js"></script>
diff --git a/ui/webui/resources/cr_elements/shared_vars_css.html b/ui/webui/resources/cr_elements/shared_vars_css.html index ab5c6c6b..a16e5d48 100644 --- a/ui/webui/resources/cr_elements/shared_vars_css.html +++ b/ui/webui/resources/cr_elements/shared_vars_css.html
@@ -186,15 +186,16 @@ --cr-section-vertical-margin: 21px; --cr-centered-card-max-width: 680px; + --cr-centered-card-width-percentage: 0.96; --cr-centered-card-container: { box-sizing: border-box; display: block; height: inherit; margin: 0 auto; - max-width: calc(var(--cr-centered-card-max-width) + 3 * 2px); + max-width: var(--cr-centered-card-max-width); min-width: 550px; position: relative; - width: 96%; + width: calc(100% * var(--cr-centered-card-width-percentage)); } --cr-card-external-title: {