diff --git a/DEPS b/DEPS index fd9d36c4..90c222e 100644 --- a/DEPS +++ b/DEPS
@@ -285,7 +285,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'bdbd155084ee81c06e5c853317a29101591f9314', + 'skia_revision': '4deec479d43bb5667bc93c656f1b9320b7e82031', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -372,7 +372,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': '2cdcd6da075b6813b3cdb048880a26130ac47ff9', + 'devtools_frontend_revision': '6337cf1fb486fc8b1a8531706ae393a17c8144af', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -412,7 +412,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'fa3c08d112bd138cb396df64f205366a98bae6f8', + 'dawn_revision': '692846d0a07b7d5e5e923102b73e66444b54eb4d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -436,7 +436,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling nearby # and whatever else without interference from each other. - 'nearby_revision': '6cdc9890b5f83ff731a6363a785272bd1a75f87e', + 'nearby_revision': 'c40e0112672b28ef87b67f69cc4189a9434c3d47', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling securemessage # and whatever else without interference from each other. @@ -771,7 +771,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - 'a3172d482c03df90641412f5d57466eeae326ac2', + '7c980170b6cdc8553da644e6858d2355996e8c56', 'condition': 'checkout_android and checkout_src_internal', }, @@ -960,7 +960,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'ZkYB0Q-_4rKNU-xdAsHkSLxipy6IVnPs2EenLzq4QycC', + 'version': 'HPWUASN36GwtzkFDhiowq5cljeZ51ldxK_doyYC6E2UC', }, ], 'condition': 'checkout_android', @@ -1195,13 +1195,13 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '59ebbc12ebfbadb33c87365bb68c2fe9d838543a', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '9e36ef60d0b3b3da1d79cf388275697281d27f21', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), 'src/third_party/devtools-frontend-internal': { - 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '5098d230bcc13df9ba43a0a94913ce797b01a412', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + '3ceead8e27627d49691cf2f5eaaadb019799dc33', 'condition': 'checkout_src_internal', }, @@ -1861,7 +1861,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'cefabb95fc47d2962fb14d46ffdf2b89326e860b', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '95e7a0398ca68fed86dfeed703bc051c1e44467d', + Var('webrtc_git') + '/src.git' + '@' + 'b43f06572853093010d826c9b49ebf23c765be57', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -1951,7 +1951,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': Var('chrome_git') + '/chrome/src-internal.git@04173bf7f3c4f717441f5ef4a9e9e0f3063736ad', + 'url': Var('chrome_git') + '/chrome/src-internal.git@25b07a74bfe56e4a0b9e462419785cf53f7ca8b9', 'condition': 'checkout_src_internal', }, @@ -5022,6 +5022,17 @@ ], }, { + 'name': 'Fetch PGO profiles for lacros arm64', + 'pattern': '.', + 'condition': 'checkout_pgo_profiles and checkout_lacros_sdk', + 'action': [ 'python3', + 'src/tools/update_pgo_profiles.py', + '--target=lacros-arm64', + 'update', + '--gs-url-base=chromium-optimization-profiles/pgo_profiles', + ], + }, + { 'name': 'Fetch PGO profiles for V8 builtins', 'pattern': '.', # Always download profiles on Android builds. The GN arg `is_official_build`
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 462700ed..6f3b72a 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -949,13 +949,27 @@ [_THIRD_PARTY_EXCEPT_BLINK], # Not an error in third_party folders. ), BanRule( - r'/\b(absl|std)::(u16)?string_view\b', + r'/\babsl::string_view\b', ( - 'absl::string_view is banned and std::[u16]string_view are not allowed', - ' yet (https://crbug.com/691162). Use base::StringPiece[16] instead.', + 'absl::string_view is a legacy spelling of std::string_view, which is ', + 'not allowed yet (https://crbug.com/691162). Use base::StringPiece ', + 'instead, unless std::string_view is needed to use with an external ', + 'API.', + ), + True, + [_THIRD_PARTY_EXCEPT_BLINK], # Don't warn in third_party folders. + ), + BanRule( + r'/\bstd::(u16)?string_view\b', + ( + 'std::[u16]string_view is not yet allowed (crbug.com/691162). Use ', + 'base::StringPiece[16] instead, unless std::[u16]string_view is ', + 'needed to use an external API.', ), True, [ + # Needed to implement and test std::string_view interoperability. + r'base/strings/string_piece.*', # Needed to use liburlpattern API. r'third_party/blink/renderer/core/url_pattern/.*', r'third_party/blink/renderer/modules/manifest/manifest_parser\.cc', @@ -965,6 +979,12 @@ r'net/test/embedded_test_server/.*', r'net/third_party/quiche/.*', r'services/network/web_transport\.cc', + # This code is in the process of being extracted into an external + # library, where //base will be unavailable. + r'net/cert/pki/.*', + r'net/der/.*', + # Needed to use APIs from the above. + r'net/cert/.*', # Not an error in third_party folders. _THIRD_PARTY_EXCEPT_BLINK ], @@ -1131,15 +1151,6 @@ [_THIRD_PARTY_EXCEPT_BLINK], # Don't warn in third_party folders. ), BanRule( - r'/\bstd::(u16)?string_view\b', - ( - 'std::[u16]string_view is not yet allowed (crbug.com/691162). Use ', - 'base::StringPiece[16] instead.', - ), - True, - [_THIRD_PARTY_EXCEPT_BLINK], # Don't warn in third_party folders. - ), - BanRule( r'/#include <(barrier|latch|semaphore|stop_token)>', ( 'The thread support library is banned. Use base/synchronization ' @@ -1652,6 +1663,7 @@ 'build/android/gyp/allot_native_libraries.pydeps', 'build/android/gyp/apkbuilder.pydeps', 'build/android/gyp/assert_static_initializers.pydeps', + 'build/android/gyp/binary_baseline_profile.pydeps', 'build/android/gyp/bytecode_processor.pydeps', 'build/android/gyp/bytecode_rewriter.pydeps', 'build/android/gyp/check_flag_expectations.pydeps',
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/DrawFunctor.java b/android_webview/glue/java/src/com/android/webview/chromium/DrawFunctor.java index 937e875..7843763 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/DrawFunctor.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/DrawFunctor.java
@@ -5,6 +5,7 @@ package com.android.webview.chromium; import org.chromium.base.annotations.JniIgnoreNatives; +import org.chromium.build.annotations.UsedByReflection; @JniIgnoreNatives class DrawFunctor { @@ -12,7 +13,9 @@ return nativeGetFunctionTable(); } - // The Android framework performs manual JNI registration on this method, - // so the method signature cannot change without updating the framework. + // The Android framework performs manual JNI registration on these methods, so the method + // signatures cannot change without updating the framework. We use @UsedByReflection, while not + // technically true, as a way to preserve these methods and their names. + @UsedByReflection("Android framework manual registration") private static native long nativeGetFunctionTable(); }
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/DrawGLFunctor.java b/android_webview/glue/java/src/com/android/webview/chromium/DrawGLFunctor.java index 01086cb6..72f0fe7 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/DrawGLFunctor.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/DrawGLFunctor.java
@@ -10,6 +10,7 @@ import org.chromium.android_webview.AwContents; import org.chromium.base.annotations.JniIgnoreNatives; +import org.chromium.build.annotations.UsedByReflection; /** * Simple Java abstraction and wrapper for the native DrawGLFunctor flow. @@ -70,9 +71,13 @@ nativeSetChromiumAwDrawGLFunction(functionPointer); } - // The Android framework performs manual JNI registration on these methods, - // so the method signatures cannot change without updating the framework. + // The Android framework performs manual JNI registration on these methods, so the method + // signatures cannot change without updating the framework. We use @UsedByReflection, while not + // technically true, as a way to preserve these methods and their names. + @UsedByReflection("Android framework manual registration") private static native long nativeCreateGLFunctor(long viewContext); + @UsedByReflection("Android framework manual registration") private static native void nativeDestroyGLFunctor(long functor); + @UsedByReflection("Android framework manual registration") private static native void nativeSetChromiumAwDrawGLFunction(long functionPointer); }
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/GraphicsUtils.java b/android_webview/glue/java/src/com/android/webview/chromium/GraphicsUtils.java index 7de7c96..3aeeffc 100644 --- a/android_webview/glue/java/src/com/android/webview/chromium/GraphicsUtils.java +++ b/android_webview/glue/java/src/com/android/webview/chromium/GraphicsUtils.java
@@ -5,6 +5,7 @@ package com.android.webview.chromium; import org.chromium.base.annotations.JniIgnoreNatives; +import org.chromium.build.annotations.UsedByReflection; @JniIgnoreNatives abstract class GraphicsUtils { @@ -16,8 +17,11 @@ return nativeGetDrawGLFunctionTable(); } - // The Android framework performs manual JNI registration on these methods, - // so the method signatures cannot change without updating the framework. + // The Android framework performs manual JNI registration on these methods, so the method + // signatures cannot change without updating the framework. We use @UsedByReflection, while not + // technically true, as a way to preserve these methods and their names. + @UsedByReflection("Android framework manual registration") private static native long nativeGetDrawSWFunctionTable(); + @UsedByReflection("Android framework manual registration") private static native long nativeGetDrawGLFunctionTable(); }
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index b95713060..62050e653 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -378,6 +378,8 @@ "clipboard/clipboard_history_resource_manager.h", "clipboard/clipboard_history_util.cc", "clipboard/clipboard_history_util.h", + "clipboard/clipboard_manager_bubble_view.cc", + "clipboard/clipboard_manager_bubble_view.h", "clipboard/clipboard_nudge.cc", "clipboard/clipboard_nudge.h", "clipboard/clipboard_nudge_constants.h",
diff --git a/ash/accelerators/accelerator_commands.cc b/ash/accelerators/accelerator_commands.cc index 35416b96..a7746c4 100644 --- a/ash/accelerators/accelerator_commands.cc +++ b/ash/accelerators/accelerator_commands.cc
@@ -399,16 +399,13 @@ frame_view->GetHeaderView()->caption_button_container()->size_button()); } -// Gets the top window, or active window if there is none. Returns nullptr if -// neither exist. -aura::Window* GetCandidateWindowForAction() { +// Gets the target window for accelerator action. This can be the top visible +// window, or active window if the accelerator is pressed during a window drag. +// Returns nullptr if neither exist. +aura::Window* GetTargetWindow() { aura::Window* window = window_util::GetTopWindow(); - if (!window) { - // Attempt to toggle the active window if there is no top window. This can - // happen when the accelerator is pressed during a window drag. - window = window_util::GetActiveWindow(); - } - return window; + return window && window->IsVisible() ? window + : window_util::GetActiveWindow(); } } // namespace @@ -509,14 +506,14 @@ if (!chromeos::wm::features::IsWindowLayoutMenuEnabled()) { return false; } - return window_util::GetTopWindow() != nullptr; + return GetTargetWindow() != nullptr; } bool CanToggleGameDashboard() { if (!features::IsGameDashboardEnabled()) { return false; } - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); return window && GameDashboardController::Get()->IsSupported(window); } @@ -524,7 +521,7 @@ if (!chromeos::wm::features::IsWindowLayoutMenuEnabled()) { return false; } - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); if (!window) { return false; } @@ -568,7 +565,7 @@ } bool CanToggleResizeLockMenu() { - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); if (!window) { return false; } @@ -585,7 +582,7 @@ } bool CanWindowSnap() { - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); if (!window) { return false; } @@ -813,7 +810,7 @@ window_to_move = overview_controller->overview_session()->GetHighlightedWindow(); } else { - window_to_move = window_util::GetTopWindow(); + window_to_move = GetTargetWindow(); } if (!window_to_move || !desks_util::BelongsToActiveDesk(window_to_move)) @@ -959,7 +956,7 @@ } void RotateActiveWindow() { - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); if (!window) { return; } @@ -1088,7 +1085,7 @@ } void ToggleAssignToAllDesk() { - auto* window = window_util::GetTopWindow(); + auto* window = GetTargetWindow(); if (!window) { return; } @@ -1263,7 +1260,7 @@ void ToggleFloating() { DCHECK(chromeos::wm::features::IsWindowLayoutMenuEnabled()); - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); DCHECK(window); // `CanFloatWindow` check is placed here rather than // `CanToggleFloatingWindow` as otherwise the bounce would not behave @@ -1282,7 +1279,7 @@ // http://crbug.com/1094739 if (overview_controller->IsInStartAnimation()) return; - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); if (!window) { return; } @@ -1332,7 +1329,7 @@ void ToggleGameDashboard() { DCHECK(features::IsGameDashboardEnabled()); - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); DCHECK(window); // TODO(phshah): Connect to Game Dashboard. } @@ -1415,7 +1412,7 @@ } void ToggleMaximized() { - aura::Window* window = GetCandidateWindowForAction(); + aura::Window* window = GetTargetWindow(); if (!window) { return; } @@ -1425,7 +1422,7 @@ } bool ToggleMinimized() { - aura::Window* window = GetCandidateWindowForAction(); + aura::Window* window = window_util::GetTopWindow(); if (!window) { return false; } @@ -1444,7 +1441,7 @@ } void ToggleResizeLockMenu() { - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); auto* frame_view = NonClientFrameViewAsh::Get(window); frame_view->GetToggleResizeLockMenuCallback().Run(); } @@ -1483,7 +1480,7 @@ void ToggleMultitaskMenu() { DCHECK(chromeos::wm::features::IsWindowLayoutMenuEnabled()); - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); DCHECK(window); if (auto* tablet_mode_controller = Shell::Get()->tablet_mode_controller(); tablet_mode_controller->InTabletMode()) { @@ -1545,7 +1542,7 @@ } void TopWindowMinimizeOnBack() { - WindowState::Get(window_util::GetTopWindow())->Minimize(); + WindowState::Get(GetTargetWindow())->Minimize(); } void TouchHudClear() { @@ -1640,7 +1637,7 @@ const WMEvent event(action == WINDOW_CYCLE_SNAP_LEFT ? WM_EVENT_CYCLE_SNAP_PRIMARY : WM_EVENT_CYCLE_SNAP_SECONDARY); - aura::Window* window = window_util::GetTopWindow(); + aura::Window* window = GetTargetWindow(); DCHECK(window); auto* window_state = WindowState::Get(window);
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc index f54b7bb6..3a47b84 100644 --- a/ash/accelerators/accelerator_controller_unittest.cc +++ b/ash/accelerators/accelerator_controller_unittest.cc
@@ -652,8 +652,17 @@ EXPECT_FALSE(window_state->IsFullscreen()); } { + // Tests that window snap doesn't work while the window is minimized. controller_->PerformActionIfEnabled(WINDOW_MINIMIZE, {}); EXPECT_TRUE(window_state->IsMinimized()); + controller_->PerformActionIfEnabled(WINDOW_CYCLE_SNAP_LEFT, {}); + EXPECT_TRUE(window_state->IsMinimized()); + + // Unminimize the window. Now window snap should work. + controller_->PerformActionIfEnabled(WINDOW_MINIMIZE, {}); + EXPECT_FALSE(window_state->IsMinimized()); + controller_->PerformActionIfEnabled(WINDOW_CYCLE_SNAP_LEFT, {}); + EXPECT_TRUE(window_state->IsSnapped()); } }
diff --git a/ash/clipboard/clipboard_history_controller_impl.cc b/ash/clipboard/clipboard_history_controller_impl.cc index 3e061ed..ab7600f 100644 --- a/ash/clipboard/clipboard_history_controller_impl.cc +++ b/ash/clipboard/clipboard_history_controller_impl.cc
@@ -14,6 +14,7 @@ #include "ash/clipboard/clipboard_history_menu_model_adapter.h" #include "ash/clipboard/clipboard_history_resource_manager.h" #include "ash/clipboard/clipboard_history_util.h" +#include "ash/clipboard/clipboard_manager_bubble_view.h" #include "ash/clipboard/clipboard_nudge_constants.h" #include "ash/clipboard/clipboard_nudge_controller.h" #include "ash/clipboard/scoped_clipboard_history_pause_impl.h" @@ -43,6 +44,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" #include "base/task/thread_pool.h" +#include "base/time/time.h" #include "base/unguessable_token.h" #include "chromeos/crosapi/mojom/clipboard_history.mojom.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -66,7 +68,9 @@ #include "ui/events/keycodes/keyboard_codes_posix.h" #include "ui/events/types/event_type.h" #include "ui/gfx/geometry/rect.h" +#include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/controls/menu/menu_controller.h" +#include "ui/views/widget/widget.h" namespace ash { @@ -171,12 +175,14 @@ ~AcceleratorTarget() override = default; void OnMenuShown() { + CHECK(!features::IsClipboardHistoryRefreshEnabled()); Shell::Get()->accelerator_controller()->Register( {delete_selected_, tab_navigation_, shift_tab_navigation_}, /*accelerator_target=*/this); } void OnMenuClosed() { + CHECK(!features::IsClipboardHistoryRefreshEnabled()); Shell::Get()->accelerator_controller()->Unregister( delete_selected_, /*accelerator_target=*/this); Shell::Get()->accelerator_controller()->Unregister( @@ -262,10 +268,10 @@ resource_manager_(std::make_unique<ClipboardHistoryResourceManager>( clipboard_history_.get())), accelerator_target_(std::make_unique<AcceleratorTarget>(this)), - menu_delegate_(std::make_unique<MenuDelegate>(this)), nudge_controller_( std::make_unique<ClipboardNudgeController>(clipboard_history_.get(), - this)) { + this)), + menu_delegate_(std::make_unique<MenuDelegate>(this)) { clipboard_history_->AddObserver(this); resource_manager_->AddObserver(this); } @@ -277,25 +283,36 @@ void ClipboardHistoryControllerImpl::Shutdown() { if (IsMenuShowing()) { - context_menu_->Cancel(/*will_paste_item=*/false); + if (features::IsClipboardHistoryRefreshEnabled()) { + clipboard_manager_->CancelDialog(); + } else { + context_menu_->Cancel(/*will_paste_item=*/false); + } } nudge_controller_.reset(); } bool ClipboardHistoryControllerImpl::IsMenuShowing() const { - return context_menu_ && context_menu_->IsRunning(); + return features::IsClipboardHistoryRefreshEnabled() + ? clipboard_manager_ + : context_menu_ && context_menu_->IsRunning(); } void ClipboardHistoryControllerImpl::ToggleMenuShownByAccelerator( bool is_plain_text_paste) { if (IsMenuShowing()) { - // Before hiding the menu, paste the selected menu item, or the first item - // if none is selected. - PasteMenuItemData(context_menu_->GetSelectedMenuItemCommand().value_or( - clipboard_history_util::kFirstItemCommandId), - is_plain_text_paste - ? ClipboardHistoryPasteType::kPlainTextAccelerator - : ClipboardHistoryPasteType::kRichTextAccelerator); + if (features::IsClipboardHistoryRefreshEnabled()) { + // TODO(b/267694484): Paste rather than just closing here. + clipboard_manager_->CancelDialog(); + } else { + // Before hiding the menu, paste the selected menu item, or the first item + // if none is selected. + PasteMenuItemData(context_menu_->GetSelectedMenuItemCommand().value_or( + clipboard_history_util::kFirstItemCommandId), + is_plain_text_paste + ? ClipboardHistoryPasteType::kPlainTextAccelerator + : ClipboardHistoryPasteType::kRichTextAccelerator); + } return; } @@ -339,48 +356,57 @@ if (IsMenuShowing() || !CanShowMenu()) return false; - // Close the running context menu if any before showing the clipboard history - // menu. Because the clipboard history menu should not be nested. - auto* active_menu_instance = views::MenuController::GetActiveInstance(); - if (active_menu_instance) + // Close the running context menu, if any, before showing the clipboard + // history menu. + if (auto* active_menu_instance = views::MenuController::GetActiveInstance()) { active_menu_instance->Cancel(views::MenuController::ExitType::kAll); + } + last_menu_show_time_ = base::TimeTicks::Now(); last_menu_source_ = show_source; - // `Unretained()` is safe because `this` owns `context_menu_`. - context_menu_ = ClipboardHistoryMenuModelAdapter::Create( - menu_delegate_.get(), std::move(callback), - base::BindRepeating(&ClipboardHistoryControllerImpl::OnMenuClosed, - base::Unretained(this)), - clipboard_history_.get(), resource_manager_.get()); - context_menu_->Run(anchor_rect, source_type); + if (features::IsClipboardHistoryRefreshEnabled()) { + clipboard_manager_ = ClipboardManagerBubbleView::Create(anchor_rect); + clipboard_manager_->GetWidget()->AddObserver(this); + clipboard_manager_->GetWidget()->Show(); + } else { + // `Unretained()` is safe because `this` owns `context_menu_`. + context_menu_ = ClipboardHistoryMenuModelAdapter::Create( + menu_delegate_.get(), std::move(callback), + base::BindRepeating(&ClipboardHistoryControllerImpl::OnMenuClosed, + base::Unretained(this)), + clipboard_history_.get(), resource_manager_.get()); + context_menu_->Run(anchor_rect, source_type); - DCHECK(IsMenuShowing()); - accelerator_target_->OnMenuShown(); + DCHECK(IsMenuShowing()); + accelerator_target_->OnMenuShown(); + + // The first menu item should be selected as default after the clipboard + // history menu shows. Note that the menu item is selected asynchronously + // to avoid interference from synthesized mouse events. + menu_task_timer_.Start( + FROM_HERE, base::TimeDelta(), + base::BindOnce( + [](const base::WeakPtr<ClipboardHistoryControllerImpl>& + controller_weak_ptr) { + if (!controller_weak_ptr) { + return; + } + + controller_weak_ptr->context_menu_->SelectMenuItemWithCommandId( + clipboard_history_util::kFirstItemCommandId); + if (controller_weak_ptr + ->initial_item_selected_callback_for_test_) { + controller_weak_ptr->initial_item_selected_callback_for_test_ + .Run(); + } + }, + weak_ptr_factory_.GetWeakPtr())); + } base::UmaHistogramEnumeration("Ash.ClipboardHistory.ContextMenu.ShowMenu", show_source); - // The first menu item should be selected as default after the clipboard - // history menu shows. Note that the menu item is selected asynchronously - // to avoid the interference from synthesized mouse events. - menu_task_timer_.Start( - FROM_HERE, base::TimeDelta(), - base::BindOnce( - [](const base::WeakPtr<ClipboardHistoryControllerImpl>& - controller_weak_ptr) { - if (!controller_weak_ptr) - return; - - controller_weak_ptr->context_menu_->SelectMenuItemWithCommandId( - clipboard_history_util::kFirstItemCommandId); - if (controller_weak_ptr->initial_item_selected_callback_for_test_) { - controller_weak_ptr->initial_item_selected_callback_for_test_ - .Run(); - } - }, - weak_ptr_factory_.GetWeakPtr())); - for (auto& observer : observers_) { observer.OnClipboardHistoryMenuShown(show_source); } @@ -589,7 +615,12 @@ weak_ptr_factory_.InvalidateWeakPtrs(); if (!IsMenuShowing()) return; - context_menu_->Cancel(/*will_paste_item=*/false); + + if (features::IsClipboardHistoryRefreshEnabled()) { + clipboard_manager_->CancelDialog(); + } else { + context_menu_->Cancel(/*will_paste_item=*/false); + } } void ClipboardHistoryControllerImpl::OnOperationConfirmed(bool copy) { @@ -675,6 +706,15 @@ } } +void ClipboardHistoryControllerImpl::OnWidgetClosing(views::Widget* widget) { + CHECK_EQ(clipboard_manager_->GetWidget(), widget); + widget->RemoveObserver(this); + // When `widget` is destroyed, it will clean up `clipboard_manager_` as well. + clipboard_manager_ = nullptr; + base::UmaHistogramTimes("Ash.ClipboardHistory.ContextMenu.UserJourneyTime", + base::TimeTicks::Now() - last_menu_show_time_); +} + void ClipboardHistoryControllerImpl::ExecuteCommand(int command_id, int event_flags) { DCHECK(context_menu_);
diff --git a/ash/clipboard/clipboard_history_controller_impl.h b/ash/clipboard/clipboard_history_controller_impl.h index 4c6cf85..c4347295 100644 --- a/ash/clipboard/clipboard_history_controller_impl.h +++ b/ash/clipboard/clipboard_history_controller_impl.h
@@ -16,6 +16,7 @@ #include "ash/public/cpp/clipboard_history_controller.h" #include "base/functional/callback.h" #include "base/functional/callback_forward.h" +#include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" #include "base/one_shot_event.h" @@ -24,6 +25,7 @@ #include "base/unguessable_token.h" #include "base/values.h" #include "chromeos/crosapi/mojom/clipboard_history.mojom.h" +#include "ui/views/widget/widget_observer.h" namespace aura { class Window; @@ -38,6 +40,7 @@ class ClipboardHistoryItem; class ClipboardHistoryMenuModelAdapter; class ClipboardHistoryResourceManager; +class ClipboardManagerBubbleView; class ClipboardNudgeController; class ScopedClipboardHistoryPause; @@ -48,7 +51,8 @@ class ASH_EXPORT ClipboardHistoryControllerImpl : public ClipboardHistoryController, public ClipboardHistory::Observer, - public ClipboardHistoryResourceManager::Observer { + public ClipboardHistoryResourceManager::Observer, + public views::WidgetObserver { public: // Source and plain vs. rich text info for each paste. These values are used // in the Ash.ClipboardHistory.PasteType histogram and therefore cannot be @@ -173,6 +177,9 @@ void OnCachedImageModelUpdated( const std::vector<base::UnguessableToken>& menu_item_ids) override; + // views::WidgetObserver: + void OnWidgetClosing(views::Widget* widget) override; + // Invoked by `GetHistoryValues()` once all clipboard instances with images // have been encoded into PNGs. Calls `callback` with the clipboard history // list, which tracks what has been copied to the clipboard. If clipboard @@ -226,20 +233,28 @@ // Observers notified when clipboard history is shown, used, or updated. base::ObserverList<ClipboardHistoryController::Observer> observers_; - // The menu being shown. - std::unique_ptr<ClipboardHistoryMenuModelAdapter> context_menu_; // Used to keep track of what is being copied to the clipboard. std::unique_ptr<ClipboardHistory> clipboard_history_; // Manages resources for clipboard history. std::unique_ptr<ClipboardHistoryResourceManager> resource_manager_; // Detects the search+v key combo. std::unique_ptr<AcceleratorTarget> accelerator_target_; - // Handles events on the contextual menu. - std::unique_ptr<MenuDelegate> menu_delegate_; // Controller that shows contextual nudges for multipaste. std::unique_ptr<ClipboardNudgeController> nudge_controller_; - // How the user last caused `context_menu_` to show. + // Context menu displayed by `ShowMenu()` when the clipboard history refresh + // feature is disabled. Null when `MenuIsShowing()` is false. + std::unique_ptr<ClipboardHistoryMenuModelAdapter> context_menu_; + // Handles events on the `context_menu_`. + std::unique_ptr<MenuDelegate> menu_delegate_; + // Bubble view displayed by `ShowMenu()` when the clipboard history refresh + // feature is enabled. Null when `MenuIsShowing()` is false. + base::raw_ptr<ClipboardManagerBubbleView> clipboard_manager_ = nullptr; + + // The timestamp when the clipboard history menu was last shown. + base::TimeTicks last_menu_show_time_; + + // How the user last caused the clipboard history menu to show. crosapi::mojom::ClipboardHistoryControllerShowSource last_menu_source_; // Whether a paste is currently being performed.
diff --git a/ash/clipboard/clipboard_history_controller_unittest.cc b/ash/clipboard/clipboard_history_controller_unittest.cc index 6a58d552..68555ce 100644 --- a/ash/clipboard/clipboard_history_controller_unittest.cc +++ b/ash/clipboard/clipboard_history_controller_unittest.cc
@@ -31,6 +31,7 @@ #include "ui/base/clipboard/clipboard_data.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" #include "ui/base/models/image_model.h" +#include "ui/events/event_constants.h" #include "ui/events/test/event_generator.h" #include "ui/gfx/image/image_unittest_util.h" #include "ui/gfx/skia_util.h" @@ -182,227 +183,6 @@ std::unique_ptr<MockClipboardImageModelFactory> mock_image_factory_; }; -// Tests that search + v with no history fails to show a menu. -TEST_F(ClipboardHistoryControllerTest, NoHistoryNoMenu) { - base::HistogramTester histogram_tester; - ShowMenu(); - - EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 0); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 0); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", 0); -} - -// Tests that search + v shows a menu when there is something to show. -TEST_F(ClipboardHistoryControllerTest, ShowMenu) { - base::HistogramTester histogram_tester; - // Copy something to enable the clipboard history menu. - WriteTextToClipboardAndConfirm(u"test"); - - ShowMenu(); - - EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); - histogram_tester.ExpectBucketCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 1, 1); - // No UserJourneyTime should be recorded as the menu is still showing. - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 0); - histogram_tester.ExpectBucketCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 1, 1); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", 1); - - // Hide the menu. - PressAndReleaseKey(ui::VKEY_ESCAPE); - - EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); - histogram_tester.ExpectBucketCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 1, 1); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 1); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", 1); - - // Reshow the menu. - ShowMenu(); - - EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); - histogram_tester.ExpectBucketCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 1, 2); - - // No new UserJourneyTime histogram should be recorded as the menu is - // still showing. - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 1); - - histogram_tester.ExpectBucketCount( - "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 1, 2); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", 2); - // Hide the menu. - PressAndReleaseKey(ui::VKEY_ESCAPE); - - EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); - histogram_tester.ExpectTotalCount( - "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 2); -} - -// Verifies that the clipboard history is disabled in some user modes, which -// means that the clipboard history should not be recorded and meanwhile the -// menu view should not show (https://crbug.com/1100739). -TEST_F(ClipboardHistoryControllerTest, VerifyAvailabilityInUserModes) { - // Write one item into the clipboard history. - WriteTextToClipboardAndConfirm(u"text"); - - constexpr struct { - user_manager::UserType user_type; - bool is_enabled; - } kTestCases[] = {{user_manager::USER_TYPE_REGULAR, true}, - {user_manager::USER_TYPE_GUEST, true}, - {user_manager::USER_TYPE_PUBLIC_ACCOUNT, false}, - {user_manager::USER_TYPE_KIOSK_APP, false}, - {user_manager::USER_TYPE_CHILD, true}, - {user_manager::USER_TYPE_ARC_KIOSK_APP, false}, - {user_manager::USER_TYPE_WEB_KIOSK_APP, false}}; - - UserSession session; - session.session_id = 1u; - session.user_info.account_id = AccountId::FromUserEmail("user1@test.com"); - session.user_info.display_name = "User 1"; - session.user_info.display_email = "user1@test.com"; - - for (const auto& test_case : kTestCases) { - // Switch to the target user mode. - session.user_info.type = test_case.user_type; - Shell::Get()->session_controller()->UpdateUserSession(session); - - // Write a new item into the clipboard buffer. - { - ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste); - scw.WriteText(u"test"); - } - - if (test_case.is_enabled) { - WaitForOperationConfirmed(); - } else { - FlushMessageLoop(); - // Note: This check might not catch a scenario where a mode expected to be - // disabled actually allows writes to go through, because the operation - // might not have finished yet in that case. The history verification - // below mitigates the chance that such a bug would not be caught. - EXPECT_TRUE(operation_confirmed_future_.IsEmpty()); - } - - const std::list<ClipboardHistoryItem>& items = - Shell::Get()->clipboard_history_controller()->history()->GetItems(); - if (test_case.is_enabled) { - // Verify that the new item should be included in the clipboard history - // and the menu should be able to show. - EXPECT_EQ(2u, items.size()); - - ShowMenu(); - - EXPECT_TRUE( - Shell::Get()->clipboard_history_controller()->IsMenuShowing()); - - PressAndReleaseKey(ui::VKEY_ESCAPE); - - EXPECT_FALSE( - Shell::Get()->clipboard_history_controller()->IsMenuShowing()); - - // Restore the clipboard history by removing the new item. - ClipboardHistory* clipboard_history = const_cast<ClipboardHistory*>( - Shell::Get()->clipboard_history_controller()->history()); - clipboard_history->RemoveItemForId(items.begin()->id()); - } else { - // Verify that the new item should not be written into the clipboard - // history. The menu cannot show although the clipboard history is - // non-empty. - EXPECT_EQ(1u, items.size()); - - ShowMenu(); - - EXPECT_FALSE( - Shell::Get()->clipboard_history_controller()->IsMenuShowing()); - } - } -} - -// Verifies that the clipboard history menu is disabled when the screen for -// user adding shows. -TEST_F(ClipboardHistoryControllerTest, DisableInUserAddingScreen) { - WriteTextToClipboardAndConfirm(u"text"); - - // Emulate that the user adding screen displays. - Shell::Get()->session_controller()->ShowMultiProfileLogin(); - - // Try to show the clipboard history menu; verify that the menu does not show. - ShowMenu(); - EXPECT_FALSE(Shell::Get()->clipboard_history_controller()->IsMenuShowing()); -} - -// Tests that pressing and holding VKEY_V, then the search key (EF_COMMAND_DOWN) -// does not show the AppList. -TEST_F(ClipboardHistoryControllerTest, VThenSearchDoesNotShowLauncher) { - GetEventGenerator()->PressKey(ui::VKEY_V, /*event_flags=*/0); - GetEventGenerator()->PressKey(ui::VKEY_LWIN, /*event_flags=*/0); - - // Release VKEY_V, which could trigger a key released accelerator. - GetEventGenerator()->ReleaseKey(ui::VKEY_V, /*event_flags=*/0); - - EXPECT_FALSE(Shell::Get()->app_list_controller()->IsVisible( - /*display_id=*/absl::nullopt)); - - // Release VKEY_LWIN(search/launcher), which could trigger the app list. - GetEventGenerator()->ReleaseKey(ui::VKEY_LWIN, /*event_flags=*/0); - - EXPECT_FALSE(Shell::Get()->app_list_controller()->IsVisible( - /*display_id=*/absl::nullopt)); -} - -// Tests that clearing the clipboard clears ClipboardHistory -TEST_F(ClipboardHistoryControllerTest, ClearClipboardClearsHistory) { - // Write a single item to ClipboardHistory. - WriteTextToClipboardAndConfirm(u"test"); - - // Clear the clipboard. - ui::Clipboard::GetForCurrentThread()->Clear(ui::ClipboardBuffer::kCopyPaste); - FlushMessageLoop(); - - // History should also be cleared. - const std::list<ClipboardHistoryItem>& items = - Shell::Get()->clipboard_history_controller()->history()->GetItems(); - EXPECT_EQ(0u, items.size()); - - ShowMenu(); - - EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); -} - -// Tests that clearing the clipboard closes the ClipboardHistory menu. -TEST_F(ClipboardHistoryControllerTest, - ClearingClipboardClosesClipboardHistory) { - // Write a single item to ClipboardHistory. - WriteTextToClipboardAndConfirm(u"test"); - - ASSERT_TRUE(Shell::Get()->cursor_manager()->IsCursorVisible()); - - ShowMenu(); - EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); - - // The cursor is visible after showing the clipboard history menu through - // the accelerator. - EXPECT_TRUE(Shell::Get()->cursor_manager()->IsCursorVisible()); - - ui::Clipboard::GetForCurrentThread()->Clear(ui::ClipboardBuffer::kCopyPaste); - FlushMessageLoop(); - - EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); -} - TEST_F(ClipboardHistoryControllerTest, EncodeImage) { // Write a bitmap to ClipboardHistory. SkBitmap test_bitmap = gfx::test::CreateBitmap(3, 2); @@ -493,16 +273,354 @@ TestEnteringLockScreen(); } -class ClipboardHistoryControllerShowSourceTest +// Base class for tests of Clipboard History parameterized by whether the +// `kClipboardHistoryRefresh` feature flag is enabled. +class ClipboardHistoryControllerRefreshTest : public ClipboardHistoryControllerTest, - public testing::WithParamInterface<ClipboardHistoryControllerShowSource> { + public testing::WithParamInterface</*refresh_enabled=*/bool> { public: - ClipboardHistoryControllerShowSource GetSource() const { return GetParam(); } + ClipboardHistoryControllerRefreshTest() { + std::vector<base::test::FeatureRef> refresh_features = { + features::kClipboardHistoryRefresh, chromeos::features::kJelly}; + std::vector<base::test::FeatureRef> enabled_features; + std::vector<base::test::FeatureRef> disabled_features; + (IsClipboardHistoryRefreshEnabled() ? enabled_features : disabled_features) + .swap(refresh_features); + scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); + } + + bool IsClipboardHistoryRefreshEnabled() const { return GetParam(); } + + // Some toasts can display on multiple root windows, so the caller can use + // `root_window` to target a toast on a specific root window. + ToastOverlay* GetCurrentOverlay( + aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { + return Shell::Get()->toast_manager()->GetCurrentOverlayForTesting( + root_window); + } + + views::LabelButton* GetDismissButton( + aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { + ToastOverlay* overlay = GetCurrentOverlay(root_window); + DCHECK(overlay); + return overlay->dismiss_button_for_testing(); + } + + void ClickDismissButton( + aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { + views::LabelButton* dismiss_button = GetDismissButton(root_window); + const gfx::Point button_center = + dismiss_button->GetBoundsInScreen().CenterPoint(); + auto* event_generator = GetEventGenerator(); + event_generator->MoveMouseTo(button_center); + event_generator->ClickLeftButton(); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; }; INSTANTIATE_TEST_SUITE_P(All, - ClipboardHistoryControllerShowSourceTest, - testing::ValuesIn(GetClipboardHistoryShowSources())); + ClipboardHistoryControllerRefreshTest, + /*refresh_enabled=*/testing::Bool()); + +// Tests that search + v with no history fails to show a menu. +TEST_P(ClipboardHistoryControllerRefreshTest, NoHistoryNoMenu) { + base::HistogramTester histogram_tester; + ShowMenu(); + + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", 0); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 0); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", 0); +} + +// Tests that search + v shows a menu when there is something to show. +TEST_P(ClipboardHistoryControllerRefreshTest, ShowMenu) { + base::HistogramTester histogram_tester; + + // Copy something to enable the clipboard history menu. + WriteTextToClipboardAndConfirm(u"test"); + + // TODO(b/267694484): Do not fork these values once the menu can show items + // with the refresh feature enabled. + const int num_items_shown = IsClipboardHistoryRefreshEnabled() ? 0 : 1; + int num_items_shown_samples = 0; + ShowMenu(); + + if (!IsClipboardHistoryRefreshEnabled()) { + ++num_items_shown_samples; + } + + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + // No user journey time should be recorded as the menu is still showing. + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 0); + histogram_tester.ExpectBucketCount( + "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", num_items_shown, + num_items_shown_samples); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", + num_items_shown_samples); + + // Hide the menu. + PressAndReleaseKey(ui::VKEY_ESCAPE); + + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 1); + histogram_tester.ExpectBucketCount( + "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", num_items_shown, + num_items_shown_samples); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", + num_items_shown_samples); + + // Reshow the menu. + ShowMenu(); + + if (!IsClipboardHistoryRefreshEnabled()) { + ++num_items_shown_samples; + } + + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + + // No new UserJourneyTime histogram should be recorded as the menu is + // still showing. + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 1); + histogram_tester.ExpectBucketCount( + "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", num_items_shown, + num_items_shown_samples); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", + num_items_shown_samples); + + // Hide the menu. + PressAndReleaseKey(ui::VKEY_ESCAPE); + + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.UserJourneyTime", 2); + histogram_tester.ExpectBucketCount( + "Ash.ClipboardHistory.ContextMenu.NumberOfItemsShown", num_items_shown, + num_items_shown_samples); + histogram_tester.ExpectTotalCount( + "Ash.ClipboardHistory.ContextMenu.DisplayFormatShown", + num_items_shown_samples); +} + +// Verifies that the clipboard history is disabled in some user modes, which +// means that the clipboard history should not be recorded and meanwhile the +// menu view should not show (https://crbug.com/1100739). +TEST_P(ClipboardHistoryControllerRefreshTest, VerifyAvailabilityInUserModes) { + // Write one item into the clipboard history. + WriteTextToClipboardAndConfirm(u"text"); + + constexpr struct { + user_manager::UserType user_type; + bool is_enabled; + } kTestCases[] = {{user_manager::USER_TYPE_REGULAR, true}, + {user_manager::USER_TYPE_GUEST, true}, + {user_manager::USER_TYPE_PUBLIC_ACCOUNT, false}, + {user_manager::USER_TYPE_KIOSK_APP, false}, + {user_manager::USER_TYPE_CHILD, true}, + {user_manager::USER_TYPE_ARC_KIOSK_APP, false}, + {user_manager::USER_TYPE_WEB_KIOSK_APP, false}}; + + UserSession session; + session.session_id = 1u; + session.user_info.account_id = AccountId::FromUserEmail("user1@test.com"); + session.user_info.display_name = "User 1"; + session.user_info.display_email = "user1@test.com"; + + for (const auto& test_case : kTestCases) { + // Switch to the target user mode. + session.user_info.type = test_case.user_type; + Shell::Get()->session_controller()->UpdateUserSession(session); + + // Write a new item into the clipboard buffer. + { + ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste); + scw.WriteText(u"test"); + } + + if (test_case.is_enabled) { + WaitForOperationConfirmed(); + } else { + FlushMessageLoop(); + // Note: This check might not catch a scenario where a mode expected to be + // disabled actually allows writes to go through, because the operation + // might not have finished yet in that case. The history verification + // below mitigates the chance that such a bug would not be caught. + EXPECT_TRUE(operation_confirmed_future_.IsEmpty()); + } + + const std::list<ClipboardHistoryItem>& items = + Shell::Get()->clipboard_history_controller()->history()->GetItems(); + if (test_case.is_enabled) { + // Verify that the new item should be included in the clipboard history + // and the menu should be able to show. + EXPECT_EQ(items.size(), 2u); + + ShowMenu(); + + EXPECT_TRUE( + Shell::Get()->clipboard_history_controller()->IsMenuShowing()); + + PressAndReleaseKey(ui::VKEY_ESCAPE); + + EXPECT_FALSE( + Shell::Get()->clipboard_history_controller()->IsMenuShowing()); + + if (IsClipboardHistoryRefreshEnabled()) { + // Wait for the clipboard manager to be fully destroyed so that the + // presence of an open modal window does not block the next test case's + // accelerator action from being performed. + FlushMessageLoop(); + } + + // Restore the clipboard history by removing the new item. + ClipboardHistory* clipboard_history = const_cast<ClipboardHistory*>( + Shell::Get()->clipboard_history_controller()->history()); + clipboard_history->RemoveItemForId(items.begin()->id()); + } else { + // Verify that the new item should not be written into the clipboard + // history. The menu cannot show although the clipboard history is + // non-empty. + EXPECT_EQ(items.size(), 1u); + + ShowMenu(); + + EXPECT_FALSE( + Shell::Get()->clipboard_history_controller()->IsMenuShowing()); + } + } +} + +// Verifies that the clipboard history menu is disabled when the screen for +// user adding shows. +TEST_P(ClipboardHistoryControllerRefreshTest, DisableInUserAddingScreen) { + WriteTextToClipboardAndConfirm(u"text"); + + // Emulate that the user adding screen displays. + Shell::Get()->session_controller()->ShowMultiProfileLogin(); + + // Try to show the clipboard history menu; verify that the menu does not show. + ShowMenu(); + EXPECT_FALSE(Shell::Get()->clipboard_history_controller()->IsMenuShowing()); +} + +// Tests that pressing and holding VKEY_V, then the search key (EF_COMMAND_DOWN) +// does not show the AppList. +TEST_P(ClipboardHistoryControllerRefreshTest, VThenSearchDoesNotShowLauncher) { + GetEventGenerator()->PressKey(ui::VKEY_V, ui::EF_NONE); + GetEventGenerator()->PressKey(ui::VKEY_LWIN, ui::EF_NONE); + + // Release VKEY_V, which could trigger a key released accelerator. + GetEventGenerator()->ReleaseKey(ui::VKEY_V, ui::EF_NONE); + + EXPECT_FALSE(Shell::Get()->app_list_controller()->IsVisible( + /*display_id=*/absl::nullopt)); + + // Release VKEY_LWIN(search/launcher), which could trigger the app list. + GetEventGenerator()->ReleaseKey(ui::VKEY_LWIN, ui::EF_NONE); + + EXPECT_FALSE(Shell::Get()->app_list_controller()->IsVisible( + /*display_id=*/absl::nullopt)); +} + +// Tests that clearing the clipboard clears ClipboardHistory +TEST_P(ClipboardHistoryControllerRefreshTest, ClearClipboardClearsHistory) { + // Write a single item to ClipboardHistory. + WriteTextToClipboardAndConfirm(u"test"); + + // Clear the clipboard. + ui::Clipboard::GetForCurrentThread()->Clear(ui::ClipboardBuffer::kCopyPaste); + FlushMessageLoop(); + + // History should also be cleared. + const std::list<ClipboardHistoryItem>& items = + Shell::Get()->clipboard_history_controller()->history()->GetItems(); + EXPECT_TRUE(items.empty()); + + ShowMenu(); + + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); +} + +// Tests that clearing the clipboard closes the ClipboardHistory menu. +TEST_P(ClipboardHistoryControllerRefreshTest, + ClearingClipboardClosesClipboardHistory) { + // Write a single item to ClipboardHistory. + WriteTextToClipboardAndConfirm(u"test"); + + ASSERT_TRUE(Shell::Get()->cursor_manager()->IsCursorVisible()); + + ShowMenu(); + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + + // The cursor is visible after showing the clipboard history menu through + // the accelerator. + EXPECT_TRUE(Shell::Get()->cursor_manager()->IsCursorVisible()); + + ui::Clipboard::GetForCurrentThread()->Clear(ui::ClipboardBuffer::kCopyPaste); + FlushMessageLoop(); + + EXPECT_FALSE(GetClipboardHistoryController()->IsMenuShowing()); +} + +// Tests that a toast is shown if something was copied to clipboard history. +TEST_P(ClipboardHistoryControllerRefreshTest, ShowToast) { + // Copy something to enable the clipboard history menu. + WriteTextToClipboardAndConfirm(u"test"); + + ToastManagerImpl* manager_ = Shell::Get()->toast_manager(); + if (IsClipboardHistoryRefreshEnabled()) { + EXPECT_TRUE(manager_->IsRunning(kClipboardCopyToastId)); + ClickDismissButton(); + EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); + } else { + EXPECT_FALSE(manager_->IsRunning(kClipboardCopyToastId)); + } +} + +class ClipboardHistoryControllerShowSourceTest + : public ClipboardHistoryControllerTest, + public testing::WithParamInterface< + std::tuple<ClipboardHistoryControllerShowSource, + /*refresh_enabled=*/bool>> { + public: + ClipboardHistoryControllerShowSourceTest() { + std::vector<base::test::FeatureRef> refresh_features = { + features::kClipboardHistoryRefresh, chromeos::features::kJelly}; + std::vector<base::test::FeatureRef> enabled_features; + std::vector<base::test::FeatureRef> disabled_features; + (IsClipboardHistoryRefreshEnabled() ? enabled_features : disabled_features) + .swap(refresh_features); + scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); + } + + ClipboardHistoryControllerShowSource GetSource() const { + return std::get<0>(GetParam()); + } + + bool IsClipboardHistoryRefreshEnabled() const { + return std::get<1>(GetParam()); + } + + private: + base::test::ScopedFeatureList scoped_feature_list_; +}; + +INSTANTIATE_TEST_SUITE_P( + All, + ClipboardHistoryControllerShowSourceTest, + testing::Combine(testing::ValuesIn(GetClipboardHistoryShowSources()), + /*refresh_enabled=*/testing::Bool())); // Tests that `ShowMenu()` returns whether the menu was shown successfully. TEST_P(ClipboardHistoryControllerShowSourceTest, ShowMenuReturnsSuccess) { @@ -556,6 +674,12 @@ // Tests that the client-provided `OnMenuClosingCallback` runs before the menu // closes. TEST_P(ClipboardHistoryControllerShowSourceTest, OnMenuClosingCallback) { + if (IsClipboardHistoryRefreshEnabled()) { + // TODO(b/267694484): Do not skip this test case once the menu can paste + // with the refresh feature enabled. + GTEST_SKIP(); + } + base::test::RepeatingTestFuture<bool> on_menu_closing_future; base::HistogramTester histogram_tester; @@ -599,72 +723,4 @@ /*expected_bucket_count=*/1); } -// Base class for tests of Clipboard History parameterized by whether the -// `kClipboardHistoryRefresh` feature flag is enabled. -class ClipboardHistoryControllerRefreshTest - : public ClipboardHistoryControllerTest, - public testing::WithParamInterface</*refresh_enabled=*/bool> { - public: - ClipboardHistoryControllerRefreshTest() { - std::vector<base::test::FeatureRef> refresh_features = { - features::kClipboardHistoryRefresh, chromeos::features::kJelly}; - std::vector<base::test::FeatureRef> enabled_features; - std::vector<base::test::FeatureRef> disabled_features; - (IsClipboardHistoryRefreshEnabled() ? enabled_features : disabled_features) - .swap(refresh_features); - scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features); - } - - bool IsClipboardHistoryRefreshEnabled() const { return GetParam(); } - - // Some toasts can display on multiple root windows, so the caller can use - // `root_window` to target a toast on a specific root window. - ToastOverlay* GetCurrentOverlay( - aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { - return Shell::Get()->toast_manager()->GetCurrentOverlayForTesting( - root_window); - } - - views::LabelButton* GetDismissButton( - aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { - ToastOverlay* overlay = GetCurrentOverlay(root_window); - DCHECK(overlay); - return overlay->dismiss_button_for_testing(); - } - - void ClickDismissButton( - aura::Window* root_window = Shell::GetRootWindowForNewWindows()) { - views::LabelButton* dismiss_button = GetDismissButton(root_window); - const gfx::Point button_center = - dismiss_button->GetBoundsInScreen().CenterPoint(); - auto* event_generator = GetEventGenerator(); - event_generator->MoveMouseTo(button_center); - event_generator->ClickLeftButton(); - } - - private: - base::test::ScopedFeatureList scoped_feature_list_; -}; - -INSTANTIATE_TEST_SUITE_P(All, - ClipboardHistoryControllerRefreshTest, - /*refresh_enabled=*/testing::Bool()); - -// Tests a toast is shown if something was copied to clipboard history. -TEST_P(ClipboardHistoryControllerRefreshTest, ShowToast) { - // Copy something to enable the clipboard history menu. - WriteTextToClipboardAndConfirm(u"test"); - - ToastManagerImpl* manager_ = Shell::Get()->toast_manager(); - if (IsClipboardHistoryRefreshEnabled()) { - EXPECT_TRUE(manager_->IsRunning(kClipboardCopyToastId)); - - ClickDismissButton(); - EXPECT_TRUE(GetClipboardHistoryController()->IsMenuShowing()); - - } else { - EXPECT_FALSE(manager_->IsRunning(kClipboardCopyToastId)); - } -} - } // namespace ash
diff --git a/ash/clipboard/clipboard_manager_bubble_view.cc b/ash/clipboard/clipboard_manager_bubble_view.cc new file mode 100644 index 0000000..abe41ed9 --- /dev/null +++ b/ash/clipboard/clipboard_manager_bubble_view.cc
@@ -0,0 +1,113 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/clipboard/clipboard_manager_bubble_view.h" + +#include <memory> + +#include "ash/bubble/bubble_constants.h" +#include "ash/style/system_shadow.h" +#include "base/memory/ptr_util.h" +#include "ui/accessibility/ax_enums.mojom.h" +#include "ui/accessibility/ax_node_data.h" +#include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/chromeos/styles/cros_tokens_color_mappings.h" +#include "ui/gfx/geometry/insets.h" +#include "ui/gfx/geometry/rect.h" +#include "ui/views/bubble/bubble_border.h" +#include "ui/views/bubble/bubble_frame_view.h" +#include "ui/views/highlight_border.h" + +using views::BubbleBorder; +using views::BubbleFrameView; +using views::HighlightBorder; +using views::NonClientFrameView; +using views::Widget; + +namespace ash { + +namespace { + +constexpr int kClipboardManagerCornerRadius = 12; +constexpr int kClipboardManagerHeight = 100; +constexpr int kClipboardManagerWidth = 320; + +} // namespace + +// static +ClipboardManagerBubbleView* ClipboardManagerBubbleView::Create( + const gfx::Rect& anchor_rect) { + auto* bubble_view = new ClipboardManagerBubbleView(anchor_rect); + // Future calls to `GetWidget()` will return the `Widget` initialized in + // `CreateBubble()`. + CreateBubble(base::WrapUnique(bubble_view)); + return bubble_view; +} + +ClipboardManagerBubbleView::~ClipboardManagerBubbleView() = default; + +gfx::Size ClipboardManagerBubbleView::CalculatePreferredSize() const { + // TODO(b/267694484): Calculate height based on clipboard contents. + return gfx::Size(kClipboardManagerWidth, kClipboardManagerHeight); +} + +std::unique_ptr<NonClientFrameView> +ClipboardManagerBubbleView::CreateNonClientFrameView(Widget* widget) { + auto frame = BubbleDialogDelegateView::CreateNonClientFrameView(widget); + + auto* bubble_border = + static_cast<BubbleFrameView*>(frame.get())->bubble_border(); + bubble_border->set_avoid_shadow_overlap(true); + bubble_border->set_md_shadow_elevation( + SystemShadow::GetElevationFromType(SystemShadow::Type::kElevation12)); + return frame; +} + +void ClipboardManagerBubbleView::GetAccessibleNodeData( + ui::AXNodeData* node_data) { + node_data->role = ax::mojom::Role::kMenu; + node_data->SetNameChecked(GetAccessibleWindowTitle()); +} + +std::u16string ClipboardManagerBubbleView::GetAccessibleWindowTitle() const { + // TODO(b/267694484): Finalize a11y label. + return u"[i18n] Clipboard menu"; +} + +void ClipboardManagerBubbleView::OnThemeChanged() { + views::BubbleDialogDelegateView::OnThemeChanged(); + + set_color( + GetColorProvider()->GetColor(cros_tokens::kCrosSysSystemBaseElevated)); +} + +ClipboardManagerBubbleView::ClipboardManagerBubbleView( + const gfx::Rect& anchor_rect) { + SetAnchorRect(anchor_rect); + SetButtons(ui::DIALOG_BUTTON_NONE); + set_force_create_contents_background(true); + set_margins(gfx::Insets()); + set_corner_radius(kClipboardManagerCornerRadius); + SetBorder(std::make_unique<views::HighlightBorder>( + kClipboardManagerCornerRadius, + views::HighlightBorder::Type::kHighlightBorderOnShadow)); + + // TODO(b/267694484): Create a clipboard manager container that serves as a + // parent so that the launcher will know not to close when the manager shows. + set_has_parent(false); + + // Like other menus, the clipboard manager should close in response to the Esc + // key or the loss of focus. + set_close_on_deactivate(true); + + // TODO(b/267694484): Enable arrow key traversal once the menu has items. + // TODO(b/267694484): Set initially focused view once the menu has items. + + SetAccessibleWindowRole(ax::mojom::Role::kMenu); +} + +BEGIN_METADATA(ClipboardManagerBubbleView, views::BubbleDialogDelegateView) +END_METADATA + +} // namespace ash
diff --git a/ash/clipboard/clipboard_manager_bubble_view.h b/ash/clipboard/clipboard_manager_bubble_view.h new file mode 100644 index 0000000..edda7bf --- /dev/null +++ b/ash/clipboard/clipboard_manager_bubble_view.h
@@ -0,0 +1,48 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_CLIPBOARD_CLIPBOARD_MANAGER_BUBBLE_VIEW_H_ +#define ASH_CLIPBOARD_CLIPBOARD_MANAGER_BUBBLE_VIEW_H_ + +#include "ash/ash_export.h" +#include "ui/accessibility/ax_enums.mojom-forward.h" +#include "ui/base/metadata/metadata_header_macros.h" +#include "ui/views/bubble/bubble_dialog_delegate_view.h" + +namespace gfx { +class Rect; +} // namespace gfx + +namespace ash { + +// Contents view class for the clipboard manager widget. +class ASH_EXPORT ClipboardManagerBubbleView + : public views::BubbleDialogDelegateView { + public: + METADATA_HEADER(ClipboardManagerBubbleView); + + // Returns a pointer to the `ClipboardManagerBubbleView` whose bubble widget + // has been initialized. Owned by said widget. + static ClipboardManagerBubbleView* Create(const gfx::Rect& anchor_rect); + + ClipboardManagerBubbleView(const ClipboardManagerBubbleView&) = delete; + ClipboardManagerBubbleView& operator=(const ClipboardManagerBubbleView&) = + delete; + ~ClipboardManagerBubbleView() override; + + private: + // views::BubbleDialogDelegateView: + gfx::Size CalculatePreferredSize() const override; + std::unique_ptr<views::NonClientFrameView> CreateNonClientFrameView( + views::Widget* widget) override; + void GetAccessibleNodeData(ui::AXNodeData* node_data) override; + std::u16string GetAccessibleWindowTitle() const override; + void OnThemeChanged() override; + + explicit ClipboardManagerBubbleView(const gfx::Rect& anchor_rect); +}; + +} // namespace ash + +#endif // ASH_CLIPBOARD_CLIPBOARD_MANAGER_BUBBLE_VIEW_H_
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc index 5f514c0..78d5d64 100644 --- a/ash/constants/ash_features.cc +++ b/ash/constants/ash_features.cc
@@ -258,6 +258,9 @@ // Enable Big GL when using Borealis. BASE_FEATURE(kBorealisBigGl, "BorealisBigGl", base::FEATURE_ENABLED_BY_DEFAULT); +// Enable dGPU when using Borealis. +BASE_FEATURE(kBorealisDGPU, "BorealisDGPU", base::FEATURE_ENABLED_BY_DEFAULT); + // Enable experimental disk management changes for Borealis. BASE_FEATURE(kBorealisDiskManagement, "BorealisDiskManagement",
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h index 1a68b7e..acdf39d 100644 --- a/ash/constants/ash_features.h +++ b/ash/constants/ash_features.h
@@ -76,6 +76,7 @@ COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kRobustAudioDeviceSelectLogic); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBorealisBigGl); +COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBorealisDGPU); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBorealisDiskManagement); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBorealisForceBetaClient); COMPONENT_EXPORT(ASH_CONSTANTS) BASE_DECLARE_FEATURE(kBorealisForceDoubleScale);
diff --git a/ash/public/cpp/system_notification_builder.cc b/ash/public/cpp/system_notification_builder.cc index ac3289e..42f4862d 100644 --- a/ash/public/cpp/system_notification_builder.cc +++ b/ash/public/cpp/system_notification_builder.cc
@@ -115,6 +115,11 @@ return *this; } +const message_center::RichNotificationData& +SystemNotificationBuilder::GetOptionalFields() { + return optional_fields_; +} + SystemNotificationBuilder& SystemNotificationBuilder::SetWarningLevel( message_center::SystemNotificationWarningLevel warning_level) { warning_level_ = warning_level;
diff --git a/ash/public/cpp/system_notification_builder.h b/ash/public/cpp/system_notification_builder.h index 8ba5f41..700e1e0 100644 --- a/ash/public/cpp/system_notification_builder.h +++ b/ash/public/cpp/system_notification_builder.h
@@ -238,6 +238,9 @@ SystemNotificationBuilder& SetOptionalFields( const message_center::RichNotificationData& optional_fields); + // Returns currently set optional fields. + const message_center::RichNotificationData& GetOptionalFields(); + // Set the warning level. // Default: `message_center::SystemNotificationWarningLevel::NORMAL` SystemNotificationBuilder& SetWarningLevel(
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index 45bfea05..dcf18305 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -236,7 +236,6 @@ "palette_tray_icon_projector_yellow.icon", "pause.icon", "phone_hub_battery_saver.icon", - "phone_hub_battery_saver_outline.icon", "phone_hub_battery_saver_outline_mask.icon", "phone_hub_camera_roll_item_video.icon", "phone_hub_camera_roll_menu_download.icon", @@ -470,16 +469,12 @@ "unified_menu_accessibility.icon", "unified_menu_autozoom.icon", "unified_menu_battery_alert.icon", - "unified_menu_battery_alert_outline.icon", "unified_menu_battery_alert_outline_mask.icon", "unified_menu_battery_bolt.icon", - "unified_menu_battery_bolt_outline.icon", "unified_menu_battery_bolt_outline_mask.icon", "unified_menu_battery_unreliable.icon", - "unified_menu_battery_unreliable_outline.icon", "unified_menu_battery_unreliable_outline_mask.icon", "unified_menu_battery_x.icon", - "unified_menu_battery_x_outline.icon", "unified_menu_battery_x_outline_mask.icon", "unified_menu_bluetooth.icon", "unified_menu_bluetooth_connected.icon",
diff --git a/ash/resources/vector_icons/phone_hub_battery_saver_outline.icon b/ash/resources/vector_icons/phone_hub_battery_saver_outline.icon deleted file mode 100644 index 3785d67..0000000 --- a/ash/resources/vector_icons/phone_hub_battery_saver_outline.icon +++ /dev/null
@@ -1,46 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 10.59f, 9.85f, -R_LINE_TO, 2.36f, 0, -R_V_LINE_TO, 1.18f, -R_H_LINE_TO, -2.36f, -R_V_LINE_TO, 2.36f, -H_LINE_TO, 9.41f, -R_LINE_TO, 0, -2.36f, -H_LINE_TO, 7.05f, -R_LINE_TO, 0, -1.18f, -R_LINE_TO, 2.36f, 0, -R_LINE_TO, 0, -2.36f, -R_H_LINE_TO, 1.18f, -V_LINE_TO, 9.85f, -CLOSE, -R_MOVE_TO, -1.78f, -0.6f, -R_LINE_TO, 0, -1.76f, -R_CUBIC_TO, 0, -0.16f, 0.06f, -0.31f, 0.18f, -0.42f, -R_CUBIC_TO, 0.11f, -0.11f, 0.27f, -0.18f, 0.42f, -0.18f, -R_H_LINE_TO, 1.18f, -R_CUBIC_TO, 0.16f, 0, 0.31f, 0.06f, 0.42f, 0.18f, -R_CUBIC_TO, 0.11f, 0.11f, 0.18f, 0.27f, 0.18f, 0.42f, -V_LINE_TO, 9.25f, -R_H_LINE_TO, 1.76f, -R_CUBIC_TO, 0.33f, 0, 0.6f, 0.27f, 0.6f, 0.6f, -R_V_LINE_TO, 1.18f, -R_CUBIC_TO, 0, 0.16f, -0.06f, 0.31f, -0.18f, 0.42f, -R_CUBIC_TO, -0.11f, 0.11f, -0.27f, 0.18f, -0.42f, 0.18f, -R_H_LINE_TO, -1.76f, -R_V_LINE_TO, 1.76f, -R_CUBIC_TO, 0, 0.16f, -0.06f, 0.31f, -0.18f, 0.42f, -R_CUBIC_TO, -0.11f, 0.11f, -0.27f, 0.18f, -0.42f, 0.18f, -R_LINE_TO, -1.18f, 0, -R_CUBIC_TO, -0.33f, 0, -0.6f, -0.27f, -0.6f, -0.6f, -R_V_LINE_TO, -1.76f, -H_LINE_TO, 7.05f, -R_CUBIC_TO, -0.33f, 0, -0.6f, -0.27f, -0.6f, -0.6f, -R_LINE_TO, 0, -1.18f, -R_CUBIC_TO, 0, -0.16f, 0.06f, -0.31f, 0.18f, -0.42f, -R_CUBIC_TO, 0.11f, -0.11f, 0.27f, -0.18f, 0.42f, -0.18f, -R_H_LINE_TO, 1.76f, -CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_battery_alert_outline.icon b/ash/resources/vector_icons/unified_menu_battery_alert_outline.icon deleted file mode 100644 index 8039026..0000000 --- a/ash/resources/vector_icons/unified_menu_battery_alert_outline.icon +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 11.55f, 6.5f, -CUBIC_TO, 11.55f, 6.06f, 11.19f, 5.7f, 10.75f, 5.7f, -H_LINE_TO, 9.25f, -CUBIC_TO, 8.81f, 5.7f, 8.45f, 6.06f, 8.45f, 6.5f, -V_LINE_TO, 12, -CUBIC_TO, 8.45f, 12.19f, 8.52f, 12.36f, 8.63f, 12.5f, -CUBIC_TO, 8.52f, 12.64f, 8.45f, 12.81f, 8.45f, 13, -V_LINE_TO, 14.5f, -CUBIC_TO, 8.45f, 14.94f, 8.81f, 15.3f, 9.25f, 15.3f, -H_LINE_TO, 10.75f, -CUBIC_TO, 11.19f, 15.3f, 11.55f, 14.94f, 11.55f, 14.5f, -V_LINE_TO, 13, -CUBIC_TO, 11.55f, 12.81f, 11.48f, 12.64f, 11.37f, 12.5f, -CUBIC_TO, 11.48f, 12.36f, 11.55f, 12.19f, 11.55f, 12, -V_LINE_TO, 6.5f, -CLOSE, -MOVE_TO, 10.75f, 6.5f, -V_LINE_TO, 12, -H_LINE_TO, 9.25f, -V_LINE_TO, 6.5f, -H_LINE_TO, 10.75f, -CLOSE, -MOVE_TO, 10.75f, 13, -V_LINE_TO, 14.5f, -H_LINE_TO, 9.25f, -V_LINE_TO, 13, -H_LINE_TO, 10.75f, -CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_battery_bolt_outline.icon b/ash/resources/vector_icons/unified_menu_battery_bolt_outline.icon deleted file mode 100644 index cf4376f..0000000 --- a/ash/resources/vector_icons/unified_menu_battery_bolt_outline.icon +++ /dev/null
@@ -1,29 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 7.25f, 11.44f, -CUBIC_TO, 7.1f, 11.21f, 7.09f, 10.91f, 7.21f, 10.67f, -LINE_TO, 9.98f, 5.14f, -CUBIC_TO, 10.14f, 4.81f, 10.51f, 4.64f, 10.87f, 4.72f, -CUBIC_TO, 11.24f, 4.81f, 11.49f, 5.13f, 11.49f, 5.5f, -V_LINE_TO, 8.84f, -H_LINE_TO, 12.07f, -CUBIC_TO, 12.35f, 8.84f, 12.61f, 8.99f, 12.75f, 9.22f, -CUBIC_TO, 12.9f, 9.46f, 12.91f, 9.75f, 12.79f, 10, -LINE_TO, 10.03f, 15.52f, -CUBIC_TO, 9.86f, 15.86f, 9.49f, 16.03f, 9.13f, 15.95f, -CUBIC_TO, 8.76f, 15.86f, 8.51f, 15.54f, 8.51f, 15.17f, -V_LINE_TO, 11.82f, -H_LINE_TO, 7.93f, -CUBIC_TO, 7.65f, 11.82f, 7.39f, 11.68f, 7.25f, 11.44f, -CLOSE, -MOVE_TO, 9.31f, 11.02f, -V_LINE_TO, 15.17f, -LINE_TO, 12.07f, 9.64f, -H_LINE_TO, 10.69f, -V_LINE_TO, 5.5f, -LINE_TO, 7.93f, 11.02f, -H_LINE_TO, 9.31f, -CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_battery_unreliable_outline.icon b/ash/resources/vector_icons/unified_menu_battery_unreliable_outline.icon deleted file mode 100644 index 8284b02..0000000 --- a/ash/resources/vector_icons/unified_menu_battery_unreliable_outline.icon +++ /dev/null
@@ -1,67 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 12.5f, 8.97f, -CUBIC_TO, 12.94f, 8.97f, 13.3f, 9.32f, 13.3f, 9.77f, -V_LINE_TO, 11.27f, -H_LINE_TO, 12.5f, -V_LINE_TO, 9.77f, -CUBIC_TO, 12.5f, 9.77f, 12.5f, 10.38f, 11.7f, 10.48f, -CUBIC_TO, 11.62f, 10.49f, 11.54f, 10.5f, 11.44f, 10.5f, -CUBIC_TO, 10.92f, 10.5f, 10.49f, 10.13f, 10.05f, 9.76f, -CUBIC_TO, 9.6f, 9.38f, 9.15f, 9, 8.6f, 9, -CUBIC_TO, 7.5f, 9, 7.5f, 9.77f, 7.5f, 9.77f, -CUBIC_TO, 6.7f, 9.77f, 6.7f, 9.77f, 6.7f, 9.77f, -LINE_TO, 6.7f, 9.76f, -LINE_TO, 6.7f, 9.76f, -LINE_TO, 6.7f, 9.76f, -LINE_TO, 6.7f, 9.75f, -CUBIC_TO, 6.7f, 9.74f, 6.7f, 9.73f, 6.7f, 9.72f, -CUBIC_TO, 6.7f, 9.7f, 6.7f, 9.68f, 6.71f, 9.65f, -CUBIC_TO, 6.71f, 9.6f, 6.72f, 9.54f, 6.74f, 9.46f, -CUBIC_TO, 6.77f, 9.31f, 6.84f, 9.12f, 6.99f, 8.92f, -CUBIC_TO, 7.3f, 8.48f, 7.84f, 8.2f, 8.6f, 8.2f, -CUBIC_TO, 9.45f, 8.2f, 10.1f, 8.76f, 10.5f, 9.09f, -CUBIC_TO, 10.52f, 9.11f, 10.53f, 9.12f, 10.55f, 9.14f, -CUBIC_TO, 10.79f, 9.34f, 10.96f, 9.48f, 11.12f, 9.58f, -CUBIC_TO, 11.28f, 9.68f, 11.38f, 9.7f, 11.44f, 9.7f, -CUBIC_TO, 11.59f, 9.7f, 11.67f, 9.68f, 11.71f, 9.66f, -CUBIC_TO, 11.76f, 9.27f, 12.09f, 8.97f, 12.5f, 8.97f, -CLOSE, -MOVE_TO, 11.73f, 9.65f, -CUBIC_TO, 11.74f, 9.65f, 11.74f, 9.64f, 11.74f, 9.64f, -CUBIC_TO, 11.74f, 9.65f, 11.74f, 9.65f, 11.73f, 9.65f, -CLOSE, -MOVE_TO, 7.5f, 9.77f, -H_LINE_TO, 6.7f, -V_LINE_TO, 11.27f, -CUBIC_TO, 6.7f, 11.71f, 7.06f, 12.07f, 7.5f, 12.07f, -CUBIC_TO, 7.91f, 12.07f, 8.26f, 11.75f, 8.3f, 11.35f, -CUBIC_TO, 8.33f, 11.33f, 8.42f, 11.3f, 8.6f, 11.3f, -CUBIC_TO, 8.8f, 11.3f, 9.02f, 11.44f, 9.52f, 11.86f, -CUBIC_TO, 9.53f, 11.87f, 9.54f, 11.88f, 9.55f, 11.89f, -CUBIC_TO, 9.75f, 12.06f, 10.01f, 12.28f, 10.29f, 12.45f, -CUBIC_TO, 10.6f, 12.63f, 10.98f, 12.8f, 11.44f, 12.8f, -CUBIC_TO, 12.18f, 12.8f, 12.71f, 12.53f, 13.02f, 12.1f, -CUBIC_TO, 13.16f, 11.91f, 13.23f, 11.71f, 13.26f, 11.57f, -CUBIC_TO, 13.28f, 11.49f, 13.29f, 11.43f, 13.29f, 11.38f, -CUBIC_TO, 13.3f, 11.35f, 13.3f, 11.33f, 13.3f, 11.31f, -CUBIC_TO, 13.3f, 11.3f, 13.3f, 11.3f, 13.3f, 11.29f, -LINE_TO, 13.3f, 11.28f, -LINE_TO, 13.3f, 11.27f, -LINE_TO, 13.3f, 11.27f, -LINE_TO, 13.3f, 11.27f, -CUBIC_TO, 13.3f, 11.27f, 13.3f, 11.27f, 12.5f, 11.27f, -CUBIC_TO, 12.5f, 11.27f, 12.5f, 12, 11.44f, 12, -CUBIC_TO, 10.92f, 12, 10.49f, 11.63f, 10.05f, 11.26f, -CUBIC_TO, 9.6f, 10.88f, 9.15f, 10.5f, 8.6f, 10.5f, -CUBIC_TO, 8.49f, 10.5f, 8.39f, 10.51f, 8.3f, 10.52f, -CUBIC_TO, 7.5f, 10.64f, 7.5f, 11.27f, 7.5f, 11.27f, -V_LINE_TO, 9.77f, -CLOSE, -MOVE_TO, 8.28f, 11.35f, -CUBIC_TO, 8.28f, 11.36f, 8.27f, 11.36f, 8.27f, 11.36f, -CUBIC_TO, 8.27f, 11.36f, 8.27f, 11.36f, 8.28f, 11.35f, -CLOSE
diff --git a/ash/resources/vector_icons/unified_menu_battery_x_outline.icon b/ash/resources/vector_icons/unified_menu_battery_x_outline.icon deleted file mode 100644 index 49f35c0..0000000 --- a/ash/resources/vector_icons/unified_menu_battery_x_outline.icon +++ /dev/null
@@ -1,46 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 10, 9.77f, -LINE_TO, 11.67f, 8.1f, -LINE_TO, 12.5f, 8.93f, -LINE_TO, 10.83f, 10.6f, -LINE_TO, 12.5f, 12.27f, -LINE_TO, 11.67f, 13.1f, -LINE_TO, 10, 11.43f, -LINE_TO, 8.33f, 13.1f, -LINE_TO, 7.5f, 12.27f, -LINE_TO, 9.17f, 10.6f, -LINE_TO, 7.5f, 8.93f, -LINE_TO, 8.33f, 8.1f, -LINE_TO, 10, 9.77f, -CLOSE, -MOVE_TO, 8.32f, 10.6f, -LINE_TO, 7.08f, 9.36f, -CUBIC_TO, 6.96f, 9.25f, 6.9f, 9.09f, 6.9f, 8.93f, -CUBIC_TO, 6.9f, 8.77f, 6.96f, 8.62f, 7.08f, 8.51f, -LINE_TO, 7.91f, 7.68f, -CUBIC_TO, 8.02f, 7.56f, 8.17f, 7.5f, 8.33f, 7.5f, -CUBIC_TO, 8.49f, 7.5f, 8.64f, 7.56f, 8.76f, 7.68f, -LINE_TO, 10, 8.92f, -LINE_TO, 11.24f, 7.68f, -CUBIC_TO, 11.48f, 7.44f, 11.86f, 7.44f, 12.09f, 7.68f, -LINE_TO, 12.92f, 8.51f, -CUBIC_TO, 13.04f, 8.62f, 13.1f, 8.77f, 13.1f, 8.93f, -CUBIC_TO, 13.1f, 9.09f, 13.04f, 9.25f, 12.92f, 9.36f, -LINE_TO, 11.68f, 10.6f, -LINE_TO, 12.92f, 11.84f, -CUBIC_TO, 13.04f, 11.95f, 13.1f, 12.11f, 13.1f, 12.27f, -CUBIC_TO, 13.1f, 12.43f, 13.04f, 12.58f, 12.92f, 12.69f, -LINE_TO, 12.09f, 13.52f, -CUBIC_TO, 11.86f, 13.76f, 11.48f, 13.76f, 11.24f, 13.52f, -LINE_TO, 10, 12.28f, -LINE_TO, 8.76f, 13.52f, -CUBIC_TO, 8.52f, 13.76f, 8.14f, 13.76f, 7.91f, 13.52f, -LINE_TO, 7.08f, 12.69f, -CUBIC_TO, 6.96f, 12.58f, 6.9f, 12.43f, 6.9f, 12.27f, -CUBIC_TO, 6.9f, 12.11f, 6.96f, 11.95f, 7.08f, 11.84f, -LINE_TO, 8.32f, 10.6f, -CLOSE
diff --git a/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc b/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc index 6ca99a4..52c6ad8 100644 --- a/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc +++ b/ash/system/bluetooth/bluetooth_device_list_item_battery_view.cc
@@ -90,11 +90,9 @@ PowerStatus::BatteryImageInfo battery_image_info; battery_image_info.charge_percent = new_battery_percentage; - auto* color_provider = GetColorProvider(); - icon_->SetImage(PowerStatus::GetBatteryImage( - battery_image_info, kUnifiedTraySubIconSize, - color_provider->GetColor(kColorAshShieldAndBaseOpaque), - color_provider->GetColor(color_id))); + icon_->SetImage( + PowerStatus::GetBatteryImage(battery_image_info, kUnifiedTraySubIconSize, + GetColorProvider()->GetColor(color_id))); } bool BluetoothDeviceListItemBatteryView::ApproximatelyEqual(
diff --git a/ash/system/message_center/ash_notification_control_button_factory.cc b/ash/system/message_center/ash_notification_control_button_factory.cc index 970e899..b5cb6c88 100644 --- a/ash/system/message_center/ash_notification_control_button_factory.cc +++ b/ash/system/message_center/ash_notification_control_button_factory.cc
@@ -5,6 +5,7 @@ #include "ash/system/message_center/ash_notification_control_button_factory.h" #include "ash/style/icon_button.h" +#include "chromeos/constants/chromeos_features.h" namespace ash { @@ -12,8 +13,11 @@ AshNotificationControlButtonFactory::CreateButton( views::Button::PressedCallback callback) { return std::make_unique<ash::IconButton>( - std::move(callback), ash::IconButton::Type::kSmallFloating, nullptr, - false, false); + std::move(callback), + chromeos::features::IsJellyEnabled() + ? ash::IconButton::Type::kXSmallFloating + : ash::IconButton::Type::kSmallFloating, + nullptr, false, false); } } // namespace ash
diff --git a/ash/system/message_center/ash_notification_expand_button.cc b/ash/system/message_center/ash_notification_expand_button.cc index 639287b..55f6d4f 100644 --- a/ash/system/message_center/ash_notification_expand_button.cc +++ b/ash/system/message_center/ash_notification_expand_button.cc
@@ -8,12 +8,15 @@ #include "ash/resources/vector_icons/vector_icons.h" #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_provider.h" +#include "ash/style/typography.h" #include "ash/system/message_center/message_center_constants.h" #include "ash/system/message_center/message_center_utils.h" #include "ash/system/tray/tray_popup_utils.h" #include "base/metrics/histogram_functions.h" +#include "chromeos/constants/chromeos_features.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/chromeos/styles/cros_tokens_color_mappings.h" #include "ui/color/color_id.h" #include "ui/compositor/animation_throughput_reporter.h" #include "ui/compositor/layer.h" @@ -33,6 +36,18 @@ namespace ash { +namespace { + +constexpr gfx::Insets kFocusInsets(2); +constexpr gfx::Insets kImageInsets(4); +constexpr auto kLabelInsets = gfx::Insets::TLBR(0, 8, 0, 0); +constexpr int kCornerRadius = 12; +constexpr int kChevronIconSize = 16; +constexpr int kJellyChevronIconSize = 20; +constexpr int kLabelFontSize = 12; + +} // namespace + BEGIN_METADATA(AshNotificationExpandButton, views::Button) END_METADATA @@ -44,24 +59,24 @@ auto label = std::make_unique<views::Label>(); label->SetFontList(gfx::FontList({kGoogleSansFont}, gfx::Font::NORMAL, - kNotificationExpandButtonLabelFontSize, - gfx::Font::Weight::MEDIUM)); - label->SetProperty(views::kMarginsKey, kNotificationExpandButtonLabelInsets); + kLabelFontSize, gfx::Font::Weight::MEDIUM)); + + label->SetProperty(views::kMarginsKey, kLabelInsets); label->SetElideBehavior(gfx::ElideBehavior::NO_ELIDE); label->SetText(base::NumberToString16(total_grouped_notifications_)); label->SetVisible(ShouldShowLabel()); label_ = AddChildView(std::move(label)); - - UpdateIcons(); + if (chromeos::features::IsJellyEnabled()) { + ash::TypographyProvider::Get()->StyleLabel( + ash::TypographyToken::kCrosAnnotation1, *label_); + } auto image = std::make_unique<views::ImageView>(); - image->SetProperty(views::kMarginsKey, kNotificationExpandButtonImageInsets); - image->SetImage(expanded_ ? expanded_image_ : collapsed_image_); + image->SetProperty(views::kMarginsKey, kImageInsets); image_ = AddChildView(std::move(image)); - views::InstallRoundRectHighlightPathGenerator( - this, kNotificationExpandButtonFocusInsets, - kNotificationExpandButtonCornerRadius); + views::InstallRoundRectHighlightPathGenerator(this, kFocusInsets, + kCornerRadius); SetAccessibleName(l10n_util::GetStringUTF16( expanded_ ? IDS_ASH_NOTIFICATION_COLLAPSE_TOOLTIP @@ -112,16 +127,20 @@ } void AshNotificationExpandButton::UpdateIcons() { - expanded_image_ = gfx::CreateVectorIcon( - kUnifiedMenuExpandIcon, kNotificationExpandButtonChevronIconSize, - AshColorProvider::Get()->GetContentLayerColor( - AshColorProvider::ContentLayerType::kIconColorPrimary)); + SkColor icon_color = + chromeos::features::IsJellyEnabled() + ? GetColorProvider()->GetColor(cros_tokens::kCrosSysOnSurface) + : AshColorProvider::Get()->GetContentLayerColor( + AshColorProvider::ContentLayerType::kIconColorPrimary); + + int icon_size = chromeos::features::IsJellyEnabled() ? kJellyChevronIconSize + : kChevronIconSize; + + expanded_image_ = + gfx::CreateVectorIcon(kUnifiedMenuExpandIcon, icon_size, icon_color); collapsed_image_ = gfx::ImageSkiaOperations::CreateRotatedImage( - gfx::CreateVectorIcon( - kUnifiedMenuExpandIcon, kNotificationExpandButtonChevronIconSize, - AshColorProvider::Get()->GetContentLayerColor( - AshColorProvider::ContentLayerType::kIconColorPrimary)), + gfx::CreateVectorIcon(kUnifiedMenuExpandIcon, icon_size, icon_color), SkBitmapOperations::ROTATION_180_CW); } @@ -199,9 +218,12 @@ UpdateIcons(); image_->SetImage(expanded_ ? expanded_image_ : collapsed_image_); - SkColor background_color = AshColorProvider::Get()->GetControlsLayerColor( - AshColorProvider::ControlsLayerType::kControlBackgroundColorInactive); - layer()->SetColor(background_color); + layer()->SetColor( + chromeos::features::IsJellyEnabled() + ? GetColorProvider()->GetColor(cros_tokens::kCrosSysSystemOnBase1) + : AshColorProvider::Get()->GetControlsLayerColor( + AshColorProvider::ControlsLayerType:: + kControlBackgroundColorInactive)); } gfx::Size AshNotificationExpandButton::CalculatePreferredSize() const { @@ -212,7 +234,7 @@ // performed correctly. if (label_fading_out_) { return gfx::Size(size.width() - label_->GetPreferredSize().width() - - kNotificationExpandButtonLabelInsets.width(), + kLabelInsets.width(), size.height()); }
diff --git a/ash/system/message_center/message_center_constants.h b/ash/system/message_center/message_center_constants.h index e44af2c..40481ba0 100644 --- a/ash/system/message_center/message_center_constants.h +++ b/ash/system/message_center/message_center_constants.h
@@ -46,14 +46,6 @@ // The width of notification that displayed inside the message center. constexpr int kNotificationInMessageCenterWidth = 344; -constexpr gfx::Insets kNotificationExpandButtonFocusInsets(2); -constexpr gfx::Insets kNotificationExpandButtonImageInsets(4); -constexpr auto kNotificationExpandButtonLabelInsets = - gfx::Insets::TLBR(0, 8, 0, 0); -constexpr int kNotificationExpandButtonCornerRadius = 12; -constexpr int kNotificationExpandButtonChevronIconSize = 16; -constexpr int kNotificationExpandButtonLabelFontSize = 12; - constexpr int kProgressBarWithActionButtonsBottomPadding = 16; constexpr int kProgressBarExpandedBottomPadding = 24 - kNotificationViewPadding.bottom();
diff --git a/ash/system/message_center/notification_grouping_controller.cc b/ash/system/message_center/notification_grouping_controller.cc index 3776f58..7a1d20d 100644 --- a/ash/system/message_center/notification_grouping_controller.cc +++ b/ash/system/message_center/notification_grouping_controller.cc
@@ -333,7 +333,7 @@ auto grouped_notifications = grouped_notification_list_->GetGroupedNotificationsForParent(parent_id); if (grouped_notifications.size() == 1) { - MessageCenter::Get()->RemoveNotification(parent_id, true); + MessageCenter::Get()->RemoveNotification(parent_id, /*by_user=*/false); return; }
diff --git a/ash/system/network/network_list_network_item_view.cc b/ash/system/network/network_list_network_item_view.cc index ef031ba4..e4631ef 100644 --- a/ash/system/network/network_list_network_item_view.cc +++ b/ash/system/network/network_list_network_item_view.cc
@@ -365,8 +365,7 @@ network_properties()->type_state->get_tether()->battery_percentage; icon_info.charge_percent = battery_percentage; image_icon->SetImage(PowerStatus::GetBatteryImage( - icon_info, kMobileNetworkBatteryIconSize, - ColorUtil::GetSecondToneColor(icon_color), icon_color)); + icon_info, kMobileNetworkBatteryIconSize, icon_color)); // Show the numeric battery percentage on hover. image_icon->SetTooltipText(base::FormatPercent(battery_percentage));
diff --git a/ash/system/palette/palette_tray.cc b/ash/system/palette/palette_tray.cc index 43ed4c98..d1c4657e 100644 --- a/ash/system/palette/palette_tray.cc +++ b/ash/system/palette/palette_tray.cc
@@ -133,8 +133,7 @@ if (stylus_battery_delegate_.ShouldShowBatteryStatus() != GetVisible()) SetVisible(stylus_battery_delegate_.ShouldShowBatteryStatus()); - icon_->SetImage( - stylus_battery_delegate_.GetBatteryImage(GetColorProvider())); + icon_->SetImage(stylus_battery_delegate_.GetBatteryImage()); label_->SetVisible(stylus_battery_delegate_.IsBatteryLevelLow() && stylus_battery_delegate_.IsBatteryStatusEligible() && !stylus_battery_delegate_.IsBatteryStatusStale() &&
diff --git a/ash/system/palette/stylus_battery_delegate.cc b/ash/system/palette/stylus_battery_delegate.cc index 011a95f..e99f621f 100644 --- a/ash/system/palette/stylus_battery_delegate.cc +++ b/ash/system/palette/stylus_battery_delegate.cc
@@ -6,7 +6,6 @@ #include <string> -#include "ash/constants/ash_features.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" #include "ash/strings/grit/ash_strings.h" @@ -48,27 +47,18 @@ AshColorProvider::ContentLayerType::kIconColorPrimary); } -gfx::ImageSkia StylusBatteryDelegate::GetBatteryImage( - ui::ColorProvider* color_provider) const { +gfx::ImageSkia StylusBatteryDelegate::GetBatteryImage() const { PowerStatus::BatteryImageInfo info; info.charge_percent = battery_level_.value_or(0); if (IsBatteryCharging()) { info.icon_badge = &kUnifiedMenuBatteryBoltIcon; - if (features::IsDarkLightModeEnabled()) { - info.badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; - } else { - info.badge_outline = &kUnifiedMenuBatteryBoltOutlineIcon; - } + info.badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; } const SkColor icon_fg_color = GetColorForBatteryLevel(); - DCHECK(color_provider); - const SkColor icon_bg_color = - color_provider->GetColor(kColorAshShieldAndBaseOpaque); - return PowerStatus::GetBatteryImage(info, kUnifiedTrayBatteryIconSize, - icon_bg_color, icon_fg_color); + icon_fg_color); } gfx::ImageSkia StylusBatteryDelegate::GetBatteryStatusUnknownImage() const {
diff --git a/ash/system/palette/stylus_battery_delegate.h b/ash/system/palette/stylus_battery_delegate.h index 3b3a756..94bc02c 100644 --- a/ash/system/palette/stylus_battery_delegate.h +++ b/ash/system/palette/stylus_battery_delegate.h
@@ -13,10 +13,6 @@ #include "third_party/skia/include/core/SkColor.h" #include "ui/gfx/image/image_skia.h" -namespace ui { -class ColorProvider; -} // namespace ui - namespace ash { class ASH_EXPORT StylusBatteryDelegate @@ -30,7 +26,7 @@ ~StylusBatteryDelegate() override; SkColor GetColorForBatteryLevel() const; - gfx::ImageSkia GetBatteryImage(ui::ColorProvider* color_provider) const; + gfx::ImageSkia GetBatteryImage() const; gfx::ImageSkia GetBatteryStatusUnknownImage() const; void SetBatteryUpdateCallback(Callback battery_update_callback); bool IsBatteryCharging() const;
diff --git a/ash/system/phonehub/phone_status_view.cc b/ash/system/phonehub/phone_status_view.cc index ee6e42f..6c10db8 100644 --- a/ash/system/phonehub/phone_status_view.cc +++ b/ash/system/phonehub/phone_status_view.cc
@@ -6,7 +6,6 @@ #include <string> -#include "ash/constants/ash_features.h" #include "ash/public/cpp/network_icon_image_source.h" #include "ash/public/cpp/shelf_config.h" #include "ash/resources/vector_icons/vector_icons.h" @@ -93,14 +92,6 @@ battery_icon_(new views::ImageView), battery_label_(new views::Label) { DCHECK(delegate); - - // In dark light mode, we switch TrayBubbleView to use a textured layer - // instead of solid color layer, so no need to create an extra layer here. - if (!features::IsDarkLightModeEnabled()) { - SetPaintToLayer(); - layer()->SetFillsBoundsOpaquely(false); - } - SetID(PhoneHubViewID::kPhoneStatusView); SetBorder(views::CreateEmptyBorder(kBorderInsets)); @@ -125,12 +116,10 @@ AddView(TriView::Container::CENTER, signal_icon_); - if (features::IsDarkLightModeEnabled()) { - // The battery icon requires its own layer to properly render the masked - // outline of the badge within the battery icon. - battery_icon_->SetPaintToLayer(); - battery_icon_->layer()->SetFillsBoundsOpaquely(false); - } + // The battery icon requires its own layer to properly render the masked + // outline of the badge within the battery icon. + battery_icon_->SetPaintToLayer(); + battery_icon_->layer()->SetFillsBoundsOpaquely(false); AddView(TriView::Container::CENTER, battery_icon_); battery_label_->SetAutoColorReadabilityEnabled(false); @@ -243,16 +232,13 @@ const PowerStatus::BatteryImageInfo& info = CalculateBatteryInfo(); - const SkColor icon_bg_color = color_utils::GetResultingPaintColor( - ShelfConfig::Get()->GetShelfControlButtonColor(GetWidget()), - GetColorProvider()->GetColor(kColorAshShieldAndBaseOpaque)); const SkColor icon_fg_color = AshColorProvider::Get()->GetContentLayerColor( IsBatterySaverModeOn(phone_status) ? AshColorProvider::ContentLayerType::kIconColorWarning : AshColorProvider::ContentLayerType::kIconColorPrimary); battery_icon_->SetImage(PowerStatus::GetBatteryImage( - info, kUnifiedTrayBatteryIconSize, icon_bg_color, icon_fg_color)); + info, kUnifiedTrayBatteryIconSize, icon_fg_color)); SetBatteryTooltipText(); battery_label_->SetText( base::FormatPercent(phone_status.battery_percentage())); @@ -271,11 +257,7 @@ if (IsBatterySaverModeOn(phone_status)) { info.icon_badge = &kPhoneHubBatterySaverIcon; - if (features::IsDarkLightModeEnabled()) { - info.badge_outline = &kPhoneHubBatterySaverOutlineMaskIcon; - } else { - info.badge_outline = &kPhoneHubBatterySaverOutlineIcon; - } + info.badge_outline = &kPhoneHubBatterySaverOutlineMaskIcon; return info; } @@ -284,28 +266,16 @@ info.alert_if_low = true; if (info.charge_percent < PowerStatus::kCriticalBatteryChargePercentage) { info.icon_badge = &kUnifiedMenuBatteryAlertIcon; - if (features::IsDarkLightModeEnabled()) { - info.badge_outline = &kUnifiedMenuBatteryAlertOutlineMaskIcon; - } else { - info.badge_outline = &kUnifiedMenuBatteryAlertOutlineIcon; - } + info.badge_outline = &kUnifiedMenuBatteryAlertOutlineMaskIcon; } break; case PhoneStatusModel::ChargingState::kChargingAc: info.icon_badge = &kUnifiedMenuBatteryBoltIcon; - if (features::IsDarkLightModeEnabled()) { - info.badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; - } else { - info.badge_outline = &kUnifiedMenuBatteryBoltOutlineIcon; - } + info.badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; break; case PhoneStatusModel::ChargingState::kChargingUsb: info.icon_badge = &kUnifiedMenuBatteryUnreliableIcon; - if (features::IsDarkLightModeEnabled()) { - info.badge_outline = &kUnifiedMenuBatteryUnreliableOutlineMaskIcon; - } else { - info.badge_outline = &kUnifiedMenuBatteryUnreliableOutlineIcon; - } + info.badge_outline = &kUnifiedMenuBatteryUnreliableOutlineMaskIcon; break; }
diff --git a/ash/system/power/battery_image_source.cc b/ash/system/power/battery_image_source.cc index d2377ca..2a186f9e 100644 --- a/ash/system/power/battery_image_source.cc +++ b/ash/system/power/battery_image_source.cc
@@ -6,7 +6,6 @@ #include <algorithm> -#include "ash/constants/ash_features.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/style/ash_color_provider.h" #include "ui/gfx/canvas.h" @@ -43,12 +42,10 @@ BatteryImageSource::BatteryImageSource( const PowerStatus::BatteryImageInfo& info, int height, - SkColor bg_color, SkColor fg_color, absl::optional<SkColor> badge_color) : gfx::CanvasImageSource(gfx::Size(height, height)), info_(info), - bg_color_(bg_color), fg_color_(fg_color), badge_color_(badge_color.value_or( info.charge_percent > 50 ? GetBatteryBadgeColor() : fg_color)) {} @@ -101,30 +98,19 @@ canvas->Restore(); if (info_.badge_outline) { - if (ash::features::IsDarkLightModeEnabled()) { - // The outline is always a vector icon with PATH_MODE_CLEAR. This means it - // masks out anything previously drawn to the canvas. Give it any opaque - // color so it will properly mask the rest of the battery icon. NOTE: The - // view which renders this canvas must paint to its own non-opaque layer, - // otherwise this outline will show up SK_ColorBlue instead of - // transparent. - PaintVectorIcon(canvas, *info_.badge_outline, size().height(), - SK_ColorBLUE); - } else { - // The outline is a colored outline, so give it a color meant to be seen - // by the user. - const SkColor outline_color = - info_.charge_percent > 50 ? fg_color_ : bg_color_; - PaintVectorIcon(canvas, *info_.badge_outline, size().height(), - outline_color); - } + // The outline is always a vector icon with PATH_MODE_CLEAR. This means it + // masks out anything previously drawn to the canvas. Give it any opaque + // color so it will properly mask the rest of the battery icon. NOTE: The + // view which renders this canvas must paint to its own non-opaque layer, + // otherwise this outline will show up SK_ColorBlue instead of + // transparent. + PaintVectorIcon(canvas, *info_.badge_outline, size().height(), + SK_ColorBLUE); } // Paint the badge over top of the battery, if applicable. if (info_.icon_badge) { - const SkColor default_color = - ash::features::IsDarkLightModeEnabled() ? fg_color_ : badge_color_; - const SkColor badge_color = use_alert_color ? alert_color : default_color; + const SkColor badge_color = use_alert_color ? alert_color : fg_color_; PaintVectorIcon(canvas, *info_.icon_badge, size().height(), badge_color); } }
diff --git a/ash/system/power/battery_image_source.h b/ash/system/power/battery_image_source.h index 1af4764..37cfc28 100644 --- a/ash/system/power/battery_image_source.h +++ b/ash/system/power/battery_image_source.h
@@ -16,7 +16,6 @@ public: BatteryImageSource(const PowerStatus::BatteryImageInfo& info, int height, - SkColor bg_color, SkColor fg_color, absl::optional<SkColor> badge_color); @@ -31,7 +30,6 @@ private: PowerStatus::BatteryImageInfo info_; - const SkColor bg_color_; const SkColor fg_color_; const SkColor badge_color_; };
diff --git a/ash/system/power/power_status.cc b/ash/system/power/power_status.cc index 50ad648..af4f6a2 100644 --- a/ash/system/power/power_status.cc +++ b/ash/system/power/power_status.cc
@@ -7,7 +7,6 @@ #include <algorithm> #include <cmath> -#include "ash/constants/ash_features.h" #include "ash/public/cpp/power_utils.h" #include "ash/resources/vector_icons/vector_icons.h" #include "ash/strings/grit/ash_strings.h" @@ -248,29 +247,17 @@ if (!IsUsbChargerConnected() && !IsBatteryPresent()) { info->icon_badge = &kUnifiedMenuBatteryXIcon; - if (features::IsDarkLightModeEnabled()) { - info->badge_outline = &kUnifiedMenuBatteryXOutlineMaskIcon; - } else { - info->badge_outline = &kUnifiedMenuBatteryXOutlineIcon; - } + info->badge_outline = &kUnifiedMenuBatteryXOutlineMaskIcon; info->charge_percent = 0; return; } if (IsUsbChargerConnected()) { info->icon_badge = &kUnifiedMenuBatteryUnreliableIcon; - if (features::IsDarkLightModeEnabled()) { - info->badge_outline = &kUnifiedMenuBatteryUnreliableOutlineMaskIcon; - } else { - info->badge_outline = &kUnifiedMenuBatteryUnreliableOutlineIcon; - } + info->badge_outline = &kUnifiedMenuBatteryUnreliableOutlineMaskIcon; } else if (IsLinePowerConnected()) { info->icon_badge = &kUnifiedMenuBatteryBoltIcon; - if (features::IsDarkLightModeEnabled()) { - info->badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; - } else { - info->badge_outline = &kUnifiedMenuBatteryBoltOutlineIcon; - } + info->badge_outline = &kUnifiedMenuBatteryBoltOutlineMaskIcon; } else { info->icon_badge = nullptr; info->badge_outline = nullptr; @@ -283,11 +270,7 @@ if (GetBatteryPercent() < kCriticalBatteryChargePercentage && !info->icon_badge) { info->icon_badge = &kUnifiedMenuBatteryAlertIcon; - if (features::IsDarkLightModeEnabled()) { - info->badge_outline = &kUnifiedMenuBatteryAlertOutlineMaskIcon; - } else { - info->badge_outline = &kUnifiedMenuBatteryAlertOutlineIcon; - } + info->badge_outline = &kUnifiedMenuBatteryAlertOutlineMaskIcon; } } @@ -295,11 +278,10 @@ gfx::ImageSkia PowerStatus::GetBatteryImage( const BatteryImageInfo& info, int height, - SkColor bg_color, SkColor fg_color, absl::optional<SkColor> badge_color) { - auto* source = new BatteryImageSource(info, height, bg_color, fg_color, - std::move(badge_color)); + auto* source = + new BatteryImageSource(info, height, fg_color, std::move(badge_color)); return gfx::ImageSkia(base::WrapUnique(source), source->size()); }
diff --git a/ash/system/power/power_status.h b/ash/system/power/power_status.h index c75263ff1..1a676ead 100644 --- a/ash/system/power/power_status.h +++ b/ash/system/power/power_status.h
@@ -200,7 +200,6 @@ static gfx::ImageSkia GetBatteryImage( const BatteryImageInfo& info, int height, - SkColor bg_color, SkColor fg_color, absl::optional<SkColor> badge_color = absl::nullopt);
diff --git a/ash/system/power/power_status_unittest.cc b/ash/system/power/power_status_unittest.cc index a0e912f..72ab5d1 100644 --- a/ash/system/power/power_status_unittest.cc +++ b/ash/system/power/power_status_unittest.cc
@@ -196,9 +196,8 @@ PowerStatus* power_status = power_status_; auto get_battery_image = [&power_status]() { - return gfx::Image( - power_status->GetBatteryImage(power_status->GetBatteryImageInfo(), 16, - SK_ColorYELLOW, SK_ColorGREEN)); + return gfx::Image(power_status->GetBatteryImage( + power_status->GetBatteryImageInfo(), 16, SK_ColorGREEN)); }; prop.set_external_power(PowerSupplyProperties::AC);
diff --git a/ash/system/power/tray_power.cc b/ash/system/power/tray_power.cc index 0b216315..5252e04 100644 --- a/ash/system/power/tray_power.cc +++ b/ash/system/power/tray_power.cc
@@ -110,15 +110,11 @@ return; info_ = info; - // Note: The icon color (both fg and bg) changes when the UI in in OOBE mode. + // Note: The icon color changes when the UI is in OOBE mode. const SkColor icon_fg_color = GetColorProvider()->GetColor(kColorAshIconColorPrimary); - const SkColor icon_bg_color = color_utils::GetResultingPaintColor( - ShelfConfig::Get()->GetShelfControlButtonColor(GetWidget()), - GetColorProvider()->GetColor(kColorAshShieldAndBaseOpaque)); - image_view()->SetImage(PowerStatus::GetBatteryImage( - info, kUnifiedTrayBatteryIconSize, icon_bg_color, icon_fg_color)); + info, kUnifiedTrayBatteryIconSize, icon_fg_color)); } } // namespace ash
diff --git a/ash/system/privacy/privacy_indicators_controller_unittest.cc b/ash/system/privacy/privacy_indicators_controller_unittest.cc index 15a71e4..ae2a9b2 100644 --- a/ash/system/privacy/privacy_indicators_controller_unittest.cc +++ b/ash/system/privacy/privacy_indicators_controller_unittest.cc
@@ -32,6 +32,7 @@ #include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/events/test/event_generator.h" #include "ui/message_center/message_center.h" +#include "ui/message_center/public/cpp/message_center_constants.h" #include "ui/message_center/views/notification_view_base.h" #include "ui/views/widget/widget_utils.h" @@ -295,6 +296,49 @@ EXPECT_TRUE(delegate->launch_settings_called()); } +// Tests that privacy indicators notifications are working properly when there +// are two running apps. +TEST_F(PrivacyIndicatorsControllerTest, NotificationWithTwoApps) { + std::string app_id1 = "test_app_id1"; + std::string app_id2 = "test_app_id2"; + std::string notification_id1 = GetPrivacyIndicatorsNotificationId(app_id1); + std::string notification_id2 = GetPrivacyIndicatorsNotificationId(app_id2); + scoped_refptr<TestDelegate> delegate = base::MakeRefCounted<TestDelegate>(); + + PrivacyIndicatorsController::Get()->UpdatePrivacyIndicators( + app_id1, u"test_app_name", + /*is_camera_used=*/true, + /*is_microphone_used=*/true, delegate, PrivacyIndicatorsSource::kApps); + PrivacyIndicatorsController::Get()->UpdatePrivacyIndicators( + app_id2, u"test_app_name", + /*is_camera_used=*/true, + /*is_microphone_used=*/true, delegate, PrivacyIndicatorsSource::kApps); + + auto* message_center = message_center::MessageCenter::Get(); + EXPECT_TRUE(message_center->FindNotificationById(notification_id1)); + EXPECT_TRUE(message_center->FindNotificationById(notification_id2)); + + // A group parent notification should also be created for these 2 + // notifications. + std::string id_parent = + notification_id1 + message_center::kIdSuffixForGroupContainerNotification; + EXPECT_TRUE(message_center->FindNotificationById(id_parent)); + + // Update the state. All notifications should be removed. + PrivacyIndicatorsController::Get()->UpdatePrivacyIndicators( + app_id1, u"test_app_name", + /*is_camera_used=*/false, + /*is_microphone_used=*/false, delegate, PrivacyIndicatorsSource::kApps); + PrivacyIndicatorsController::Get()->UpdatePrivacyIndicators( + app_id2, u"test_app_name", + /*is_camera_used=*/false, + /*is_microphone_used=*/false, delegate, PrivacyIndicatorsSource::kApps); + + EXPECT_FALSE(message_center->FindNotificationById(notification_id1)); + EXPECT_FALSE(message_center->FindNotificationById(notification_id2)); + EXPECT_FALSE(message_center->FindNotificationById(id_parent)); +} + // Tests that a basic privacy indicator notification is disabled when the video // conference feature is enabled. TEST_F(PrivacyIndicatorsControllerTest,
diff --git a/ash/system/privacy_hub/camera_privacy_switch_controller.cc b/ash/system/privacy_hub/camera_privacy_switch_controller.cc index 8896999..c046c738 100644 --- a/ash/system/privacy_hub/camera_privacy_switch_controller.cc +++ b/ash/system/privacy_hub/camera_privacy_switch_controller.cc
@@ -53,10 +53,6 @@ } } -PrivacyHubNotificationController* GetPrivacyHubNotificationController() { - return Shell::Get()->system_notification_controller()->privacy_hub(); -} - } // namespace CameraPrivacySwitchController::CameraPrivacySwitchController() @@ -116,33 +112,11 @@ const CameraSWPrivacySwitchSetting pref_val = GetUserSwitchPreference(); switch_api_->SetCameraSWPrivacySwitch(pref_val); - if (features::IsVideoConferenceEnabled()) { - // The `VideoConferenceTrayController` shows this info as a toast. - return; - } - turn_sw_switch_on_notification_.Hide(); - if (features::IsPrivacyIndicatorsEnabled()) { - // Always remove the sensor disabled notification if the sensor was unmuted. - if (pref_val == CameraSWPrivacySwitchSetting::kEnabled) { - GetPrivacyHubNotificationController()->RemoveSoftwareSwitchNotification( - SensorDisabledNotificationDelegate::Sensor::kCamera); - } - return; - } - - if (active_applications_using_camera_count_ == 0) { - return; - } - - if (pref_val == CameraSWPrivacySwitchSetting::kDisabled) { - camera_used_while_deactivated_ = true; - GetPrivacyHubNotificationController()->ShowSoftwareSwitchNotification( - SensorDisabledNotificationDelegate::Sensor::kCamera); - } else { - camera_used_while_deactivated_ = false; - GetPrivacyHubNotificationController()->RemoveSoftwareSwitchNotification( + // Always remove the sensor disabled notification if the sensor was unmuted. + if (pref_val == CameraSWPrivacySwitchSetting::kEnabled) { + PrivacyHubNotificationController::Get()->RemoveSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } } @@ -218,21 +192,25 @@ return; } + auto* privacy_hub_notification_controller = + PrivacyHubNotificationController::Get(); + CHECK(privacy_hub_notification_controller); + if (features::IsPrivacyIndicatorsEnabled()) { // NOTE: This logic mirrors the logic in // `MicrophonePrivacySwitchController`. if (active_applications_using_camera_count_ == 0) { // Always remove the notification when active applications go to 0. - GetPrivacyHubNotificationController()->RemoveSoftwareSwitchNotification( + privacy_hub_notification_controller->RemoveSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } else if (application_added) { if (camera_muted_by_sw) { - GetPrivacyHubNotificationController()->ShowSoftwareSwitchNotification( + privacy_hub_notification_controller->ShowSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } } else { // Application removed, update the notifications message. - GetPrivacyHubNotificationController()->UpdateSoftwareSwitchNotification( + privacy_hub_notification_controller->UpdateSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } return; @@ -245,14 +223,14 @@ if (active_applications_using_camera_count_ == 0 && camera_used_while_deactivated_) { camera_used_while_deactivated_ = false; - GetPrivacyHubNotificationController()->RemoveSoftwareSwitchNotification( + privacy_hub_notification_controller->RemoveSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } else if (application_added) { camera_used_while_deactivated_ = true; - GetPrivacyHubNotificationController()->ShowSoftwareSwitchNotification( + privacy_hub_notification_controller->ShowSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } else { - GetPrivacyHubNotificationController()->UpdateSoftwareSwitchNotification( + privacy_hub_notification_controller->UpdateSoftwareSwitchNotification( SensorDisabledNotificationDelegate::Sensor::kCamera); } }
diff --git a/ash/system/privacy_hub/camera_privacy_switch_controller_unittest.cc b/ash/system/privacy_hub/camera_privacy_switch_controller_unittest.cc index 5766fdf..72344a7 100644 --- a/ash/system/privacy_hub/camera_privacy_switch_controller_unittest.cc +++ b/ash/system/privacy_hub/camera_privacy_switch_controller_unittest.cc
@@ -153,6 +153,11 @@ controller_->ActiveApplicationsChanged(/*application_added=*/false); } + message_center::Notification* GetSWSwitchNotification() { + return FindNotificationById( + PrivacyHubNotificationController::kCombinedNotificationId); + } + ::testing::NiceMock<MockSwitchAPI>* mock_switch_; CameraPrivacySwitchController* controller_; @@ -184,6 +189,7 @@ ~PrivacyHubCameraControllerTest() override { fake_video_conference_tray_controller_.reset(); } + bool IsPrivacyIndicatorsEnabled() { return std::get<0>(GetParam()); } bool IsVideoConferenceEnabled() { return std::get<1>(GetParam()); } @@ -411,22 +417,19 @@ message_center::MessageCenter* const message_center = message_center::MessageCenter::Get(); ASSERT_TRUE(message_center); - ASSERT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + ASSERT_FALSE(GetSWSwitchNotification()); // An application starts accessing the camera. controller_->ActiveApplicationsChanged(/*application_added=*/true); - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); if (IsVideoConferenceEnabled()) { // No Notification should be sent. Return early because the rest of the test // tests notification behavior. - EXPECT_FALSE(notification); + EXPECT_FALSE(GetSWSwitchNotification()); return; } // A notification should be fired. - EXPECT_TRUE(notification); + EXPECT_TRUE(GetSWSwitchNotification()); EXPECT_FALSE(GetUserPref()); EXPECT_EQ(histogram_tester_.GetBucketCount( @@ -438,8 +441,7 @@ message_center->ClickOnNotificationButton( PrivacyHubNotificationController::kCombinedNotificationId, 0); EXPECT_TRUE(GetUserPref()); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); EXPECT_EQ(histogram_tester_.GetBucketCount( privacy_hub_metrics:: kPrivacyHubCameraEnabledFromNotificationHistogram, @@ -454,19 +456,16 @@ message_center::MessageCenter* const message_center = message_center::MessageCenter::Get(); ASSERT_TRUE(message_center); - ASSERT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + ASSERT_FALSE(GetSWSwitchNotification()); // An application starts accessing the camera. controller_->ActiveApplicationsChanged(/*application_added=*/true); - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); if (IsVideoConferenceEnabled()) { - EXPECT_FALSE(notification); + EXPECT_FALSE(GetSWSwitchNotification()); } else { // A notification should be fired. - EXPECT_TRUE(notification); + EXPECT_TRUE(GetSWSwitchNotification()); } EXPECT_FALSE(GetUserPref()); @@ -478,8 +477,7 @@ // The user pref should not be changed. EXPECT_FALSE(GetUserPref()); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); } SetUserPref(true); @@ -496,15 +494,14 @@ if (IsVideoConferenceEnabled() || IsPrivacyIndicatorsEnabled()) { // No notification is fired for switch changes during the capture session. // But one will be fired if a new session starts. - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); EXPECT_TRUE(GetUserPref()); // Adds a second application. controller_->ActiveApplicationsChanged(/*application_added=*/true); } - notification = FindNotificationById( + auto* notification = FindNotificationById( kPrivacyHubHWCameraSwitchOffSWCameraSwitchOnNotificationId); if (IsVideoConferenceEnabled() || IsPrivacyIndicatorsEnabled()) { EXPECT_FALSE(notification); @@ -528,27 +525,22 @@ TEST_P(PrivacyHubCameraControllerTest, CameraOffNotificationRemoveViaUserPref) { SetUserPref(false); - ASSERT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + ASSERT_FALSE(GetSWSwitchNotification()); // An application starts accessing the camera. controller_->ActiveApplicationsChanged(/*application_added=*/true); - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); if (IsVideoConferenceEnabled()) { - EXPECT_FALSE(notification); + EXPECT_FALSE(GetSWSwitchNotification()); } else { // A notification should be fired. - EXPECT_TRUE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_TRUE(GetSWSwitchNotification()); } EXPECT_FALSE(GetUserPref()); // Enabling camera via the user pref should clear the notification. SetUserPref(true); EXPECT_TRUE(GetUserPref()); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); } TEST_P(PrivacyHubCameraControllerTest, InSessionSwitchNotification) { @@ -563,24 +555,24 @@ controller_->ActiveApplicationsChanged(/*application_added=*/true); // Disable the camera after the application count has changed. SetUserPref(false); - if (IsPrivacyIndicatorsEnabled() || IsVideoConferenceEnabled()) { - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); - EXPECT_FALSE(GetUserPref()); - // Trigger the notification by simulating a second application accessing the - // camera. - controller_->ActiveApplicationsChanged(/*application_added=*/true); - } - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); + // A notification should not be fired (when pref set to false while an app was + // running). + EXPECT_FALSE(GetSWSwitchNotification()); + EXPECT_FALSE(GetUserPref()); + + // Trigger the notification by simulating a second application accessing the + // camera. + controller_->ActiveApplicationsChanged(/*application_added=*/true); + + // If VC enabled - no notification to be shown. if (IsVideoConferenceEnabled()) { - EXPECT_FALSE(notification); - EXPECT_FALSE(GetUserPref()); + EXPECT_FALSE(GetSWSwitchNotification()); + // No notifications shown - nothing left to test. return; } - // A notification should be fired. - EXPECT_TRUE(notification); + // Otherwise - a notification to be shown if a new app started. + EXPECT_TRUE(GetSWSwitchNotification()); EXPECT_FALSE(GetUserPref()); EXPECT_EQ(histogram_tester_.GetBucketCount( @@ -588,12 +580,11 @@ kPrivacyHubCameraEnabledFromNotificationHistogram, true), 0); - // Enabling camera via clicking on the button should clear the notification + // Enabling camera via clicking on the button should clear the notification. message_center->ClickOnNotificationButton( PrivacyHubNotificationController::kCombinedNotificationId, 0); EXPECT_TRUE(GetUserPref()); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); EXPECT_EQ(histogram_tester_.GetBucketCount( privacy_hub_metrics:: kPrivacyHubCameraEnabledFromNotificationHistogram, @@ -608,8 +599,7 @@ SetUserPref(true); // The notification should not be in the message center initially. - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); // This is the effect of an application starting to access the camera. controller_->ActiveApplicationsChanged(/*application_added=*/true); @@ -617,43 +607,33 @@ // Disabling camera using the software switch. SetUserPref(false); - if (IsPrivacyIndicatorsEnabled() || IsVideoConferenceEnabled()) { - // No notification pops up if the switch is modified during the stream. - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + // No notification pops up if just the switch is modified. + EXPECT_FALSE(GetSWSwitchNotification()); - controller_->ActiveApplicationsChanged(/*application_added=*/true); - } + controller_->ActiveApplicationsChanged(/*application_added=*/true); - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); if (IsVideoConferenceEnabled()) { - EXPECT_FALSE(notification); + EXPECT_FALSE(GetSWSwitchNotification()); } else { - EXPECT_TRUE(notification); + EXPECT_TRUE(GetSWSwitchNotification()); } // The only active application stops accessing the camera the camera. controller_->ActiveApplicationsChanged(/*application_added=*/false); - if (IsPrivacyIndicatorsEnabled() || IsVideoConferenceEnabled()) { - // The notification should still be shown, because two apps were accessing - // the camera. - if (IsVideoConferenceEnabled()) { - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); - } else { - EXPECT_TRUE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); - } - controller_->ActiveApplicationsChanged(/*application_added=*/false); + // The notification should still be shown, because two apps were accessing + // the camera. + if (IsVideoConferenceEnabled()) { + EXPECT_FALSE(GetSWSwitchNotification()); + } else { + EXPECT_TRUE(GetSWSwitchNotification()); } - // Existing notification - // `PrivacyHubNotificationController::kCombinedNotificationId` should be - // removed as the number of active applications is 0 now. - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + controller_->ActiveApplicationsChanged(/*application_added=*/false); + + // Existing notification should be removed as the number of active + // applications is 0 now. + EXPECT_FALSE(GetSWSwitchNotification()); } // Tests if the camera software switch notification contains proper text. @@ -663,16 +643,14 @@ } // Disabling camera using the software switch. SetUserPref(false); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); // Launch app1 that's accessing camera, a notification should be displayed // with the application name in the notification body. const std::u16string app1 = u"app1"; LaunchAppAccessingCamera(app1); - message_center::Notification* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); + message_center::Notification* notification = GetSWSwitchNotification(); ASSERT_TRUE(notification); EXPECT_EQ( l10n_util::GetStringUTF16(IDS_PRIVACY_HUB_CAMERA_OFF_NOTIFICATION_TITLE), @@ -689,8 +667,7 @@ const std::u16string app2 = u"app2"; LaunchAppAccessingCamera(app2); - notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); + notification = GetSWSwitchNotification(); ASSERT_TRUE(notification); EXPECT_EQ( l10n_util::GetStringFUTF16( @@ -703,8 +680,7 @@ const std::u16string app3 = u"app3"; LaunchAppAccessingCamera(app3); - notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); + notification = GetSWSwitchNotification(); ASSERT_TRUE(notification); EXPECT_EQ(l10n_util::GetStringUTF16( IDS_PRIVACY_HUB_CAMERA_OFF_NOTIFICATION_MESSAGE), @@ -714,8 +690,7 @@ // contain the name of the two remaining applications. CloseAppAccessingCamera(app2); - notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); + notification = GetSWSwitchNotification(); ASSERT_TRUE(notification); EXPECT_EQ( l10n_util::GetStringFUTF16( @@ -815,20 +790,17 @@ for (bool app_running : {false, true}) { if (app_running) { LaunchAppAccessingCamera(app_name); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); } // Disable camera using the software switch. No notification should show. SetUserPref(/*allowed=*/false); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); // Re-enable the camera, there still should be no notification. SetUserPref(/*allowed=*/true); - EXPECT_FALSE(FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId)); + EXPECT_FALSE(GetSWSwitchNotification()); // Repeat the test with the hardware switch. CameraPrivacySwitchController& controller = @@ -895,12 +867,10 @@ // Simulate an app accessing the camera, a notification should show. LaunchAppAccessingCamera(u"app_name"); - auto* notification = FindNotificationById( - PrivacyHubNotificationController::kCombinedNotificationId); if (IsVideoConferenceEnabled() || !software_switch) { - EXPECT_FALSE(notification); + EXPECT_FALSE(GetSWSwitchNotification()); } else { - EXPECT_TRUE(notification); + EXPECT_TRUE(GetSWSwitchNotification()); } // Reverses the switch, the notification should go away. scoped_software_switch_toggler.reset();
diff --git a/ash/system/privacy_hub/microphone_privacy_switch_controller.cc b/ash/system/privacy_hub/microphone_privacy_switch_controller.cc index 117ebc7..265649f 100644 --- a/ash/system/privacy_hub/microphone_privacy_switch_controller.cc +++ b/ash/system/privacy_hub/microphone_privacy_switch_controller.cc
@@ -16,9 +16,11 @@ #include "ash/system/privacy_hub/privacy_hub_controller.h" #include "ash/system/privacy_hub/privacy_hub_notification_controller.h" #include "ash/system/system_notification_controller.h" +#include "base/check.h" #include "base/functional/bind.h" #include "chromeos/ash/components/audio/cras_audio_handler.h" #include "components/prefs/pref_service.h" +#include "ui/message_center/public/cpp/notification_types.h" namespace ash { namespace { @@ -81,18 +83,8 @@ mic_muted_by_mute_switch_ = CrasAudioHandler::Get()->input_muted_by_microphone_mute_switch(); - // The `VideoConferenceTrayController` shows this info as a toast. - if (!features::IsVideoConferenceEnabled()) { - if (features::IsPrivacyIndicatorsEnabled()) { - // Only show the notification when a stream starts (handled in - // `OnNumberOfInputStreamsWithPermissionChanged()`), and always dismiss - // the notification if mute is turned off. - if (!mic_mute_on_) { - SetMicrophoneNotificationVisible(mic_mute_on_); - } - } else if (input_stream_count_) { - SetMicrophoneNotificationVisible(mic_mute_on_); - } + if (!mic_mute_on_) { + SetMicrophoneNotificationVisible(false); } // `pref_change_registrar_` is only initialized after a user logs in. @@ -128,17 +120,30 @@ return; } - if (features::IsPrivacyIndicatorsEnabled()) { - // If the hardware switch is on, call `SetMicrophoneNotificationVisible()` - // to ensure the text is updated to reflect the hw switch. Only show the - // notification when a stream starts (handled in - // `OnNumberOfInputStreamsWithPermissionChanged()`), and always dismiss the - // notification if mute is turned off. - if (mic_muted_by_mute_switch_ || !mic_mute_on_) { + auto* privacy_hub_notification_controller = + PrivacyHubNotificationController::Get(); + CHECK(privacy_hub_notification_controller); + + if (mic_mute_on_) { + bool is_mic_sw_switch_notification_shown = + privacy_hub_notification_controller + ->IsSoftwareSwitchNotificationDisplayedForSensor( + SensorDisabledNotificationDelegate::Sensor::kMicrophone); + + if (is_mic_sw_switch_notification_shown) { + // Set priority to LOW to make sure the notification will be just added + // to the message center (and not be shown as a popup). + privacy_hub_notification_controller + ->SetPriorityForMicrophoneHardwareNotification( + message_center::NotificationPriority::LOW_PRIORITY); SetMicrophoneNotificationVisible(mic_mute_on_); + // Restore priority to DEFAULT - so next notifications to be popups. + privacy_hub_notification_controller + ->SetPriorityForMicrophoneHardwareNotification( + message_center::NotificationPriority::DEFAULT_PRIORITY); } - } else if (input_stream_count_) { - SetMicrophoneNotificationVisible(mic_mute_on_); + } else { + SetMicrophoneNotificationVisible(false); } } @@ -186,8 +191,8 @@ return; } - PrivacyHubNotificationController* const privacy_hub_notification_controller = - Shell::Get()->system_notification_controller()->privacy_hub(); + auto* privacy_hub_notification_controller = + PrivacyHubNotificationController::Get(); if (visible) { if (mic_muted_by_mute_switch_) { @@ -212,8 +217,9 @@ return; } - PrivacyHubNotificationController* const privacy_hub_notification_controller = - Shell::Get()->system_notification_controller()->privacy_hub(); + auto* privacy_hub_notification_controller = + PrivacyHubNotificationController::Get(); + CHECK(privacy_hub_notification_controller); if (mic_muted_by_mute_switch_) { privacy_hub_notification_controller->UpdateHardwareSwitchNotification(
diff --git a/ash/system/privacy_hub/microphone_privacy_switch_controller_unittest.cc b/ash/system/privacy_hub/microphone_privacy_switch_controller_unittest.cc index ecd627d..19c65c20 100644 --- a/ash/system/privacy_hub/microphone_privacy_switch_controller_unittest.cc +++ b/ash/system/privacy_hub/microphone_privacy_switch_controller_unittest.cc
@@ -349,18 +349,12 @@ EXPECT_FALSE(IsAnyMicNotificationVisible()); - // Mute the mic, a notification should be shown and also popup. If Video - // Conference or Privacy Indicators are enabled, no notifier is sent if muted - // during a session. + // Mute the mic, no notifications to be shown (as no new apps started, doesn't + // matter if Video Conference or Privacy Indicators are enabled). MuteMicrophone(); - if (IsPrivacyIndicatorsEnabled() || IsVideoConferenceEnabled()) { - EXPECT_FALSE(GetSWSwitchNotification()); - EXPECT_FALSE(GetSWSwitchPopupNotification()); - } else { - EXPECT_TRUE(GetSWSwitchNotification()); - EXPECT_TRUE(GetSWSwitchPopupNotification()); - } + EXPECT_FALSE(GetSWSwitchNotification()); + EXPECT_FALSE(GetSWSwitchPopupNotification()); } TEST_P(PrivacyHubMicrophoneControllerTest, @@ -596,11 +590,11 @@ if (IsVideoConferenceEnabled()) { EXPECT_FALSE(GetHWSwitchNotification()); - EXPECT_FALSE(GetHWSwitchNotification()); + EXPECT_FALSE(GetHWSwitchPopupNotification()); } else { // Verify the notification popup is shown. EXPECT_TRUE(GetHWSwitchNotification()); - EXPECT_TRUE(GetHWSwitchNotification()); + EXPECT_FALSE(GetHWSwitchPopupNotification()); } // The software switch notification is instantly hidden. @@ -640,23 +634,19 @@ LaunchApp(u"junior"); SetMicrophoneMuteSwitchState(/*muted=*/true); - // Notification should be shown and also popup. If Video Conference or Privacy - // Indicators are enabled, this notification is not sent. - if (IsPrivacyIndicatorsEnabled() || IsVideoConferenceEnabled()) { - EXPECT_FALSE(GetHWSwitchNotification()); - EXPECT_FALSE(GetHWSwitchPopupNotification()); - } else { - EXPECT_TRUE(GetHWSwitchNotification()); - EXPECT_TRUE(GetHWSwitchPopupNotification()); - } + // No notifications to be shown if microphone was turned off. + EXPECT_FALSE(GetHWSwitchNotification()); + EXPECT_FALSE(GetHWSwitchPopupNotification()); // Add another audio input stream, and verify the notification popup shows. LaunchApp(u"junior1"); if (IsVideoConferenceEnabled()) { + // If an app started while video conference is on - no notifications. EXPECT_FALSE(GetHWSwitchNotification()); EXPECT_FALSE(GetHWSwitchPopupNotification()); } else { + // Otherwise - it shall be a notification. EXPECT_TRUE(GetHWSwitchNotification()); EXPECT_TRUE(GetHWSwitchPopupNotification()); } @@ -778,7 +768,7 @@ EXPECT_FALSE(GetHWSwitchPopupNotification()); } else { EXPECT_TRUE(GetHWSwitchNotification()); - EXPECT_TRUE(GetHWSwitchPopupNotification()); + EXPECT_FALSE(GetHWSwitchPopupNotification()); EXPECT_EQ(l10n_util::GetStringUTF16( IDS_MICROPHONE_MUTED_BY_HW_SWITCH_NOTIFICATION_TITLE), GetHWSwitchNotification()->title());
diff --git a/ash/system/privacy_hub/privacy_hub_notification.cc b/ash/system/privacy_hub/privacy_hub_notification.cc index f730e92..8c7d7ba 100644 --- a/ash/system/privacy_hub/privacy_hub_notification.cc +++ b/ash/system/privacy_hub/privacy_hub_notification.cc
@@ -21,15 +21,6 @@ #include "ui/message_center/message_center.h" #include "ui/message_center/public/cpp/notification.h" -namespace { - -// Returns true if a notification with id `id` is in the message center. -bool HasNotification(const std::string& id) { - return message_center::MessageCenter::Get()->FindNotificationById(id); -} - -} // namespace - namespace ash { bool operator<(const PrivacyHubNotificationDescriptor& descriptor1, @@ -154,7 +145,7 @@ void PrivacyHubNotification::Show() { SetNotificationContent(); - if (HasNotification(id_)) { + if (IsShown()) { // The notification is already in the message center. Update the content and // pop it up again. message_center::MessageCenter::Get()->UpdateNotification( @@ -170,14 +161,26 @@ /*by_user=*/false); } +bool PrivacyHubNotification::IsShown() { + return message_center::MessageCenter::Get()->FindNotificationById(id_); +} + void PrivacyHubNotification::Update() { - if (HasNotification(id_)) { + if (IsShown()) { SetNotificationContent(); message_center::MessageCenter::Get()->UpdateNotification( id_, builder_.BuildPtr()); } } +void PrivacyHubNotification::SetPriority( + message_center::NotificationPriority priority) { + message_center::RichNotificationData optional_fields = + builder_.GetOptionalFields(); + optional_fields.priority = priority; + builder_.SetOptionalFields(optional_fields); +} + void PrivacyHubNotification::SetSensors( const SensorDisabledNotificationDelegate::SensorSet sensors) { DCHECK_GT(notification_descriptors_.size(), 1u) @@ -235,9 +238,11 @@ DCHECK(descriptor != notification_descriptors_.end()); if (has_sensors_changed_) { - message_center::RichNotificationData optional_fields; + message_center::RichNotificationData optional_fields = + builder_.GetOptionalFields(); optional_fields.remove_on_click = true; + optional_fields.buttons.clear(); for (int button_id : descriptor->button_ids()) { optional_fields.buttons.emplace_back( l10n_util::GetStringUTF16(button_id));
diff --git a/ash/system/privacy_hub/privacy_hub_notification.h b/ash/system/privacy_hub/privacy_hub_notification.h index 1bc0578..99e0488 100644 --- a/ash/system/privacy_hub/privacy_hub_notification.h +++ b/ash/system/privacy_hub/privacy_hub_notification.h
@@ -132,12 +132,18 @@ // Hide the notification from the message center. void Hide(); + // Returns true if this notificaiton is shown (present in the message center). + bool IsShown(); + // Silently updates the notification when needed, for example, when an // application stops accessing a sensor and the name of that application needs // to be removed from the notification without letting the notification pop up // again. void Update(); + // Updates priority for notification that will be created via Show/Update. + void SetPriority(message_center::NotificationPriority priority); + // Updates the value of `sensors_`. void SetSensors(SensorDisabledNotificationDelegate::SensorSet sensors);
diff --git a/ash/system/privacy_hub/privacy_hub_notification_controller.cc b/ash/system/privacy_hub/privacy_hub_notification_controller.cc index bbc7eaf..f08acbe8 100644 --- a/ash/system/privacy_hub/privacy_hub_notification_controller.cc +++ b/ash/system/privacy_hub/privacy_hub_notification_controller.cc
@@ -194,6 +194,17 @@ } } +bool PrivacyHubNotificationController:: + IsSoftwareSwitchNotificationDisplayedForSensor(Sensor sensor) { + return combined_notification_->IsShown() && sensors_.Has(sensor); +} + +void PrivacyHubNotificationController:: + SetPriorityForMicrophoneHardwareNotification( + message_center::NotificationPriority priority) { + microphone_hw_switch_notification_->SetPriority(priority); +} + void PrivacyHubNotificationController::ShowHardwareSwitchNotification( const Sensor sensor) { switch (sensor) {
diff --git a/ash/system/privacy_hub/privacy_hub_notification_controller.h b/ash/system/privacy_hub/privacy_hub_notification_controller.h index ac9bfca..8dc527c 100644 --- a/ash/system/privacy_hub/privacy_hub_notification_controller.h +++ b/ash/system/privacy_hub/privacy_hub_notification_controller.h
@@ -43,6 +43,13 @@ // accessing `sensor`. void UpdateSoftwareSwitchNotification(Sensor sensor); + // Checks if a sensor-related notification is shown. + bool IsSoftwareSwitchNotificationDisplayedForSensor(Sensor sensor); + + // Allows to alter priority for the upcoming microphone hw notifications. + void SetPriorityForMicrophoneHardwareNotification( + message_center::NotificationPriority priority); + // Called by any sensor system when a hardware switch notification for // `sensor` should be shown to the user. void ShowHardwareSwitchNotification(Sensor sensor);
diff --git a/ash/system/privacy_hub/privacy_hub_notification_controller_unittest.cc b/ash/system/privacy_hub/privacy_hub_notification_controller_unittest.cc index 3af8fc7..8759d39b 100644 --- a/ash/system/privacy_hub/privacy_hub_notification_controller_unittest.cc +++ b/ash/system/privacy_hub/privacy_hub_notification_controller_unittest.cc
@@ -68,8 +68,7 @@ // AshTestBase: void SetUp() override { AshTestBase::SetUp(); - controller_ = - Shell::Get()->system_notification_controller()->privacy_hub_.get(); + controller_ = PrivacyHubNotificationController::Get(); } void TearDown() override { AshTestBase::TearDown(); }
diff --git a/ash/system/unified/quick_settings_footer.cc b/ash/system/unified/quick_settings_footer.cc index 2db1ff5f..0fc708b 100644 --- a/ash/system/unified/quick_settings_footer.cc +++ b/ash/system/unified/quick_settings_footer.cc
@@ -155,8 +155,7 @@ SetImageModel(ButtonState::STATE_NORMAL, ui::ImageModel::FromImageSkia(PowerStatus::GetBatteryImage( - info, kUnifiedTrayBatteryIconSize, battery_icon_color, - battery_icon_color))); + info, kUnifiedTrayBatteryIconSize, battery_icon_color))); } QuickSettingsFooter::QuickSettingsFooter(
diff --git a/ash/system/unified/unified_system_info_view.cc b/ash/system/unified/unified_system_info_view.cc index e21baba..3a222e7 100644 --- a/ash/system/unified/unified_system_info_view.cc +++ b/ash/system/unified/unified_system_info_view.cc
@@ -242,8 +242,7 @@ PowerStatus::Get()->GetBatteryImageInfo(); info.alert_if_low = false; battery_image_->SetImage(PowerStatus::GetBatteryImage( - info, kUnifiedTrayBatteryIconSize, battery_icon_color, - battery_icon_color, badge_color)); + info, kUnifiedTrayBatteryIconSize, battery_icon_color, badge_color)); } // Owned by this view, which is owned by views hierarchy.
diff --git a/ash/system/video_conference/bubble/bubble_view.cc b/ash/system/video_conference/bubble/bubble_view.cc index 520a596..b8cf496 100644 --- a/ash/system/video_conference/bubble/bubble_view.cc +++ b/ash/system/video_conference/bubble/bubble_view.cc
@@ -72,4 +72,9 @@ } } +void BubbleView::ChildPreferredSizeChanged(View* child) { + PreferredSizeChanged(); + SizeToContents(); +} + } // namespace ash::video_conference
diff --git a/ash/system/video_conference/bubble/bubble_view.h b/ash/system/video_conference/bubble/bubble_view.h index 0521c6f..83ca42a1 100644 --- a/ash/system/video_conference/bubble/bubble_view.h +++ b/ash/system/video_conference/bubble/bubble_view.h
@@ -7,6 +7,10 @@ #include "ash/system/tray/tray_bubble_view.h" +namespace views { +class View; +} // namespace views + namespace ash { class VideoConferenceTrayController; @@ -25,6 +29,7 @@ // views::View: void AddedToWidget() override; + void ChildPreferredSizeChanged(View* child) override; private: // Unowned by `BubbleView`.
diff --git a/ash/system/video_conference/bubble/return_to_app_panel.cc b/ash/system/video_conference/bubble/return_to_app_panel.cc index 28f190ad..14b607d 100644 --- a/ash/system/video_conference/bubble/return_to_app_panel.cc +++ b/ash/system/video_conference/bubble/return_to_app_panel.cc
@@ -12,11 +12,15 @@ #include "ash/system/video_conference/bubble/bubble_view_ids.h" #include "ash/system/video_conference/video_conference_tray_controller.h" #include "base/strings/utf_string_conversions.h" +#include "base/time/time.h" #include "base/unguessable_token.h" #include "chromeos/crosapi/mojom/video_conference.mojom.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/models/image_model.h" #include "ui/chromeos/styles/cros_tokens_color_mappings.h" +#include "ui/compositor/scoped_animation_duration_scale_mode.h" +#include "ui/gfx/animation/linear_animation.h" +#include "ui/gfx/animation/tween.h" #include "ui/gfx/canvas.h" #include "ui/gfx/scoped_canvas.h" #include "ui/views/background.h" @@ -35,6 +39,8 @@ const int kReturnToAppButtonIconsSpacing = 2; const int kReturnToAppIconSize = 20; +constexpr auto kPanelBoundsChangeAnimationDuration = base::Milliseconds(200); + // Creates a view containing camera, microphone, and screen share icons that // shows capturing state of a media app. std::unique_ptr<views::View> CreateReturnToAppIconsContainer( @@ -197,6 +203,9 @@ // TODO(b/253646076): Double check accessible name for this button. SetAccessibleName(display_text); + + // When we show the bubble for the first time, only the top row is visible. + SetVisible(is_top_row); } ReturnToAppButton::~ReturnToAppButton() = default; @@ -217,6 +226,12 @@ return; } + // If the expand/collapse animation is running, we should not toggle the state + // (to avoid spam clicking this button and snapping the animation). + if (panel_->IsExpandCollapseAnimationRunning()) { + return; + } + // For summary row, toggle the expand state. expanded_ = !expanded_; @@ -232,6 +247,64 @@ } // ----------------------------------------------------------------------------- +// ReturnToAppContainer: + +ReturnToAppPanel::ReturnToAppContainer::ReturnToAppContainer() + : views::AnimationDelegateViews(this), + animation_(std::make_unique<gfx::LinearAnimation>( + kPanelBoundsChangeAnimationDuration, + gfx::LinearAnimation::kDefaultFrameRate, + /*delegate=*/this)) {} + +ReturnToAppPanel::ReturnToAppContainer::~ReturnToAppContainer() = default; + +void ReturnToAppPanel::ReturnToAppContainer::StartExpandCollapseAnimation() { + // Animation should be guarded not to perform in `ReturnToAppButton` if + // there's a current running animation. + CHECK(!animation_->is_animating()); + + animation_->Start(); +} + +void ReturnToAppPanel::ReturnToAppContainer::AnimationProgressed( + const gfx::Animation* animation) { + PreferredSizeChanged(); +} + +void ReturnToAppPanel::ReturnToAppContainer::AnimationEnded( + const gfx::Animation* animation) { + PreferredSizeChanged(); +} + +void ReturnToAppPanel::ReturnToAppContainer::AnimationCanceled( + const gfx::Animation* animation) { + AnimationEnded(animation); +} + +gfx::Size ReturnToAppPanel::ReturnToAppContainer::CalculatePreferredSize() + const { + gfx::Size size = views::View::CalculatePreferredSize(); + + if (!animation_->is_animating()) { + return size; + } + + auto tween_type = expanded_target_ ? gfx::Tween::ACCEL_20_DECEL_100 + : gfx::Tween::ACCEL_40_DECEL_100_3; + + // The height will be determined by adding the extra height with the previous + // height of the container before the animation starts. The extra height will + // be a positive value when the panel is expanding, and negative if the panel + // is collapsing. + double extra_height = + (size.height() - height_before_animation_) * + gfx::Tween::CalculateValue(tween_type, animation_->GetCurrentValue()); + + size.set_height(height_before_animation_ + extra_height); + return size; +} + +// ----------------------------------------------------------------------------- // ReturnToAppPanel: ReturnToAppPanel::ReturnToAppPanel() { @@ -243,7 +316,7 @@ .SetCrossAxisAlignment(views::LayoutAlignment::kStretch) .SetInteriorMargin(gfx::Insets::TLBR(16, 16, 0, 16)); - auto container_view = std::make_unique<views::View>(); + auto container_view = std::make_unique<ReturnToAppContainer>(); container_view->SetLayoutManager(std::make_unique<views::FlexLayout>()) ->SetOrientation(views::LayoutOrientation::kVertical) .SetMainAxisAlignment(views::LayoutAlignment::kCenter) @@ -268,7 +341,14 @@ } } +bool ReturnToAppPanel::IsExpandCollapseAnimationRunning() { + return container_view_->animation()->is_animating(); +} + void ReturnToAppPanel::OnExpandedStateChanged(bool expanded) { + container_view_->set_height_before_animation( + container_view_->GetPreferredSize().height()); + for (auto* child : container_view_->children()) { // Skip the first child since we always show the summary row. Otherwise, // show the other rows if `expanded` and vice versa. @@ -277,6 +357,20 @@ } child->SetVisible(expanded); } + + // In tests, widget might be null and the animation, in some cases, might be + // configured to have zero duration. + if (GetWidget() && + ui::ScopedAnimationDurationScaleMode::duration_multiplier() != + ui::ScopedAnimationDurationScaleMode::ZERO_DURATION) { + container_view_->set_expanded_target(expanded); + container_view_->StartExpandCollapseAnimation(); + } else { + PreferredSizeChanged(); + } +} + +void ReturnToAppPanel::ChildPreferredSizeChanged(View* child) { PreferredSizeChanged(); } @@ -333,8 +427,6 @@ app->is_capturing_microphone, app->is_capturing_screen, GetMediaAppDisplayText(app))); } - - OnExpandedStateChanged(false); } } // namespace ash::video_conference \ No newline at end of file
diff --git a/ash/system/video_conference/bubble/return_to_app_panel.h b/ash/system/video_conference/bubble/return_to_app_panel.h index 53cee83..b3a0f4a 100644 --- a/ash/system/video_conference/bubble/return_to_app_panel.h +++ b/ash/system/video_conference/bubble/return_to_app_panel.h
@@ -5,12 +5,15 @@ #ifndef ASH_SYSTEM_VIDEO_CONFERENCE_BUBBLE_RETURN_TO_APP_PANEL_H_ #define ASH_SYSTEM_VIDEO_CONFERENCE_BUBBLE_RETURN_TO_APP_PANEL_H_ +#include <memory> #include <string> #include "ash/ash_export.h" #include "base/memory/weak_ptr.h" #include "base/observer_list_types.h" #include "chromeos/crosapi/mojom/video_conference.mojom-forward.h" +#include "ui/gfx/geometry/size.h" +#include "ui/views/animation/animation_delegate_views.h" #include "ui/views/controls/button/button.h" #include "ui/views/view.h" @@ -18,6 +21,11 @@ class UnguessableToken; } // namespace base +namespace gfx { +class Animation; +class LinearAnimation; +} // namespace gfx + namespace views { class ImageView; class Label; @@ -124,21 +132,72 @@ ReturnToAppPanel& operator=(const ReturnToAppPanel&) = delete; ~ReturnToAppPanel() override; + // True if the container is running its expand/collapse animation. + bool IsExpandCollapseAnimationRunning(); + int max_capturing_count() { return max_capturing_count_; } private: friend class ReturnToAppPanelTest; friend class VideoConferenceIntegrationTest; + // The container that is the parent of all the buttons inside this panel. + // Mainly used to handle expand/collapse animation. + class ReturnToAppContainer : public views::View, + public views::AnimationDelegateViews { + public: + ReturnToAppContainer(); + ReturnToAppContainer(const ReturnToAppContainer&) = delete; + ReturnToAppContainer& operator=(const ReturnToAppContainer&) = delete; + ~ReturnToAppContainer() override; + + // Starts the expand/collapse animation. + void StartExpandCollapseAnimation(); + + gfx::LinearAnimation* animation() { return animation_.get(); } + + void set_height_before_animation(int height_before_animation) { + height_before_animation_ = height_before_animation; + } + + void set_expanded_target(bool expanded_target) { + expanded_target_ = expanded_target; + } + + private: + friend class ReturnToAppPanelTest; + + // views::AnimationDelegateViews: + void AnimationProgressed(const gfx::Animation* animation) override; + void AnimationEnded(const gfx::Animation* animation) override; + void AnimationCanceled(const gfx::Animation* animation) override; + + // views::View: + gfx::Size CalculatePreferredSize() const override; + + // Animation used for the expand/collapse animation. + std::unique_ptr<gfx::LinearAnimation> animation_; + + // Keeps track of the height of the panel before animation starts. This is + // used for the expand/collapse animation. + int height_before_animation_ = 0; + + // Target expand state of the panel after the animation is completed. + bool expanded_target_ = false; + }; + // ReturnToAppButton::Observer: void OnExpandedStateChanged(bool expanded) override; + // views::View: + void ChildPreferredSizeChanged(View* child) override; + // Used by the ctor to add `ReturnToAppButton`(s) to the panel. void AddButtonsToPanel(MediaApps apps); // The container of the panel, which contains all the views and is used for // setting padding and background painting. Owned by the views hierarchy. - views::View* container_view_ = nullptr; + ReturnToAppContainer* container_view_ = nullptr; // The view at the top of the panel, summarizing the information of all media // apps. This pointer will be null when there's one or fewer media apps. Owned
diff --git a/ash/system/video_conference/bubble/return_to_app_panel_unittest.cc b/ash/system/video_conference/bubble/return_to_app_panel_unittest.cc index 2b4b998..6cbafff 100644 --- a/ash/system/video_conference/bubble/return_to_app_panel_unittest.cc +++ b/ash/system/video_conference/bubble/return_to_app_panel_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "ash/system/video_conference/bubble/return_to_app_panel.h" + #include <memory> #include "ash/constants/ash_features.h" @@ -19,6 +20,8 @@ #include "base/unguessable_token.h" #include "chromeos/crosapi/mojom/video_conference.mojom.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/compositor/scoped_animation_duration_scale_mode.h" +#include "ui/gfx/animation/linear_animation.h" #include "ui/views/controls/image_view.h" #include "ui/views/controls/label.h" @@ -105,12 +108,33 @@ BubbleViewID::kReturnToApp)); } - views::View* GetReturnToAppContainer(ReturnToAppPanel* panel) { + ReturnToAppPanel::ReturnToAppContainer* GetReturnToAppContainer( + ReturnToAppPanel* panel) { return panel->container_view_; } FakeVideoConferenceTrayController* controller() { return controller_.get(); } + // Get the instance that handle bounds change for the expand/collapse + // animation. + gfx::LinearAnimation* GetBoundsChangeAnimation() { + return GetReturnToAppContainer(GetReturnToAppPanel())->animation_.get(); + } + + void AnimateToValue(double animation_value) { + auto* animation = GetBoundsChangeAnimation(); + EXPECT_TRUE(animation->is_animating()); + animation->SetCurrentValue(animation_value); + GetReturnToAppContainer(GetReturnToAppPanel()) + ->AnimationProgressed(animation); + } + + void SimulateAnimationEnded() { + auto* animation = GetBoundsChangeAnimation(); + animation->End(); + GetReturnToAppContainer(GetReturnToAppPanel())->AnimationEnded(animation); + } + private: base::test::ScopedFeatureList scoped_feature_list_; std::unique_ptr<FakeVideoConferenceTrayController> controller_; @@ -289,6 +313,9 @@ } TEST_F(ReturnToAppPanelTest, ReturnToApp) { + ui::ScopedAnimationDurationScaleMode scoped_animation_duration_scale_mode( + ui::ScopedAnimationDurationScaleMode::ZERO_DURATION); + auto app_id1 = base::UnguessableToken::Create(); auto app_id2 = base::UnguessableToken::Create(); @@ -329,4 +356,113 @@ EXPECT_TRUE(controller()->app_to_launch_state_[app_id2]); } +TEST_F(ReturnToAppPanelTest, ExpandAnimation) { + ui::ScopedAnimationDurationScaleMode scoped_animation_duration_scale_mode( + ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); + + controller()->ClearMediaApps(); + controller()->AddMediaApp(CreateFakeMediaApp( + /*is_capturing_camera=*/true, /*is_capturing_microphone=*/false, + /*is_capturing_screen=*/false, /*title=*/u"Meet", + /*url=*/kMeetTestUrl)); + controller()->AddMediaApp(CreateFakeMediaApp( + /*is_capturing_camera=*/false, /*is_capturing_microphone=*/true, + /*is_capturing_screen=*/true, /*title=*/u"Zoom", + /*url=*/"")); + + LeftClickOn(toggle_bubble_button()); + + auto* return_to_app_panel = GetReturnToAppPanel(); + auto* return_to_app_container = GetReturnToAppContainer(return_to_app_panel); + auto* summary_row = static_cast<ReturnToAppButton*>( + return_to_app_container->children().front()); + ASSERT_FALSE(summary_row->expanded()); + + auto panel_initial_height = return_to_app_panel->size().height(); + auto* vc_bubble = video_conference_tray()->GetBubbleView(); + auto bubble_initial_height = vc_bubble->size().height(); + + // The animation should start after we click the summary row to expand the + // panel. + LeftClickOn(summary_row); + EXPECT_TRUE(GetBoundsChangeAnimation()->is_animating()); + + AnimateToValue(0.5); + + auto panel_mid_animation_height = return_to_app_panel->size().height(); + auto bubble_mid_animation_height = vc_bubble->size().height(); + + // Make sure that the panel is expanding and the bubble is also expanding in + // the same amount. + EXPECT_GT(panel_mid_animation_height, panel_initial_height); + EXPECT_EQ(panel_mid_animation_height - panel_initial_height, + bubble_mid_animation_height - bubble_initial_height); + + // Test the same thing when animation ends. + SimulateAnimationEnded(); + + auto panel_end_animation_height = return_to_app_panel->size().height(); + auto bubble_end_animation_height = vc_bubble->size().height(); + + EXPECT_GT(panel_end_animation_height, panel_mid_animation_height); + EXPECT_EQ(panel_end_animation_height - panel_mid_animation_height, + bubble_end_animation_height - bubble_mid_animation_height); +} + +TEST_F(ReturnToAppPanelTest, CollapseAnimation) { + ui::ScopedAnimationDurationScaleMode scoped_animation_duration_scale_mode( + ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); + + controller()->ClearMediaApps(); + controller()->AddMediaApp(CreateFakeMediaApp( + /*is_capturing_camera=*/true, /*is_capturing_microphone=*/false, + /*is_capturing_screen=*/false, /*title=*/u"Meet", + /*url=*/kMeetTestUrl)); + controller()->AddMediaApp(CreateFakeMediaApp( + /*is_capturing_camera=*/false, /*is_capturing_microphone=*/true, + /*is_capturing_screen=*/true, /*title=*/u"Zoom", + /*url=*/"")); + + LeftClickOn(toggle_bubble_button()); + + auto* return_to_app_panel = GetReturnToAppPanel(); + auto* return_to_app_container = GetReturnToAppContainer(return_to_app_panel); + auto* summary_row = static_cast<ReturnToAppButton*>( + return_to_app_container->children().front()); + + LeftClickOn(summary_row); + SimulateAnimationEnded(); + ASSERT_TRUE(summary_row->expanded()); + + auto panel_initial_height = return_to_app_panel->size().height(); + auto* vc_bubble = video_conference_tray()->GetBubbleView(); + auto bubble_initial_height = vc_bubble->size().height(); + + // The animation should start after we click the summary row again to collapse + // the panel. + LeftClickOn(summary_row); + EXPECT_TRUE(GetBoundsChangeAnimation()->is_animating()); + + AnimateToValue(0.5); + + auto panel_mid_animation_height = return_to_app_panel->size().height(); + auto bubble_mid_animation_height = vc_bubble->size().height(); + + // Make sure that the panel is collapsing and the bubble is also collapsing in + // the same amount. + EXPECT_LT(panel_mid_animation_height, panel_initial_height); + EXPECT_EQ(panel_mid_animation_height - panel_initial_height, + bubble_mid_animation_height - bubble_initial_height); + + // Test the same thing when animation ends. + SimulateAnimationEnded(); + + auto panel_end_animation_height = return_to_app_panel->size().height(); + auto bubble_end_animation_height = vc_bubble->size().height(); + + EXPECT_LT(panel_end_animation_height, panel_mid_animation_height); + EXPECT_EQ(panel_end_animation_height - panel_mid_animation_height, + bubble_end_animation_height - bubble_mid_animation_height); +} + } // namespace ash::video_conference \ No newline at end of file
diff --git a/ash/webui/personalization_app/personalization_app_ui.cc b/ash/webui/personalization_app/personalization_app_ui.cc index 0b58335..e316802 100644 --- a/ash/webui/personalization_app/personalization_app_ui.cc +++ b/ash/webui/personalization_app/personalization_app_ui.cc
@@ -122,6 +122,22 @@ {"dynamicColorLabel", IDS_PERSONALIZATION_APP_THEME_DYNAMIC_COLOR_LABEL}, {"dynamicColorDescription", IDS_PERSONALIZATION_APP_THEME_DYNAMIC_COLOR_DESCRIPTION}, + {"colorSchemeTonalSpot", + IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_TONAL_SPOT}, + {"colorSchemeNeutral", + IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_NEUTRAL}, + {"colorSchemeVibrant", + IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_VIBRANT}, + {"colorSchemeExpressive", + IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_EXPRESSIVE}, + {"staticColorGoogleBlue", + IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_GOOGLE_BLUE}, + {"staticColorLightPink", + IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PINK}, + {"staticColorDarkGreen", + IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_DARK_GREEN}, + {"staticColorLightPurple", + IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PURPLE}, {"darkColorMode", IDS_PERSONALIZATION_APP_THEME_DARK_COLOR_MODE}, {"lightColorMode", IDS_PERSONALIZATION_APP_THEME_LIGHT_COLOR_MODE}, {"autoColorMode", IDS_PERSONALIZATION_APP_THEME_AUTO_COLOR_MODE},
diff --git a/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.html b/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.html index e7a332b..88c8030 100644 --- a/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.html +++ b/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.html
@@ -64,7 +64,7 @@ display: none; } - cr-button[aria-checked='true'] iron-icon[icon='personalization:circle_checkmark'] { + cr-button[aria-pressed='true'] iron-icon[icon='personalization:circle_checkmark'] { --iron-icon-height: 20px; --iron-icon-width: 20px; bottom: -4px; @@ -86,9 +86,8 @@ <div id="themeHeader"> <div id="themeTitle">$i18n{dynamicColorLabel}</div> <div id="dynamicColorToggleDescription">$i18n{dynamicColorDescription}</div> - <!-- TODO(b/253089237): Add the translated aria label. --> <cr-toggle checked="{{automaticSeedColorEnabled}}" id="dynamicColorToggle" - on-change="onToggleChanged_"> + on-change="onToggleChanged_" aria-labelledby="dynamicColorToggleDescription"> </cr-toggle> </div> <iron-a11y-keys id="colorSchemeKeys" keys="left right" on-keys-pressed="onColorSchemeKeysPress_"> @@ -105,7 +104,8 @@ tabindex$="[[getColorSchemeTabIndex_(colorScheme.scheme)]]" on-click="onClickColorSchemeButton_" data-color-scheme-id$="[[colorScheme.scheme]]" - aria-checked$="[[getColorSchemeAriaChecked_(colorScheme.scheme, colorSchemeSelected_)]]"> + aria-pressed$="[[getColorSchemeAriaPressed_(colorScheme.scheme, colorSchemeSelected_)]]" + aria-description$="[[getColorSchemeAriaDescription_(colorScheme.scheme)]]"> <div class="container"> <color-scheme-icon-svg scheme="[[colorScheme]]"></color-scheme-icon-svg> <iron-icon class="checkmark" icon="personalization:circle_checkmark"></iron-icon> @@ -122,7 +122,8 @@ <cr-button tabindex$="[[getStaticColorTabIndex_(staticColor.hexVal)]]" on-click="onClickStaticColorButton_" - aria-checked$="[[getStaticColorAriaChecked_(staticColor.hexVal, staticColorSelected_)]]"> + aria-pressed$="[[getStaticColorAriaPressed_(staticColor.hexVal, staticColorSelected_)]]" + aria-description$="[[getStaticColorAriaDescription_(staticColor.enumVal)]]"> <div class="container"> <svg> <circle style$="fill: [[staticColor.hexVal]]" cx="24" cy="24" r="24"></circle>
diff --git a/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.ts b/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.ts index 91769bd..b2450c7 100644 --- a/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.ts +++ b/ash/webui/personalization_app/resources/js/theme/dynamic_color_element.ts
@@ -176,20 +176,53 @@ return isAutomaticSeedColorEnabled(colorScheme); } - private getColorSchemeAriaChecked_( + private getColorSchemeAriaPressed_( colorScheme: number, colorSchemeSelected: number|null): 'true'|'false' { - const checkedColorScheme = colorSchemeSelected || DEFAULT_COLOR_SCHEME; - return checkedColorScheme === colorScheme ? 'true' : 'false'; + const pressedColorScheme = colorSchemeSelected || DEFAULT_COLOR_SCHEME; + return pressedColorScheme === colorScheme ? 'true' : 'false'; } - private getStaticColorAriaChecked_( + private getColorSchemeAriaDescription_(colorScheme: ColorScheme): string { + switch (colorScheme) { + case ColorScheme.kTonalSpot: + return this.i18n('colorSchemeTonalSpot'); + case ColorScheme.kExpressive: + return this.i18n('colorSchemeExpressive'); + case ColorScheme.kNeutral: + return this.i18n('colorSchemeNeutral'); + case ColorScheme.kVibrant: + return this.i18n('colorSchemeVibrant'); + default: + console.warn('Invalid color scheme value.'); + return ''; + } + } + + private getStaticColorAriaPressed_( staticColor: string, staticColorSelected: SkColor|null): 'true'|'false' { - const checkedStaticColor = staticColorSelected || DEFAULT_STATIC_COLOR; - return staticColor === convertToRgbHexStr(checkedStaticColor.value) ? + const pressedStaticColor = staticColorSelected || DEFAULT_STATIC_COLOR; + return staticColor === convertToRgbHexStr(pressedStaticColor.value) ? 'true' : 'false'; } + private getStaticColorAriaDescription_(staticColor: StaticColor): string { + switch (staticColor) { + case StaticColor.kGoogleBlue: + return this.i18n('staticColorGoogleBlue'); + case StaticColor.kLightPink: + return this.i18n('staticColorLightPink'); + case StaticColor.kDarkGreen: + return this.i18n('staticColorDarkGreen'); + case StaticColor.kLightPurple: + return this.i18n('staticColorLightPurple'); + default: + console.warn('Invalid static color value.'); + return ''; + } + } + + private onStaticColorKeysPress_( e: CustomEvent<{key: string, keyboardEvent: KeyboardEvent}>) { this.onKeysPress_(
diff --git a/ash/webui/personalization_app/resources/js/time_of_day_banner_element.html b/ash/webui/personalization_app/resources/js/time_of_day_banner_element.html index a91ff233..920b489 100644 --- a/ash/webui/personalization_app/resources/js/time_of_day_banner_element.html +++ b/ash/webui/personalization_app/resources/js/time_of_day_banner_element.html
@@ -34,7 +34,6 @@ } #bannerDescription > a { color: var(--cros-link-color); - text-decoration: none; } #bannerTitle + #bannerDescription { margin-top: 2px;
diff --git a/base/BUILD.gn b/base/BUILD.gn index 96e1689..4ede18c 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -628,8 +628,6 @@ "sequence_token.h", "state_transitions.h", "stl_util.h", - "strings/abseil_string_conversions.cc", - "strings/abseil_string_conversions.h", "strings/abseil_string_number_conversions.cc", "strings/abseil_string_number_conversions.h", "strings/escape.cc", @@ -3251,7 +3249,6 @@ "sequence_token_unittest.cc", "state_transitions_unittest.cc", "stl_util_unittest.cc", - "strings/abseil_string_conversions_unittest.cc", "strings/abseil_string_number_conversions_unittest.cc", "strings/escape_unittest.cc", "strings/no_trigraphs_unittest.cc",
diff --git a/base/android/jni_generator/manual_jni_registration_proguard.flags b/base/android/jni_generator/manual_jni_registration_proguard.flags new file mode 100644 index 0000000..23d71205 --- /dev/null +++ b/base/android/jni_generator/manual_jni_registration_proguard.flags
@@ -0,0 +1,8 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Unused methods must be kept for manual jni registration. +-keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class !org.chromium.base.library_loader.**,** { + native <methods>; +}
diff --git a/base/android/proguard/chromium_code.flags b/base/android/proguard/chromium_code.flags index 5f5bb55..b8ee9ea7 100644 --- a/base/android/proguard/chromium_code.flags +++ b/base/android/proguard/chromium_code.flags
@@ -13,12 +13,8 @@ @androidx.annotation.Keep <methods>; } -# Even unused methods kept due to explicit jni registration: -# https://crbug.com/688465. --keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class !org.chromium.base.library_loader.**,** { - native <methods>; -} --keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class org.chromium.base.library_loader.** { +# Allow unused native methods to be removed, but prevent renaming on those that are kept. +-keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class ** { native <methods>; }
diff --git a/base/strings/DEPS b/base/strings/DEPS deleted file mode 100644 index db58635..0000000 --- a/base/strings/DEPS +++ /dev/null
@@ -1,8 +0,0 @@ -specific_include_rules = { - # absl::string_view is generally banned in Chromium. Including it is only - # allowed from abseil_string_conversions* to provide appropriate conversion - # functions from and to StringPiece at third party API boundaries. - "abseil_string_conversions(\.h|\.cc|_unittest.cc)": [ - "+third_party/abseil-cpp/absl/strings/string_view.h", - ], -}
diff --git a/base/strings/abseil_string_conversions.cc b/base/strings/abseil_string_conversions.cc deleted file mode 100644 index 9606ee2..0000000 --- a/base/strings/abseil_string_conversions.cc +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/strings/abseil_string_conversions.h" - -#include <vector> - -#include "base/containers/span.h" -#include "base/ranges/algorithm.h" -#include "base/strings/string_piece.h" -#include "third_party/abseil-cpp/absl/strings/string_view.h" - -namespace base { - -std::vector<absl::string_view> StringPiecesToStringViews( - span<const StringPiece> pieces) { - std::vector<absl::string_view> views(pieces.size()); - ranges::transform(pieces, views.begin(), &StringPieceToStringView); - return views; -} - -std::vector<StringPiece> StringViewsToStringPieces( - span<const absl::string_view> views) { - std::vector<StringPiece> pieces(views.size()); - ranges::transform(views, pieces.begin(), &StringViewToStringPiece); - return pieces; -} - -} // namespace base
diff --git a/base/strings/abseil_string_conversions.h b/base/strings/abseil_string_conversions.h deleted file mode 100644 index 5b8e045..0000000 --- a/base/strings/abseil_string_conversions.h +++ /dev/null
@@ -1,37 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef BASE_STRINGS_ABSEIL_STRING_CONVERSIONS_H_ -#define BASE_STRINGS_ABSEIL_STRING_CONVERSIONS_H_ - -#include <vector> - -#include "base/base_export.h" -#include "base/containers/span.h" -#include "base/strings/string_piece.h" -#include "third_party/abseil-cpp/absl/strings/string_view.h" - -namespace base { - -// Converts `piece` to a string view, pointing to the same piece of memory. -constexpr absl::string_view StringPieceToStringView(StringPiece piece) { - return {piece.data(), piece.size()}; -} - -// Converts `view` to a string piece, pointing to the same piece of memory. -constexpr StringPiece StringViewToStringPiece(absl::string_view view) { - return {view.data(), view.size()}; -} - -// Converts `pieces` to string views, pointing to the same piece of memory. -BASE_EXPORT std::vector<absl::string_view> StringPiecesToStringViews( - span<const StringPiece> pieces); - -// Converts `views` to string pieces, pointing to the same piece of memory. -BASE_EXPORT std::vector<StringPiece> StringViewsToStringPieces( - span<const absl::string_view> views); - -} // namespace base - -#endif // BASE_STRINGS_ABSEIL_STRING_CONVERSIONS_H_
diff --git a/base/strings/abseil_string_conversions_unittest.cc b/base/strings/abseil_string_conversions_unittest.cc deleted file mode 100644 index 106d1a6..0000000 --- a/base/strings/abseil_string_conversions_unittest.cc +++ /dev/null
@@ -1,69 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/strings/abseil_string_conversions.h" - -#include <vector> - -#include "base/containers/span.h" -#include "base/strings/string_piece.h" -#include "base/strings/string_piece_forward.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/abseil-cpp/absl/strings/string_view.h" - -namespace base { - -namespace { -using string_view = absl::string_view; -} // namespace - -TEST(AbseilStringConversionsTest, StringPieceToStringView) { - static constexpr StringPiece kPiece = "foo"; - static constexpr string_view kView = StringPieceToStringView(kPiece); - static_assert(kPiece.data() == kView.data(), ""); - static_assert(kPiece.size() == kView.size(), ""); -} - -TEST(AbseilStringConversionsTest, StringViewToStringPiece) { - static constexpr string_view kView = "bar"; - static constexpr StringPiece kPiece = StringViewToStringPiece(kView); - static_assert(kView.data() == kPiece.data(), ""); - static_assert(kView.size() == kPiece.size(), ""); -} - -TEST(AbseilStringConversionsTest, StringPiecesToStringViews) { - static constexpr StringPiece kFoo = "foo"; - static constexpr StringPiece kBar = "bar"; - static constexpr StringPiece kBaz = "baz"; - - const std::vector<StringPiece> kPieces = {kFoo, kBar, kBaz}; - const std::vector<string_view> kViews = StringPiecesToStringViews(kPieces); - - ASSERT_EQ(kViews.size(), 3u); - EXPECT_EQ(kViews[0].data(), kFoo); - EXPECT_EQ(kViews[0].size(), 3u); - EXPECT_EQ(kViews[1].data(), kBar); - EXPECT_EQ(kViews[1].size(), 3u); - EXPECT_EQ(kViews[2].data(), kBaz); - EXPECT_EQ(kViews[2].size(), 3u); -} - -TEST(AbseilStringConversionsTest, StringViewsToStringPieces) { - static constexpr string_view kFoo = "foo"; - static constexpr string_view kBar = "bar"; - static constexpr string_view kBaz = "baz"; - - const std::vector<string_view> kViews = {kFoo, kBar, kBaz}; - const std::vector<StringPiece> kPieces = StringViewsToStringPieces(kViews); - - ASSERT_EQ(kPieces.size(), 3u); - EXPECT_EQ(kPieces[0].data(), kFoo); - EXPECT_EQ(kPieces[0].size(), 3u); - EXPECT_EQ(kPieces[1].data(), kBar); - EXPECT_EQ(kPieces[1].size(), 3u); - EXPECT_EQ(kPieces[2].data(), kBaz); - EXPECT_EQ(kPieces[2].size(), 3u); -} - -} // namespace base
diff --git a/base/strings/string_piece.h b/base/strings/string_piece.h index 9dde6ec2..6127389 100644 --- a/base/strings/string_piece.h +++ b/base/strings/string_piece.h
@@ -28,6 +28,7 @@ #include <iosfwd> #include <limits> #include <string> +#include <string_view> #include <type_traits> #include "base/base_export.h" @@ -138,6 +139,7 @@ // `BasicStringPiece(nullptr_t) = delete`, but unfortunately the terse form is // not supported by the PNaCl toolchain. template <class T, class = std::enable_if_t<std::is_null_pointer<T>::value>> + // NOLINTNEXTLINE(google-explicit-constructor) BasicStringPiece(T) { static_assert(sizeof(T) == 0, // Always false. "StringPiece does not support construction from nullptr, use " @@ -148,12 +150,25 @@ // (an object convertible to) a std::basic_string_view, as well as an explicit // cast operator to a std::basic_string_view, but (obviously) not from/to a // BasicStringPiece. + // NOLINTNEXTLINE(google-explicit-constructor) BasicStringPiece(const std::basic_string<CharT>& str) : ptr_(str.data()), length_(str.size()) {} explicit operator std::basic_string<CharT>() const { return std::basic_string<CharT>(data(), size()); } + // Provide implicit conversions from/to the STL version, for interoperability + // with non-Chromium code. + // TODO(crbug.com/691162): These will be moot when BasicStringPiece is + // replaced with std::basic_string_view. + // NOLINTNEXTLINE(google-explicit-constructor) + constexpr BasicStringPiece(std::basic_string_view<CharT> str) + : ptr_(str.data()), length_(str.size()) {} + // NOLINTNEXTLINE(google-explicit-constructor) + constexpr operator std::basic_string_view<CharT>() const { + return std::basic_string_view<CharT>(data(), size()); + } + constexpr const_iterator begin() const noexcept { return ptr_; } constexpr const_iterator cbegin() const noexcept { return ptr_; } constexpr const_iterator end() const noexcept { return ptr_ + length_; }
diff --git a/base/strings/string_piece_unittest.cc b/base/strings/string_piece_unittest.cc index cebb3196..9baf7ad3 100644 --- a/base/strings/string_piece_unittest.cc +++ b/base/strings/string_piece_unittest.cc
@@ -5,6 +5,7 @@ #include <stddef.h> #include <string> +#include <string_view> #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" @@ -893,4 +894,19 @@ static_assert(foobar.find_last_not_of("ox", 2) == 0, ""); } +// Test that `base::StringPiece` and `std::string_view` are interoperable. +TEST(StringPieceTest, StringPieceToStringView) { + constexpr StringPiece kPiece = "foo"; + constexpr std::string_view kView = kPiece; + static_assert(kPiece.data() == kView.data()); + static_assert(kPiece.size() == kView.size()); +} + +TEST(StringPieceTest, StringViewToStringPiece) { + constexpr std::string_view kView = "bar"; + constexpr StringPiece kPiece = kView; + static_assert(kView.data() == kPiece.data()); + static_assert(kView.size() == kPiece.size()); +} + } // namespace base
diff --git a/build/android/gyp/apkbuilder.py b/build/android/gyp/apkbuilder.py index ac0023e..fa5701b 100755 --- a/build/android/gyp/apkbuilder.py +++ b/build/android/gyp/apkbuilder.py
@@ -36,6 +36,7 @@ parser = argparse.ArgumentParser() action_helpers.add_depfile_arg(parser) parser.add_argument('--assets', + action='append', help='GYP-list of files to add as assets in the form ' '"srcPath:zipPath", where ":zipPath" is optional.') parser.add_argument(
diff --git a/build/android/gyp/binary_baseline_profile.py b/build/android/gyp/binary_baseline_profile.py new file mode 100755 index 0000000..4049805 --- /dev/null +++ b/build/android/gyp/binary_baseline_profile.py
@@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. +"""Creates a binary profile from an HRF + dex + mapping.""" + +import argparse +import sys + +from util import build_utils +import action_helpers + + +def main(args): + parser = argparse.ArgumentParser(description=__doc__) + action_helpers.add_depfile_arg(parser) + parser.add_argument('--output-profile', + required=True, + help='Path to output binary profile.') + parser.add_argument('--output-metadata', + required=True, + help='Path to output binary profile metadata.') + parser.add_argument('--profgen', + required=True, + help='Path to profgen binary.') + parser.add_argument('--dex', + required=True, + help='Path to a zip containing release dex files.') + parser.add_argument('--proguard-mapping', + required=True, + help='Path to proguard mapping for release dex.') + parser.add_argument('--input-profile-path', + required=True, + help='Path to HRF baseline profile to apply.') + options = parser.parse_args(build_utils.ExpandFileArgs(args)) + + cmd = [ + options.profgen, + 'bin', + options.input_profile_path, + '-o', + options.output_profile, + '-om', + options.output_metadata, + '-a', + options.dex, + '-m', + options.proguard_mapping, + ] + build_utils.CheckOutput(cmd, env={'JAVA_HOME': build_utils.JAVA_HOME}) + action_helpers.write_depfile(options.depfile, + options.output_profile, + inputs=[options.dex]) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:]))
diff --git a/build/android/gyp/binary_baseline_profile.pydeps b/build/android/gyp/binary_baseline_profile.pydeps new file mode 100644 index 0000000..944f6abe --- /dev/null +++ b/build/android/gyp/binary_baseline_profile.pydeps
@@ -0,0 +1,7 @@ +# Generated by running: +# build/print_python_deps.py --root build/android/gyp --output build/android/gyp/binary_baseline_profile.pydeps build/android/gyp/binary_baseline_profile.py +../../action_helpers.py +../../gn_helpers.py +binary_baseline_profile.py +util/__init__.py +util/build_utils.py
diff --git a/build/android/pylib/local/machine/local_machine_junit_test_run.py b/build/android/pylib/local/machine/local_machine_junit_test_run.py index 364c517e..a923d6a 100644 --- a/build/android/pylib/local/machine/local_machine_junit_test_run.py +++ b/build/android/pylib/local/machine/local_machine_junit_test_run.py
@@ -334,7 +334,7 @@ stderr=temp_file, )) - deadline = time.time() + (_SHARD_TIMEOUT / num_shards) + deadline = time.time() + (_SHARD_TIMEOUT / (num_shards // 2 + 1)) yield '\n' yield 'Shard 0 output:\n'
diff --git a/build/config/android/config.gni b/build/config/android/config.gni index bd3a75e..55762d6 100644 --- a/build/config/android/config.gni +++ b/build/config/android/config.gni
@@ -245,6 +245,12 @@ # resources.arsc. enable_unused_resource_stripping = true + # Controls whether |baseline_profile_path| is respected. Useful to disable + # baseline profiles. + # Currently disabled while bundletool does not support baseline profiles in + # non-base splits. + enable_baseline_profiles = false + # The target to use as the system WebView implementation. if (android_64bit_target_cpu && skip_secondary_abi_for_cq) { system_webview_apk_target = "//android_webview:system_webview_64_apk"
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index 4643970..4520835 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni
@@ -2632,6 +2632,43 @@ } } + template("create_binary_profile") { + action_with_pydeps(target_name) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + forward_variables_from(invoker, [ "deps" ]) + script = "//build/android/gyp/binary_baseline_profile.py" + depfile = "$target_gen_dir/$target_name.d" + outputs = [ + invoker.binary_baseline_profile_path, + invoker.binary_baseline_profile_metadata_path, + ] + _profgen_path = "$android_sdk_root/cmdline-tools/latest/bin/profgen" + _rebased_build_config = rebase_path(invoker.build_config, root_build_dir) + inputs = [ + invoker.build_config, + invoker.proguard_mapping_path, + invoker.input_profile_path, + _profgen_path, + ] + args = [ + "--profgen", + rebase_path(_profgen_path, root_build_dir), + "--output-profile", + rebase_path(invoker.binary_baseline_profile_path, root_build_dir), + "--output-metadata", + rebase_path(invoker.binary_baseline_profile_metadata_path, + root_build_dir), + "--dex=@FileArg($_rebased_build_config:final_dex:path)", + "--proguard-mapping", + rebase_path(invoker.proguard_mapping_path, root_build_dir), + "--input-profile-path", + rebase_path(invoker.input_profile_path, root_build_dir), + "--depfile", + rebase_path(depfile, root_build_dir), + ] + } + } + # Creates a signed and aligned .apk. # # Variables @@ -2705,6 +2742,9 @@ _args += [ "--java-resources=@FileArg($_rebased_build_config:java_resources_jars)" ] } } + if (defined(invoker.extra_assets)) { + _args += [ "--assets=${invoker.extra_assets}" ] + } if (!_is_robolectric_apk) { _apksigner = "$android_sdk_build_tools/lib/apksigner.jar" _zipalign = "$android_sdk_build_tools/zipalign" @@ -4298,6 +4338,9 @@ if (defined(invoker.uncompress_dex) && invoker.uncompress_dex) { _args += [ "--uncompress-dex" ] } + if (defined(invoker.extra_assets)) { + _args += [ "--assets=${invoker.extra_assets}" ] + } # Use either provided dex path or build config path based on type of module. if (defined(invoker.dex_path)) {
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni index d331b43a..fa46f82 100644 --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni
@@ -3214,6 +3214,34 @@ } _final_dex_target_dep = ":$_final_dex_target_name" + + _use_baseline_profile = + _proguard_enabled && defined(invoker.baseline_profile_path) && + enable_baseline_profiles + if (_use_baseline_profile) { + _binary_profile_target = "${_template_name}__binary_baseline_profile" + _binary_baseline_profile_path = + "$target_out_dir/$_template_name.baseline.prof" + _binary_baseline_profile_metadata_path = + _binary_baseline_profile_path + "m" + create_binary_profile(_binary_profile_target) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + binary_baseline_profile_path = _binary_baseline_profile_path + binary_baseline_profile_metadata_path = + _binary_baseline_profile_metadata_path + proguard_mapping_path = _proguard_mapping_path + build_config = _build_config + input_profile_path = invoker.baseline_profile_path + deps = [ + ":$_build_config_target", + _final_dex_target_dep, + ] + } + } + } + + if (!defined(_use_baseline_profile) || !_use_baseline_profile) { + not_needed(invoker, [ "baseline_profile_path" ]) } _all_native_libs_deps = _native_libs_deps + _secondary_abi_native_libs_deps @@ -3325,6 +3353,16 @@ if (defined(_final_dex_path)) { dex_path = _final_dex_path deps += [ _final_dex_target_dep ] + if (_use_baseline_profile) { + # extra_assets is a list of ["{src_path}:{dst_path}"] + extra_assets = [ + rebase_path(_binary_baseline_profile_path, root_build_dir) + + ":dexopt/baseline.prof", + rebase_path(_binary_baseline_profile_metadata_path, + root_build_dir) + ":dexopt/baseline.profm", + ] + deps += [ ":$_binary_profile_target" ] + } } output_apk_path = _final_apk_path @@ -3548,6 +3586,7 @@ "apk_under_test", "app_as_shared_lib", "assert_no_deps", + "baseline_profile_path", "build_config_include_product_version_resource", "bundles_supported", "chromium_code", @@ -5084,9 +5123,9 @@ _module_target = _module.module_target _module_build_config = _module.build_config _module_build_config_target = _module.build_config_target + _module_target_name = get_label_info(_module_target, "name") if (!_proguard_enabled) { - _module_target_name = get_label_info(_module_target, "name") _dex_target = "${_module_target_name}__final_dex" _dex_path = "$target_out_dir/$_module_target_name/$_module_target_name.mergeddex.jar" dex(_dex_target) { @@ -5107,6 +5146,32 @@ } _dex_target_for_module = ":$_dex_target" + _use_baseline_profile = + _proguard_enabled && defined(invoker.baseline_profile_path) && + enable_baseline_profiles + if (_use_baseline_profile) { + _binary_profile_target = + "${_module_target_name}__binary_baseline_profile" + _binary_baseline_profile_path = "$target_out_dir/$_module_target_name/$_module_target_name.baseline.prof" + _binary_baseline_profile_metadata_path = + _binary_baseline_profile_path + "m" + create_binary_profile(_binary_profile_target) { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + binary_baseline_profile_path = _binary_baseline_profile_path + binary_baseline_profile_metadata_path = + _binary_baseline_profile_metadata_path + proguard_mapping_path = _proguard_mapping_path + build_config = _module_build_config + input_profile_path = invoker.baseline_profile_path + deps = [ + _dex_target_for_module, + _module_build_config_target, + ] + } + } else { + not_needed(invoker, [ "baseline_profile_path" ]) + } + # Generate one module .zip file per bundle module. # # Important: the bundle tool uses the module's zip filename as @@ -5158,6 +5223,17 @@ _secondary_abi_native_libraries_config deps += [ ":$_secondary_abi_native_libraries_config_target" ] } + + if (_use_baseline_profile) { + # extra_assets is a list of ["{src_path}:{dst_path}"] + extra_assets = [ + rebase_path(_binary_baseline_profile_path, root_build_dir) + + ":dexopt/baseline.prof", + rebase_path(_binary_baseline_profile_metadata_path, + root_build_dir) + ":dexopt/baseline.profm", + ] + deps += [ ":$_binary_profile_target" ] + } } _all_create_module_targets += [
diff --git a/build/config/compiler/pgo/BUILD.gn b/build/config/compiler/pgo/BUILD.gn index 1a4548e..f2c61c21 100644 --- a/build/config/compiler/pgo/BUILD.gn +++ b/build/config/compiler/pgo/BUILD.gn
@@ -85,6 +85,8 @@ inputs = [ "//chrome/build/lacros64.pgo.txt" ] } else if (_pgo_target == "lacros-arm") { inputs = [ "//chrome/build/lacros-arm.pgo.txt" ] + } else if (_pgo_target == "lacros-arm64") { + inputs = [ "//chrome/build/lacros-arm64.pgo.txt" ] } if (_pgo_target != "" && pgo_data_path == "") {
diff --git a/build/rust/rust_unit_tests_group.gni b/build/rust/rust_unit_tests_group.gni index a210d9e..c2cdfe4 100644 --- a/build/rust/rust_unit_tests_group.gni +++ b/build/rust/rust_unit_tests_group.gni
@@ -20,11 +20,12 @@ # # Example usage: # -# # This will generate a script at out/Default/bin/run_foo_tests that wraps -# # out/Default/foo_crate1_unittests, -# # out/Default/foo_mixed_source_set2_rs_unittests, -# # and out/Default/foo_mixed_source_set3_rs_unittests executables containing -# # native Rust unit tests. +# # This will generate a script at out/Default/bin/run_foo_tests (or +# # run_foo_tests.bat on Windows) that wraps the executables containing +# # native Rust unit tests: +# # * out/Default/foo_crate1_unittests +# # * out/Default/foo_mixed_source_set2_rs_unittests +# # * out/Default/foo_mixed_source_set3_rs_unittests # rust_unit_tests_group("foo_tests") { # deps = [ # "foo_crate1", @@ -32,7 +33,6 @@ # "foo_mixed_source_set3", # ] # } -# # TODO(https://crbug.com/1271215): Mention .bat generation once implemented. template("rust_unit_tests_group") { assert(defined(invoker.deps), "deps must be listed") @@ -40,7 +40,11 @@ # As noted in the top-level comment of //testing/buildbot/gn_isolate_map.pyl # the script *must* be in output_dir/bin/run_$target (or # output_dir\bin\run_$target.bat on Windows). - _script_filepath = "$root_out_dir/bin/run_${target_name}" + bat = "" + if (is_win) { + bat = ".bat" + } + _script_filepath = "$root_out_dir/bin/run_${target_name}${bat}" # Gathering metadata provided by the rust_unit_test gni template from all of # our dependencies. @@ -56,15 +60,11 @@ # Generating a script that can run all of the wrapped Rust unit test # executables. - # - # TODO(https://crbug.com/1271215): Also generate: bin/run_${target_name}.bat - # when *targeting* Windows: if (is_win) { ... }. (The "targeting" part means - # that we can't just detect whether the build is *hosted* on Windows.) action(target_name) { forward_variables_from(invoker, "*", []) testonly = true - script = "//testing/scripts/rust/generate_bash_script.py" + script = "//testing/scripts/rust/generate_script.py" inputs = [ _metadata_filepath ] outputs = [ _script_filepath ] @@ -86,5 +86,8 @@ "--script-path", rebase_path(_script_filepath, root_build_dir), ] + if (is_win) { + args += [ "--make-bat" ] + } } }
diff --git a/build/toolchain/apple/toolchain.gni b/build/toolchain/apple/toolchain.gni index d7f2bd5..70d7c03 100644 --- a/build/toolchain/apple/toolchain.gni +++ b/build/toolchain/apple/toolchain.gni
@@ -619,7 +619,7 @@ if (host_os == "mac") { command = "rm -rf {{output}} && /bin/cp -Rc {{source}} {{output}}" } else { - command = "rm -rf {{output}} && /bin/cp -Rl {{source}} {{output}}" + command = "rm -rf {{output}} && /bin/cp -Rld {{source}} {{output}}" } description = "COPY_BUNDLE_DATA {{source}} {{output}}" pool = "//build/toolchain/apple:bundle_pool($default_toolchain)"
diff --git a/cc/base/features.cc b/cc/base/features.cc index 8228e65c..4a60589 100644 --- a/cc/base/features.cc +++ b/cc/base/features.cc
@@ -94,10 +94,6 @@ "NormalPriorityImageDecoding", base::FEATURE_ENABLED_BY_DEFAULT); -BASE_FEATURE(kSkipCommitsIfNotSynchronizingCompositorState, - "SkipCommitsIfNotSynchronizingCompositorState", - base::FEATURE_DISABLED_BY_DEFAULT); - BASE_FEATURE(kUseDMSAAForTiles, "UseDMSAAForTiles", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/cc/base/features.h b/cc/base/features.h index f2f62c8b..45f4ea1 100644 --- a/cc/base/features.h +++ b/cc/base/features.h
@@ -80,12 +80,6 @@ // Introduced to fix https://crbug.com/1116624 CC_BASE_EXPORT BASE_DECLARE_FEATURE(kNormalPriorityImageDecoding); -// When enabled commits are aborted if scroll and viewport state from CC could -// not be synchronized at the beginning of the frame because main frames were -// being deferred. -CC_BASE_EXPORT BASE_DECLARE_FEATURE( - kSkipCommitsIfNotSynchronizingCompositorState); - // Use DMSAA instead of MSAA for rastering tiles. CC_BASE_EXPORT BASE_DECLARE_FEATURE(kUseDMSAAForTiles);
diff --git a/cc/paint/paint_image.cc b/cc/paint/paint_image.cc index 6e774633..5674dd6 100644 --- a/cc/paint/paint_image.cc +++ b/cc/paint/paint_image.cc
@@ -313,14 +313,16 @@ if (paint_worklet_input_) return gfx::ContentColorUsage::kSRGB; + // Gainmap images are always HDR. + if (HasGainmap()) { + return gfx::ContentColorUsage::kHDR; + } + const auto* color_space = GetSkImageInfo().colorSpace(); // Assume the image will be sRGB if we don't know yet. - if (!color_space || color_space->isSRGB()) + if (!color_space || color_space->isSRGB()) { return gfx::ContentColorUsage::kSRGB; - - if (HasGainmap()) { - return gfx::ContentColorUsage::kHDR; } skcms_TransferFunction fn;
diff --git a/cc/paint/paint_image_builder.cc b/cc/paint/paint_image_builder.cc index 0ddeba50..176dece4 100644 --- a/cc/paint/paint_image_builder.cc +++ b/cc/paint/paint_image_builder.cc
@@ -37,6 +37,8 @@ } } PaintImageBuilder::PaintImageBuilder(PaintImageBuilder&& other) = default; +PaintImageBuilder& PaintImageBuilder::operator=(PaintImageBuilder&& other) = + default; PaintImageBuilder::~PaintImageBuilder() = default; PaintImage PaintImageBuilder::TakePaintImage() {
diff --git a/cc/paint/paint_image_builder.h b/cc/paint/paint_image_builder.h index 7eca49e..eeaaed0a 100644 --- a/cc/paint/paint_image_builder.h +++ b/cc/paint/paint_image_builder.h
@@ -33,6 +33,7 @@ static PaintImageBuilder WithProperties(PaintImage image); PaintImageBuilder(PaintImageBuilder&& other); + PaintImageBuilder& operator=(PaintImageBuilder&& other); ~PaintImageBuilder(); PaintImageBuilder&& set_id(PaintImage::Id id) { @@ -77,8 +78,9 @@ } PaintImageBuilder&& set_gainmap_paint_image_generator( sk_sp<PaintImageGenerator> generator, - absl::optional<SkGainmapInfo> gainmap_info) { - DCHECK_EQ(generator != nullptr, gainmap_info.has_value()); + const SkGainmapInfo& gainmap_info) { + // Setting SkGainmapInfo with no gainmap image is an error. + DCHECK(generator); paint_image_.gainmap_paint_image_generator_ = std::move(generator); paint_image_.gainmap_info_ = gainmap_info; return std::move(*this);
diff --git a/cc/tiles/gpu_image_decode_cache.cc b/cc/tiles/gpu_image_decode_cache.cc index 28c2b82..efb1b88e 100644 --- a/cc/tiles/gpu_image_decode_cache.cc +++ b/cc/tiles/gpu_image_decode_cache.cc
@@ -542,6 +542,17 @@ return original_yuva_pixmap_info; } +bool NeedsToneMapping(sk_sp<SkColorSpace> image_color_space, bool has_gainmap) { + if (has_gainmap) { + return true; + } + if (image_color_space && + gfx::ColorSpace(*image_color_space).IsToneMappedByDefault()) { + return true; + } + return false; +} + } // namespace // Extract the information to uniquely identify a DrawImage for the purposes of @@ -2517,8 +2528,10 @@ // have happened at decode time. sk_sp<SkColorSpace> decoded_target_colorspace = ColorSpaceForImageDecode(draw_image, image_data->mode); + const bool needs_tone_mapping = NeedsToneMapping( + decoded_target_colorspace, draw_image.paint_image().HasGainmap()); if (target_color_space && decoded_target_colorspace) { - if (!gfx::ColorSpace(*decoded_target_colorspace).IsToneMappedByDefault() && + if (!needs_tone_mapping && SkColorSpace::Equals(target_color_space.get(), decoded_target_colorspace.get())) { target_color_space = nullptr; @@ -2544,11 +2557,6 @@ // Do not color convert YUVA images unless the the color conversion also // performs tone mapping. if (image_data->info.yuva.has_value()) { - const bool needs_tone_mapping = - (decoded_target_colorspace && - gfx::ColorSpace(*decoded_target_colorspace) - .IsToneMappedByDefault()) || - draw_image.paint_image().HasGainmap(); if (!needs_tone_mapping) { target_color_params = absl::nullopt; } @@ -3287,10 +3295,8 @@ CalculateDesiredFilterQuality(draw_image) <= image_data->quality; sk_sp<SkColorSpace> decoded_target_colorspace = ColorSpaceForImageDecode(draw_image, image_data->mode); - const bool needs_tone_mapping = - (decoded_target_colorspace && - gfx::ColorSpace(*decoded_target_colorspace).IsToneMappedByDefault()) || - draw_image.paint_image().HasGainmap(); + const bool needs_tone_mapping = NeedsToneMapping( + decoded_target_colorspace, draw_image.paint_image().HasGainmap()); bool color_is_compatible = false; if (!needs_tone_mapping) {
diff --git a/cc/trees/layer_tree_host_unittest_scroll.cc b/cc/trees/layer_tree_host_unittest_scroll.cc index dd5adcd..d6e20e4 100644 --- a/cc/trees/layer_tree_host_unittest_scroll.cc +++ b/cc/trees/layer_tree_host_unittest_scroll.cc
@@ -3164,11 +3164,6 @@ void BeginTest() override {} - void InitializeSettings(LayerTreeSettings* settings) override { - LayerTreeHostScrollTest::InitializeSettings(settings); - settings->skip_commits_if_not_synchronizing_compositor_state = false; - } - void WillBeginMainFrame() override { Layer* scroll_layer = layer_tree_host()->OuterViewportScrollLayerForTesting();
diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h index d67c103..b85b325 100644 --- a/cc/trees/layer_tree_settings.h +++ b/cc/trees/layer_tree_settings.h
@@ -212,11 +212,6 @@ // Whether to disable the frame rate limit in the scheduler. bool disable_frame_rate_limit = false; - // When enabled commits are aborted if scroll and viewport state from CC could - // not be synchronized at the beginning of the frame because main frames were - // being deferred. - bool skip_commits_if_not_synchronizing_compositor_state = true; - // Enables shared image cache for gpu. // TODO(crbug.com/1378251): not ready to be used by renderer cc instance yet. bool enable_shared_image_cache_for_gpu = false;
diff --git a/cc/trees/proxy_main.cc b/cc/trees/proxy_main.cc index a622dee9..5d0c6178 100644 --- a/cc/trees/proxy_main.cc +++ b/cc/trees/proxy_main.cc
@@ -287,10 +287,7 @@ // At this point the main frame may have deferred main frame updates to // avoid committing right now, or may have allowed commits to go through. So // evaluate this flag now. - bool skip_commit = layer_tree_host_->GetSettings() - .skip_commits_if_not_synchronizing_compositor_state && - !scroll_and_viewport_changes_synced; - skip_commit |= defer_main_frame_update_ || IsDeferringCommits(); + bool skip_commit = defer_main_frame_update_ || IsDeferringCommits(); // When we don't need to produce a CompositorFrame, there's also no need to // commit our updates. We still need to run layout and paint though, as it can
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn index d7b49d2..8b166634 100644 --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn
@@ -2373,6 +2373,7 @@ "add_view_trace_events", "apk_name", "bundle_target", + "baseline_profile_path", "is_base_module", "target_type", "enable_lint", @@ -2391,6 +2392,11 @@ } shared_libraries = [ ":libchrome" ] + if (!is_java_debug) { + proguard_configs = [ + "//base/android/jni_generator/manual_jni_registration_proguard.flags", + ] + } version_name = chrome_version_name } @@ -2400,6 +2406,7 @@ target_type = "android_apk" apk_name = "ChromePublic" enable_multidex = is_java_debug + baseline_profile_path = "//chrome/android/baseline_profiles/profile.txt" } android_library("monochrome_java") { @@ -3152,6 +3159,7 @@ forward_variables_from(invoker, [ "add_view_trace_events", + "baseline_profile_path", "enable_lint", "include_32_bit_webview", "include_64_bit_webview", @@ -3252,6 +3260,7 @@ is_trichrome = true static_library_provider = ":trichrome_library_apk" add_view_trace_events = true + baseline_profile_path = "//chrome/android/baseline_profiles/profile.txt" if (android_64bit_target_cpu) { is_64_bit_browser = false include_64_bit_webview = true
diff --git a/chrome/android/baseline_profiles/OWNERS b/chrome/android/baseline_profiles/OWNERS new file mode 100644 index 0000000..828b487 --- /dev/null +++ b/chrome/android/baseline_profiles/OWNERS
@@ -0,0 +1,2 @@ +mheikal@chromium.org +agrieve@chromium.org
diff --git a/chrome/android/baseline_profiles/README.md b/chrome/android/baseline_profiles/README.md new file mode 100644 index 0000000..4f2c8a2a --- /dev/null +++ b/chrome/android/baseline_profiles/README.md
@@ -0,0 +1,22 @@ +# Baseline Profiles + +This directory contains Human Readable Format (HRF) baseline profiles. Googlers: +see go/baseline-profiles-in-chrome for more details about how this is going to +be used. + +## What are baseline profiles? + +These are basically the successor/sibling of android cloud profiles where a list +of classes and methods are marked as (startup, hot, etc.) hinting at the ART to +precompile certain parts of the dex rather than JIT for performance reasons. See +https://developer.android.com/topic/performance/baselineprofiles/overview for +more details. + +## What are HRF profiles? + +HRF or Human Readable Format profiles is a text file containing methods and +classes of your app alongside flags (startup, hot, etc). This is fairly stable +across small code changes and thus can be committed to the repo/cipd. Using the +macrobenchmark library you can get an HRF profile for your app. The ART can't +use this though and it must be converted to a binary profile which is then +shipped with your apk/bundle.
diff --git a/chrome/android/baseline_profiles/profile.txt b/chrome/android/baseline_profiles/profile.txt new file mode 100644 index 0000000..b220380 --- /dev/null +++ b/chrome/android/baseline_profiles/profile.txt
@@ -0,0 +1,9794 @@ +LJ/N; +Landroid/support/v4/media/MediaMetadataCompat$Builder$$ExternalSyntheticOutline0; +HSPLandroid/support/v4/media/MediaMetadataCompat$Builder$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Landroidx/activity/Cancellable; +Landroidx/activity/ComponentActivity; +HSPLandroidx/activity/ComponentActivity;-><init>()V +HSPLandroidx/activity/ComponentActivity;->addOnContextAvailableListener(Landroidx/activity/contextaware/OnContextAvailableListener;)V +HSPLandroidx/activity/ComponentActivity;->getDefaultViewModelCreationExtras()Landroidx/lifecycle/viewmodel/MutableCreationExtras; +HSPLandroidx/activity/ComponentActivity;->getLifecycle()Landroidx/lifecycle/LifecycleRegistry; +HSPLandroidx/activity/ComponentActivity;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/activity/ComponentActivity;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/activity/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda0;->run()V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda3; +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;-><init>(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/activity/ComponentActivity$$ExternalSyntheticLambda3;->onContextAvailable()V +Landroidx/activity/ComponentActivity$1; +HSPLandroidx/activity/ComponentActivity$1;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/activity/ComponentActivity$2; +HSPLandroidx/activity/ComponentActivity$2;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/activity/ComponentActivity$2$$ExternalSyntheticOutline0; +HSPLandroidx/activity/ComponentActivity$2$$ExternalSyntheticOutline0;->m(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Landroidx/activity/ComponentActivity$3; +HSPLandroidx/activity/ComponentActivity$3;-><init>(Landroidx/fragment/app/FragmentActivity;I)V +HSPLandroidx/activity/ComponentActivity$3;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/ComponentActivity$NonConfigurationInstances; +Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl; +HSPLandroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/activity/FullyDrawnReporter; +HSPLandroidx/activity/FullyDrawnReporter;-><init>(Landroidx/activity/ComponentActivity$ReportFullyDrawnExecutorApi16Impl;Landroidx/activity/ComponentActivity$$ExternalSyntheticLambda1;)V +Landroidx/activity/OnBackPressedCallback; +HSPLandroidx/activity/OnBackPressedCallback;-><init>(Z)V +HSPLandroidx/activity/OnBackPressedCallback;->setEnabled(Z)V +Landroidx/activity/OnBackPressedDispatcher; +HSPLandroidx/activity/OnBackPressedDispatcher;-><init>(Ljava/lang/Runnable;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCallback(Landroidx/lifecycle/LifecycleOwner;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher;->addCancellableCallback$activity_release(Landroidx/activity/OnBackPressedCallback;)Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable; +Landroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/lifecycle/Lifecycle;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->cancel()V +HSPLandroidx/activity/OnBackPressedDispatcher$LifecycleOnBackPressedCancellable;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable; +HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;-><init>(Landroidx/activity/OnBackPressedDispatcher;Landroidx/activity/OnBackPressedCallback;)V +HSPLandroidx/activity/OnBackPressedDispatcher$OnBackPressedCancellable;->cancel()V +Landroidx/activity/OnBackPressedDispatcherOwner; +Landroidx/activity/ViewTreeOnBackPressedDispatcherOwner; +HSPLandroidx/activity/ViewTreeOnBackPressedDispatcherOwner;->set(Landroid/view/View;Landroidx/activity/OnBackPressedDispatcherOwner;)V +Landroidx/activity/contextaware/ContextAwareHelper; +HSPLandroidx/activity/contextaware/ContextAwareHelper;-><init>()V +Landroidx/activity/contextaware/OnContextAvailableListener; +Landroidx/activity/result/ActivityResult; +Landroidx/activity/result/ActivityResultCallback; +Landroidx/activity/result/ActivityResultRegistry; +HSPLandroidx/activity/result/ActivityResultRegistry;-><init>()V +HSPLandroidx/activity/result/ActivityResultRegistry;->register(Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;Landroidx/fragment/app/FragmentManager$8;)Landroidx/activity/result/ActivityResultRegistry$3; +Landroidx/activity/result/ActivityResultRegistry$$ExternalSyntheticThrowCCEIfNotNull0; +HSPLandroidx/activity/result/ActivityResultRegistry$$ExternalSyntheticThrowCCEIfNotNull0;->m(Ljava/lang/Object;)V +Landroidx/activity/result/ActivityResultRegistry$3; +HSPLandroidx/activity/result/ActivityResultRegistry$3;-><init>(Landroidx/activity/result/ActivityResultRegistry;Ljava/lang/String;Landroidx/activity/result/contract/ActivityResultContract;)V +HSPLandroidx/activity/result/ActivityResultRegistry$3;->unregister()V +Landroidx/activity/result/ActivityResultRegistry$CallbackAndContract; +HSPLandroidx/activity/result/ActivityResultRegistry$CallbackAndContract;-><init>(Landroidx/fragment/app/FragmentManager$8;Landroidx/activity/result/contract/ActivityResultContract;)V +Landroidx/activity/result/ActivityResultRegistryOwner; +Landroidx/activity/result/contract/ActivityResultContract; +HSPLandroidx/activity/result/contract/ActivityResultContract;-><init>()V +Landroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions; +HSPLandroidx/activity/result/contract/ActivityResultContracts$RequestMultiplePermissions;-><init>()V +Landroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult; +HSPLandroidx/activity/result/contract/ActivityResultContracts$StartActivityForResult;-><init>()V +Landroidx/appcompat/app/AppCompatActivity; +HSPLandroidx/appcompat/app/AppCompatActivity;-><init>()V +HSPLandroidx/appcompat/app/AppCompatActivity;->attachBaseContext(Landroid/content/Context;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->findViewById(I)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatActivity;->getDelegate()Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatActivity;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/app/AppCompatActivity;->getSupportActionBar()Landroidx/appcompat/app/ActionBar; +HSPLandroidx/appcompat/app/AppCompatActivity;->initViewTreeOwners()V +HSPLandroidx/appcompat/app/AppCompatActivity;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onContentChanged()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onDestroy()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostCreate(Landroid/os/Bundle;)V +HSPLandroidx/appcompat/app/AppCompatActivity;->onPostResume()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onStart()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onStop()V +HSPLandroidx/appcompat/app/AppCompatActivity;->onTitleChanged(Ljava/lang/CharSequence;I)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setContentView(I)V +HSPLandroidx/appcompat/app/AppCompatActivity;->setTheme(I)V +Landroidx/appcompat/app/AppCompatActivity$1; +HSPLandroidx/appcompat/app/AppCompatActivity$1;-><init>(Landroidx/appcompat/app/AppCompatActivity;)V +Landroidx/appcompat/app/AppCompatActivity$2; +HSPLandroidx/appcompat/app/AppCompatActivity$2;-><init>(Landroidx/appcompat/app/AppCompatActivity;)V +HSPLandroidx/appcompat/app/AppCompatActivity$2;->onContextAvailable()V +Landroidx/appcompat/app/AppCompatCallback; +Landroidx/appcompat/app/AppCompatDelegate; +HSPLandroidx/appcompat/app/AppCompatDelegate;-><init>()V +HSPLandroidx/appcompat/app/AppCompatDelegate;->isAutoStorageOptedIn(Landroid/content/Context;)Z +HSPLandroidx/appcompat/app/AppCompatDelegate;->removeDelegateFromActives(Landroidx/appcompat/app/AppCompatDelegate;)V +HSPLandroidx/appcompat/app/AppCompatDelegate;->setDefaultNightMode(I)V +Landroidx/appcompat/app/AppCompatDelegateImpl; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;-><init>(Landroid/content/Context;Landroid/view/Window;Landroidx/appcompat/app/AppCompatCallback;Ljava/lang/Object;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->applyApplicationSpecificConfig(ZZ)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->attachToWindow(Landroid/view/Window;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->calculateApplicationLocales(Landroid/content/Context;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->createOverrideAppConfiguration(Landroid/content/Context;ILandroidx/core/os/LocaleListCompat;Landroid/content/res/Configuration;Z)Landroid/content/res/Configuration; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->doInvalidatePanelMenu(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureSubDecor()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->ensureWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getConfigurationLocales(Landroid/content/res/Configuration;)Landroidx/core/os/LocaleListCompat; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->getPanelState(I)Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->initWindowDecorActionBar()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->installViewFactory()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->invalidateOptionsMenu()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->mapNightMode(Landroid/content/Context;I)I +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreate()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->onDestroy()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->requestWindowFeature(I)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setContentView(I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->setTitle(Ljava/lang/CharSequence;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl;->throwFeatureRequestIfSubDecorInstalled()V +Landroidx/appcompat/app/AppCompatDelegateImpl$2; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;I)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$2;->run()V +Landroidx/appcompat/app/AppCompatDelegateImpl$3; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$3;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;I)V +Landroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;-><init>(Landroidx/appcompat/app/AppCompatDelegateImpl;Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->bypassOnContentChanged(Landroid/view/Window$Callback;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->dispatchPopulateAccessibilityEvent$androidx$appcompat$view$WindowCallbackWrapper(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onAttachedToWindow$androidx$appcompat$view$WindowCallbackWrapper()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onAttachedToWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onContentChanged()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onDetachedFromWindow$androidx$appcompat$view$WindowCallbackWrapper()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onDetachedFromWindow()V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onWindowAttributesChanged$androidx$appcompat$view$WindowCallbackWrapper(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onWindowFocusChanged$androidx$appcompat$view$WindowCallbackWrapper(Z)V +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$AppCompatWindowCallback;->onWindowFocusChanged(Z)V +Landroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState; +HSPLandroidx/appcompat/app/AppCompatDelegateImpl$PanelFeatureState;-><init>(I)V +Landroidx/appcompat/app/AppCompatViewInflater; +HSPLandroidx/appcompat/app/AppCompatViewInflater;-><init>()V +HSPLandroidx/appcompat/app/AppCompatViewInflater;->createView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/appcompat/app/AppCompatViewInflater$DeclaredOnClickListener; +Landroidx/appcompat/app/AppLocalesMetadataHolderService; +Landroidx/appcompat/app/AppLocalesStorageHelper$SerialExecutor; +HSPLandroidx/appcompat/app/AppLocalesStorageHelper$SerialExecutor;-><init>(Landroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor;)V +Landroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor; +HSPLandroidx/appcompat/app/AppLocalesStorageHelper$ThreadPerTaskExecutor;-><init>()V +Landroidx/appcompat/content/res/AppCompatResources; +HSPLandroidx/appcompat/content/res/AppCompatResources;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +Landroidx/appcompat/graphics/drawable/DrawableWrapperCompat; +Landroidx/appcompat/view/ContextThemeWrapper; +HSPLandroidx/appcompat/view/ContextThemeWrapper;-><init>(Landroid/content/Context;I)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroidx/appcompat/view/ContextThemeWrapper;->initializeTheme()V +Landroidx/appcompat/view/menu/MenuBuilder$Callback; +Landroidx/appcompat/view/menu/MenuPresenter$Callback; +Landroidx/appcompat/view/menu/SubMenuBuilder$$ExternalSyntheticOutline0; +HSPLandroidx/appcompat/view/menu/SubMenuBuilder$$ExternalSyntheticOutline0;->m(Ljava/lang/String;I)Ljava/lang/String; +Landroidx/appcompat/widget/AppCompatAutoCompleteTextView; +Landroidx/appcompat/widget/AppCompatBackgroundHelper; +HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;-><init>(Landroid/view/View;)V +HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->applySupportBackgroundTint()V +HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->onSetBackgroundDrawable()V +HSPLandroidx/appcompat/widget/AppCompatBackgroundHelper;->setInternalBackgroundTint(Landroid/content/res/ColorStateList;)V +Landroidx/appcompat/widget/AppCompatButton; +HSPLandroidx/appcompat/widget/AppCompatButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatButton;->drawableStateChanged()V +HSPLandroidx/appcompat/widget/AppCompatButton;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroidx/appcompat/widget/AppCompatButton;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatButton;->setFilters([Landroid/text/InputFilter;)V +Landroidx/appcompat/widget/AppCompatCheckBox; +Landroidx/appcompat/widget/AppCompatCheckedTextView; +Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;-><init>()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->get()Landroidx/appcompat/widget/AppCompatDrawableManager; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager;->preload()V +Landroidx/appcompat/widget/AppCompatDrawableManager$1; +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;-><init>()V +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->arrayContains([II)Z +HSPLandroidx/appcompat/widget/AppCompatDrawableManager$1;->getTintListForDrawableRes(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +Landroidx/appcompat/widget/AppCompatEditText; +HSPLandroidx/appcompat/widget/AppCompatEditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/AppCompatEditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatEditText;->drawableStateChanged()V +HSPLandroidx/appcompat/widget/AppCompatEditText;->getText()Landroid/text/Editable; +HSPLandroidx/appcompat/widget/AppCompatEditText;->getText()Ljava/lang/CharSequence; +HSPLandroidx/appcompat/widget/AppCompatEditText;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatEditText;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatEditText;->setCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;)V +HSPLandroidx/appcompat/widget/AppCompatEditText;->setTextAppearance(Landroid/content/Context;I)V +HSPLandroidx/appcompat/widget/AppCompatEditText;->setTextClassifier(Landroid/view/textclassifier/TextClassifier;)V +Landroidx/appcompat/widget/AppCompatEditText$SuperCaller; +HSPLandroidx/appcompat/widget/AppCompatEditText$SuperCaller;-><init>(Landroidx/appcompat/widget/AppCompatEditText;)V +Landroidx/appcompat/widget/AppCompatEmojiEditTextHelper; +HSPLandroidx/appcompat/widget/AppCompatEmojiEditTextHelper;-><init>(Landroid/widget/EditText;)V +HSPLandroidx/appcompat/widget/AppCompatEmojiEditTextHelper;->getKeyListener(Landroid/text/method/KeyListener;)Landroid/text/method/KeyListener; +HSPLandroidx/appcompat/widget/AppCompatEmojiEditTextHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V +Landroidx/appcompat/widget/AppCompatEmojiTextHelper; +HSPLandroidx/appcompat/widget/AppCompatEmojiTextHelper;-><init>(Landroid/widget/TextView;)V +HSPLandroidx/appcompat/widget/AppCompatEmojiTextHelper;->getFilters([Landroid/text/InputFilter;)[Landroid/text/InputFilter; +HSPLandroidx/appcompat/widget/AppCompatEmojiTextHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V +Landroidx/appcompat/widget/AppCompatImageButton; +HSPLandroidx/appcompat/widget/AppCompatImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/AppCompatImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatImageButton;->drawableStateChanged()V +HSPLandroidx/appcompat/widget/AppCompatImageButton;->hasOverlappingRendering()Z +HSPLandroidx/appcompat/widget/AppCompatImageButton;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatImageButton;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +Landroidx/appcompat/widget/AppCompatImageHelper; +HSPLandroidx/appcompat/widget/AppCompatImageHelper;-><init>(Landroid/widget/ImageView;)V +HSPLandroidx/appcompat/widget/AppCompatImageHelper;->applySupportImageTint()V +HSPLandroidx/appcompat/widget/AppCompatImageHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatImageHelper;->setImageResource(I)V +Landroidx/appcompat/widget/AppCompatImageView; +HSPLandroidx/appcompat/widget/AppCompatImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/AppCompatImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatImageView;->drawableStateChanged()V +HSPLandroidx/appcompat/widget/AppCompatImageView;->hasOverlappingRendering()Z +HSPLandroidx/appcompat/widget/AppCompatImageView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatImageView;->setImageResource(I)V +Landroidx/appcompat/widget/AppCompatMultiAutoCompleteTextView; +Landroidx/appcompat/widget/AppCompatRadioButton; +Landroidx/appcompat/widget/AppCompatRatingBar; +Landroidx/appcompat/widget/AppCompatSeekBar; +Landroidx/appcompat/widget/AppCompatSpinner; +Landroidx/appcompat/widget/AppCompatTextClassifierHelper; +HSPLandroidx/appcompat/widget/AppCompatTextClassifierHelper;-><init>(Landroid/widget/TextView;)V +Landroidx/appcompat/widget/AppCompatTextHelper; +HSPLandroidx/appcompat/widget/AppCompatTextHelper;-><init>(Landroid/widget/TextView;)V +HSPLandroidx/appcompat/widget/AppCompatTextHelper;->applyCompoundDrawablesTints()V +HSPLandroidx/appcompat/widget/AppCompatTextHelper;->loadFromAttributes(Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatTextHelper;->onSetTextAppearance(Landroid/content/Context;I)V +HSPLandroidx/appcompat/widget/AppCompatTextHelper;->updateTypefaceAndStyle(Landroid/content/Context;Landroidx/appcompat/widget/TintTypedArray;)V +Landroidx/appcompat/widget/AppCompatTextHelper$1; +HSPLandroidx/appcompat/widget/AppCompatTextHelper$1;-><init>(Landroidx/appcompat/widget/AppCompatTextHelper;IILjava/lang/ref/WeakReference;)V +HSPLandroidx/appcompat/widget/AppCompatTextHelper$1;->onFontRetrievalFailed(I)V +Landroidx/appcompat/widget/AppCompatTextHelper$Api26Impl; +Landroidx/appcompat/widget/AppCompatTextView; +HSPLandroidx/appcompat/widget/AppCompatTextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/AppCompatTextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->drawableStateChanged()V +HSPLandroidx/appcompat/widget/AppCompatTextView;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setFilters([Landroid/text/InputFilter;)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setTextAppearance(Landroid/content/Context;I)V +HSPLandroidx/appcompat/widget/AppCompatTextView;->setTypeface(Landroid/graphics/Typeface;I)V +Landroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper; +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;-><init>(Landroid/widget/TextView;)V +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper;->supportsAutoSizeText()Z +Landroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl; +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl;-><init>()V +Landroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl23; +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl23;-><init>()V +Landroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl29; +HSPLandroidx/appcompat/widget/AppCompatTextViewAutoSizeHelper$Impl29;-><init>()V +Landroidx/appcompat/widget/AppCompatToggleButton; +Landroidx/appcompat/widget/ContentFrameLayout; +HSPLandroidx/appcompat/widget/ContentFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onAttachedToWindow()V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onDetachedFromWindow()V +HSPLandroidx/appcompat/widget/ContentFrameLayout;->onMeasure(II)V +Landroidx/appcompat/widget/DrawableUtils; +HSPLandroidx/appcompat/widget/DrawableUtils;->fixDrawable(Landroid/graphics/drawable/Drawable;)V +Landroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/graphics/Insets;)I +HSPLandroidx/appcompat/widget/DrawableUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/graphics/Insets;)I +Landroidx/appcompat/widget/FitWindowsFrameLayout; +HSPLandroidx/appcompat/widget/FitWindowsFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;-><init>()V +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->createDrawableIfNeeded(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->get()Landroidx/appcompat/widget/ResourceManagerInternal; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getCachedDrawable(Landroid/content/Context;J)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(ILandroid/content/Context;Z)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->getTintList(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +HSPLandroidx/appcompat/widget/ResourceManagerInternal;->tintDrawableUsingColorFilter(Landroid/content/Context;ILandroid/graphics/drawable/Drawable;)Z +Landroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache; +HSPLandroidx/appcompat/widget/ResourceManagerInternal$ColorFilterLruCache;-><init>()V +Landroidx/appcompat/widget/ResourcesWrapper; +Landroidx/appcompat/widget/ThemeUtils; +HSPLandroidx/appcompat/widget/ThemeUtils;->checkAppCompatTheme(Landroid/content/Context;Landroid/view/View;)V +Landroidx/appcompat/widget/TintContextWrapper; +HSPLandroidx/appcompat/widget/TintContextWrapper;->wrap(Landroid/content/Context;)V +Landroidx/appcompat/widget/TintResources; +Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V +HSPLandroidx/appcompat/widget/TintTypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList; +HSPLandroidx/appcompat/widget/TintTypedArray;->getDimensionPixelSize(II)I +HSPLandroidx/appcompat/widget/TintTypedArray;->getFont(IILandroidx/appcompat/widget/AppCompatTextHelper$1;)Landroid/graphics/Typeface; +HSPLandroidx/appcompat/widget/TintTypedArray;->getInt(II)I +HSPLandroidx/appcompat/widget/TintTypedArray;->getResourceId(II)I +HSPLandroidx/appcompat/widget/TintTypedArray;->getString(I)Ljava/lang/String; +HSPLandroidx/appcompat/widget/TintTypedArray;->hasValue(I)Z +HSPLandroidx/appcompat/widget/TintTypedArray;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[II)Landroidx/appcompat/widget/TintTypedArray; +HSPLandroidx/appcompat/widget/TintTypedArray;->recycle()V +Landroidx/appcompat/widget/VectorEnabledTintResources; +Landroidx/appcompat/widget/ViewStubCompat; +HSPLandroidx/appcompat/widget/ViewStubCompat;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/appcompat/widget/ViewStubCompat;->setVisibility(I)V +Landroidx/appcompat/widget/ViewUtils; +Landroidx/arch/core/executor/ArchTaskExecutor; +HSPLandroidx/arch/core/executor/ArchTaskExecutor;-><init>()V +Landroidx/arch/core/executor/DefaultTaskExecutor; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor;-><init>()V +Landroidx/arch/core/executor/DefaultTaskExecutor$1; +HSPLandroidx/arch/core/executor/DefaultTaskExecutor$1;-><init>()V +Landroidx/arch/core/executor/TaskExecutor; +HSPLandroidx/arch/core/executor/TaskExecutor;-><init>()V +Landroidx/arch/core/internal/FastSafeIterableMap; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;-><init>()V +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/arch/core/internal/FastSafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap; +HSPLandroidx/arch/core/internal/SafeIterableMap;-><init>()V +HSPLandroidx/arch/core/internal/SafeIterableMap;->get(Ljava/lang/Object;)Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap;->iterator()Ljava/util/Iterator; +HSPLandroidx/arch/core/internal/SafeIterableMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap$AscendingIterator; +HSPLandroidx/arch/core/internal/SafeIterableMap$AscendingIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;I)V +Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getKey()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$Entry;->getValue()Ljava/lang/Object; +Landroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;-><init>(Landroidx/arch/core/internal/SafeIterableMap;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->hasNext()Z +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->next()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$IteratorWithAdditions;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +Landroidx/arch/core/internal/SafeIterableMap$ListIterator; +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;-><init>(Landroidx/arch/core/internal/SafeIterableMap$Entry;Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->hasNext()Z +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->next()Ljava/lang/Object; +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->nextNode()Landroidx/arch/core/internal/SafeIterableMap$Entry; +HSPLandroidx/arch/core/internal/SafeIterableMap$ListIterator;->supportRemove(Landroidx/arch/core/internal/SafeIterableMap$Entry;)V +Landroidx/arch/core/internal/SafeIterableMap$SupportRemove; +HSPLandroidx/arch/core/internal/SafeIterableMap$SupportRemove;-><init>()V +Landroidx/asynclayoutinflater/view/AsyncLayoutInflater; +HSPLandroidx/asynclayoutinflater/view/AsyncLayoutInflater;-><init>(Landroid/content/Context;)V +Landroidx/asynclayoutinflater/view/AsyncLayoutInflater$1; +HSPLandroidx/asynclayoutinflater/view/AsyncLayoutInflater$1;-><init>(Landroidx/asynclayoutinflater/view/AsyncLayoutInflater;)V +Landroidx/asynclayoutinflater/view/AsyncLayoutInflater$BasicInflater; +HSPLandroidx/asynclayoutinflater/view/AsyncLayoutInflater$BasicInflater;-><init>(Landroid/content/Context;)V +Landroidx/asynclayoutinflater/view/AsyncLayoutInflater$InflateThread; +HSPLandroidx/asynclayoutinflater/view/AsyncLayoutInflater$InflateThread;-><init>()V +HSPLandroidx/asynclayoutinflater/view/AsyncLayoutInflater$InflateThread;->run()V +Landroidx/asynclayoutinflater/view/AsyncLayoutInflater$OnInflateFinishedListener; +Landroidx/browser/customtabs/CustomTabsSessionToken; +HSPLandroidx/browser/customtabs/CustomTabsSessionToken;->getSessionTokenFromIntent(Landroid/content/Intent;)Landroidx/browser/customtabs/CustomTabsSessionToken; +Landroidx/collection/ArrayMap; +HSPLandroidx/collection/ArrayMap;-><init>()V +Landroidx/collection/ArraySet; +HSPLandroidx/collection/ArraySet;-><init>(I)V +HSPLandroidx/collection/ArraySet;->add(Ljava/lang/Object;)Z +HSPLandroidx/collection/ArraySet;->contains(Ljava/lang/Object;)Z +HSPLandroidx/collection/ArraySet;->remove(Ljava/lang/Object;)Z +HSPLandroidx/collection/ArraySet;->removeAt(I)V +Landroidx/collection/ArraySet$ElementIterator; +HSPLandroidx/collection/ArraySet$ElementIterator;-><init>(Landroidx/collection/ArraySet;)V +HSPLandroidx/collection/ArraySet$ElementIterator;->elementAt(I)Ljava/lang/Object; +HSPLandroidx/collection/ArraySet$ElementIterator;->removeAt(I)V +Landroidx/collection/ArraySetKt; +HSPLandroidx/collection/ArraySetKt;->allocArrays(Landroidx/collection/ArraySet;I)V +HSPLandroidx/collection/ArraySetKt;->indexOf(Landroidx/collection/ArraySet;Ljava/lang/Object;I)I +Landroidx/collection/IndexBasedArrayIterator; +HSPLandroidx/collection/IndexBasedArrayIterator;-><init>(I)V +HSPLandroidx/collection/IndexBasedArrayIterator;->hasNext()Z +HSPLandroidx/collection/IndexBasedArrayIterator;->next()Ljava/lang/Object; +HSPLandroidx/collection/IndexBasedArrayIterator;->remove()V +Landroidx/collection/LongSparseArray; +HSPLandroidx/collection/LongSparseArray;-><init>()V +HSPLandroidx/collection/LongSparseArray;->clear()V +Landroidx/collection/LruCache; +HSPLandroidx/collection/LruCache;-><init>(I)V +HSPLandroidx/collection/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/collection/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLandroidx/collection/LruCache;->trimToSize(I)V +Landroidx/collection/SimpleArrayMap; +HSPLandroidx/collection/SimpleArrayMap;-><init>()V +HSPLandroidx/collection/SimpleArrayMap;-><init>(I)V +HSPLandroidx/collection/SimpleArrayMap;->clear()V +HSPLandroidx/collection/SimpleArrayMap;->containsKey(Ljava/lang/Object;)Z +HSPLandroidx/collection/SimpleArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->indexOf(ILjava/lang/Object;)I +HSPLandroidx/collection/SimpleArrayMap;->indexOfKey(Ljava/lang/Object;)I +HSPLandroidx/collection/SimpleArrayMap;->keyAt(I)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->removeAt(I)Ljava/lang/Object; +HSPLandroidx/collection/SimpleArrayMap;->valueAt(I)Ljava/lang/Object; +Landroidx/collection/internal/ContainerHelpersKt; +HSPLandroidx/collection/internal/ContainerHelpersKt;->binarySearch(II[I)I +Landroidx/collection/internal/Lock; +HSPLandroidx/collection/internal/Lock;-><init>()V +Landroidx/collection/internal/LruHashMap; +HSPLandroidx/collection/internal/LruHashMap;-><init>()V +HSPLandroidx/collection/internal/LruHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/concurrent/futures/AbstractResolvableFuture$$ExternalSyntheticOutline0; +HSPLandroidx/concurrent/futures/AbstractResolvableFuture$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroidx/concurrent/futures/AbstractResolvableFuture$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Landroidx/constraintlayout/core/widgets/analyzer/DependencyGraph$$ExternalSyntheticOutline0; +HSPLandroidx/constraintlayout/core/widgets/analyzer/DependencyGraph$$ExternalSyntheticOutline0;->m(FFFF)F +Landroidx/constraintlayout/widget/ConstraintHelper$$ExternalSyntheticOutline0; +HSPLandroidx/constraintlayout/widget/ConstraintHelper$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +Landroidx/constraintlayout/widget/ConstraintLayout$$ExternalSyntheticOutline0; +HSPLandroidx/constraintlayout/widget/ConstraintLayout$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Landroidx/coordinatorlayout/widget/CoordinatorLayout; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->acquireTempRect()Landroid/graphics/Rect; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->constrainChildRect(Landroidx/coordinatorlayout/widget/CoordinatorLayout$LayoutParams;Landroid/graphics/Rect;II)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->drawableStateChanged()V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getChildRect(Landroid/view/View;Landroid/graphics/Rect;Z)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getDescendantRect(Landroid/graphics/Rect;Landroid/view/View;)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getDesiredAnchoredChildRectWithoutConstraints(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroidx/coordinatorlayout/widget/CoordinatorLayout$LayoutParams;II)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getResolvedLayoutParams(Landroid/view/View;)Landroidx/coordinatorlayout/widget/CoordinatorLayout$LayoutParams; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getSuggestedMinimumHeight()I +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->getSuggestedMinimumWidth()I +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onAttachedToWindow()V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onChildViewsChanged(I)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onDetachedFromWindow()V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onLayout(ZIIII)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onLayoutChild(Landroid/view/View;I)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->onMeasure(II)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->resetTouchBehaviors()V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout;->setupForInsets()V +Landroidx/coordinatorlayout/widget/CoordinatorLayout$AttachedBehavior; +Landroidx/coordinatorlayout/widget/CoordinatorLayout$Behavior; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$Behavior;-><init>()V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$Behavior;-><init>(I)V +Landroidx/coordinatorlayout/widget/CoordinatorLayout$DefaultBehavior; +Landroidx/coordinatorlayout/widget/CoordinatorLayout$HierarchyChangeListener; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$HierarchyChangeListener;-><init>(Landroidx/coordinatorlayout/widget/CoordinatorLayout;)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$HierarchyChangeListener;->onChildViewAdded(Landroid/view/View;Landroid/view/View;)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$HierarchyChangeListener;->onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V +Landroidx/coordinatorlayout/widget/CoordinatorLayout$LayoutParams; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Landroidx/coordinatorlayout/widget/CoordinatorLayout$OnPreDrawListener; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$OnPreDrawListener;-><init>(Landroidx/coordinatorlayout/widget/CoordinatorLayout;)V +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$OnPreDrawListener;->onPreDraw()Z +Landroidx/coordinatorlayout/widget/CoordinatorLayout$ViewElevationComparator; +HSPLandroidx/coordinatorlayout/widget/CoordinatorLayout$ViewElevationComparator;-><init>()V +Landroidx/coordinatorlayout/widget/DirectedAcyclicGraph; +HSPLandroidx/coordinatorlayout/widget/DirectedAcyclicGraph;-><init>()V +HSPLandroidx/coordinatorlayout/widget/DirectedAcyclicGraph;->dfs(Ljava/lang/Object;Ljava/util/ArrayList;Ljava/util/HashSet;)V +Landroidx/coordinatorlayout/widget/ViewGroupUtils; +HSPLandroidx/coordinatorlayout/widget/ViewGroupUtils;->offsetDescendantMatrix(Landroid/view/ViewParent;Landroid/view/View;Landroid/graphics/Matrix;)V +Landroidx/core/app/ActivityCompat$RequestPermissionsRequestCodeValidator; +Landroidx/core/app/ComponentActivity; +HSPLandroidx/core/app/ComponentActivity;-><init>()V +HSPLandroidx/core/app/ComponentActivity;->onCreate(Landroid/os/Bundle;)V +Landroidx/core/app/NavUtils; +HSPLandroidx/core/app/NavUtils;->getParentActivityName(Landroid/content/Context;Landroid/content/ComponentName;)Ljava/lang/String; +Landroidx/core/app/NotificationManagerCompat; +HSPLandroidx/core/app/NotificationManagerCompat;-><init>(Landroid/content/Context;)V +HSPLandroidx/core/app/NotificationManagerCompat;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel; +Landroidx/core/app/NotificationManagerCompat$Api26Impl; +HSPLandroidx/core/app/NotificationManagerCompat$Api26Impl;->createNotificationChannel(Landroid/app/NotificationManager;Landroid/app/NotificationChannel;)V +HSPLandroidx/core/app/NotificationManagerCompat$Api26Impl;->createNotificationChannelGroup(Landroid/app/NotificationManager;Landroid/app/NotificationChannelGroup;)V +HSPLandroidx/core/app/NotificationManagerCompat$Api26Impl;->deleteNotificationChannel(Landroid/app/NotificationManager;Ljava/lang/String;)V +HSPLandroidx/core/app/NotificationManagerCompat$Api26Impl;->getNotificationChannel(Landroid/app/NotificationManager;Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroidx/core/app/NotificationManagerCompat$Api26Impl;->getNotificationChannels(Landroid/app/NotificationManager;)Ljava/util/List; +Landroidx/core/app/OnMultiWindowModeChangedProvider; +Landroidx/core/app/OnPictureInPictureModeChangedProvider; +Landroidx/core/content/ContextCompat; +HSPLandroidx/core/content/ContextCompat;->getColorStateList(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +Landroidx/core/content/FileProvider; +HSPLandroidx/core/content/FileProvider;-><init>()V +HSPLandroidx/core/content/FileProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +HSPLandroidx/core/content/FileProvider;->getPathStrategy(Landroid/content/Context;Ljava/lang/String;)Landroidx/core/content/FileProvider$SimplePathStrategy; +HSPLandroidx/core/content/FileProvider;->onCreate()Z +HSPLandroidx/core/content/FileProvider;->parsePathStrategy(Landroid/content/Context;Ljava/lang/String;)Landroidx/core/content/FileProvider$SimplePathStrategy; +Landroidx/core/content/FileProvider$SimplePathStrategy; +HSPLandroidx/core/content/FileProvider$SimplePathStrategy;-><init>(Ljava/lang/String;)V +Landroidx/core/content/OnConfigurationChangedProvider; +Landroidx/core/content/OnTrimMemoryProvider; +Landroidx/core/content/res/CamColor; +Landroidx/core/content/res/CamUtils; +Landroidx/core/content/res/ColorStateListInflaterCompat; +HSPLandroidx/core/content/res/ColorStateListInflaterCompat;->createFromXml(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroidx/core/content/res/ColorStateListInflaterCompat;->createFromXmlInner(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +Landroidx/core/content/res/FontResourcesParserCompat; +HSPLandroidx/core/content/res/FontResourcesParserCompat;->parse(Landroid/content/res/XmlResourceParser;Landroid/content/res/Resources;)Landroidx/core/content/res/FontResourcesParserCompat$FamilyResourceEntry; +HSPLandroidx/core/content/res/FontResourcesParserCompat;->readCerts(ILandroid/content/res/Resources;)Ljava/util/List; +Landroidx/core/content/res/FontResourcesParserCompat$FamilyResourceEntry; +Landroidx/core/content/res/FontResourcesParserCompat$ProviderResourceEntry; +HSPLandroidx/core/content/res/FontResourcesParserCompat$ProviderResourceEntry;-><init>(Landroidx/core/provider/FontRequest;IILjava/lang/String;)V +Landroidx/core/content/res/ResourcesCompat; +HSPLandroidx/core/content/res/ResourcesCompat;->loadFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroidx/core/content/res/ResourcesCompat$FontCallback;ZZ)Landroid/graphics/Typeface; +Landroidx/core/content/res/ResourcesCompat$ColorStateListCacheEntry; +HSPLandroidx/core/content/res/ResourcesCompat$ColorStateListCacheEntry;-><init>(Landroid/content/res/ColorStateList;Landroid/content/res/Configuration;Landroid/content/res/Resources$Theme;)V +Landroidx/core/content/res/ResourcesCompat$ColorStateListCacheKey; +HSPLandroidx/core/content/res/ResourcesCompat$ColorStateListCacheKey;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)V +HSPLandroidx/core/content/res/ResourcesCompat$ColorStateListCacheKey;->equals(Ljava/lang/Object;)Z +HSPLandroidx/core/content/res/ResourcesCompat$ColorStateListCacheKey;->hashCode()I +Landroidx/core/content/res/ResourcesCompat$FontCallback; +HSPLandroidx/core/content/res/ResourcesCompat$FontCallback;-><init>()V +HSPLandroidx/core/content/res/ResourcesCompat$FontCallback;->callbackFailAsync(I)V +Landroidx/core/content/res/ResourcesCompat$FontCallback$$ExternalSyntheticLambda1; +HSPLandroidx/core/content/res/ResourcesCompat$FontCallback$$ExternalSyntheticLambda1;-><init>(Landroidx/core/content/res/ResourcesCompat$FontCallback;I)V +HSPLandroidx/core/content/res/ResourcesCompat$FontCallback$$ExternalSyntheticLambda1;->run()V +Landroidx/core/content/res/ViewingConditions; +Landroidx/core/graphics/ColorUtils; +HSPLandroidx/core/graphics/ColorUtils;->compositeColors(II)I +HSPLandroidx/core/graphics/ColorUtils;->setAlphaComponent(II)I +Landroidx/core/graphics/Insets; +HSPLandroidx/core/graphics/Insets;-><init>(IIII)V +HSPLandroidx/core/graphics/Insets;->equals(Ljava/lang/Object;)Z +HSPLandroidx/core/graphics/Insets;->of(IIII)Landroidx/core/graphics/Insets; +Landroidx/core/graphics/TypefaceCompat; +HSPLandroidx/core/graphics/TypefaceCompat;->createFromResourcesFamilyXml(Landroid/content/Context;Landroidx/core/content/res/FontResourcesParserCompat$FamilyResourceEntry;Landroid/content/res/Resources;ILjava/lang/String;IILandroidx/core/content/res/ResourcesCompat$FontCallback;Z)Landroid/graphics/Typeface; +HSPLandroidx/core/graphics/TypefaceCompat;->createResourceUid(Landroid/content/res/Resources;ILjava/lang/String;II)Ljava/lang/String; +Landroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter; +HSPLandroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter;-><init>(Landroidx/core/content/res/ResourcesCompat$FontCallback;)V +HSPLandroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter;->onTypefaceRequestFailed(I)V +HSPLandroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter;->onTypefaceRetrieved(Landroid/graphics/Typeface;)V +Landroidx/core/graphics/TypefaceCompatApi29Impl; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;-><init>()V +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->createFromFontInfo(Landroid/content/Context;[Landroidx/core/provider/FontsContractCompat$FontInfo;I)Landroid/graphics/Typeface; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->findBaseFont(Landroid/graphics/fonts/FontFamily;I)Landroid/graphics/fonts/Font; +HSPLandroidx/core/graphics/TypefaceCompatApi29Impl;->getMatchScore(Landroid/graphics/fonts/FontStyle;Landroid/graphics/fonts/FontStyle;)I +Landroidx/core/graphics/TypefaceCompatBaseImpl; +HSPLandroidx/core/graphics/TypefaceCompatBaseImpl;-><init>()V +Landroidx/core/graphics/drawable/RoundedBitmapDrawable; +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;-><init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;->getIntrinsicHeight()I +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;->getIntrinsicWidth()I +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;->getOpacity()I +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable;->setCornerRadius(F)V +Landroidx/core/graphics/drawable/RoundedBitmapDrawable21; +HSPLandroidx/core/graphics/drawable/RoundedBitmapDrawable21;-><init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V +Landroidx/core/math/MathUtils; +HSPLandroidx/core/math/MathUtils;->clamp(III)I +Landroidx/core/os/BuildCompat; +HSPLandroidx/core/os/BuildCompat;->isAtLeastT()Z +Landroidx/core/os/LocaleListCompat; +HSPLandroidx/core/os/LocaleListCompat;-><init>(Landroidx/core/os/LocaleListPlatformWrapper;)V +HSPLandroidx/core/os/LocaleListCompat;->forLanguageTags(Ljava/lang/String;)Landroidx/core/os/LocaleListCompat; +Landroidx/core/os/LocaleListCompat$Api21Impl; +Landroidx/core/os/LocaleListInterface; +Landroidx/core/os/LocaleListPlatformWrapper; +HSPLandroidx/core/os/LocaleListPlatformWrapper;-><init>(Ljava/lang/Object;)V +Landroidx/core/os/TraceCompat; +Landroidx/core/provider/CallbackWithHandler; +HSPLandroidx/core/provider/CallbackWithHandler;-><init>(Landroidx/core/graphics/TypefaceCompat$ResourcesCallbackAdapter;Landroid/os/Handler;)V +HSPLandroidx/core/provider/CallbackWithHandler;->onTypefaceResult(Landroidx/core/provider/FontRequestWorker$TypefaceResult;)V +Landroidx/core/provider/CallbackWithHandler$1; +HSPLandroidx/core/provider/CallbackWithHandler$1;-><init>(Landroidx/core/provider/FontsContractCompat$FontRequestCallback;Landroid/graphics/Typeface;)V +HSPLandroidx/core/provider/CallbackWithHandler$1;->run()V +Landroidx/core/provider/CallbackWithHandler$2; +HSPLandroidx/core/provider/CallbackWithHandler$2;-><init>(Landroidx/core/provider/FontsContractCompat$FontRequestCallback;I)V +HSPLandroidx/core/provider/CallbackWithHandler$2;->run()V +Landroidx/core/provider/FontProvider; +HSPLandroidx/core/provider/FontProvider;->getFontFamilyResult(Landroid/content/Context;Landroidx/core/provider/FontRequest;)Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +Landroidx/core/provider/FontProvider$$ExternalSyntheticLambda0; +HSPLandroidx/core/provider/FontProvider$$ExternalSyntheticLambda0;-><init>()V +Landroidx/core/provider/FontRequest; +HSPLandroidx/core/provider/FontRequest;-><init>(Ljava/lang/String;)V +HSPLandroidx/core/provider/FontRequest;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V +Landroidx/core/provider/FontRequest$$ExternalSyntheticOutline0; +HSPLandroidx/core/provider/FontRequest$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Landroidx/core/provider/FontRequestWorker; +HSPLandroidx/core/provider/FontRequestWorker;->getFontSync(Ljava/lang/String;Landroid/content/Context;Landroidx/core/provider/FontRequest;I)Landroidx/core/provider/FontRequestWorker$TypefaceResult; +HSPLandroidx/core/provider/FontRequestWorker;->requestFontAsync(Landroid/content/Context;Landroidx/core/provider/FontRequest;ILandroidx/core/provider/RequestExecutor$HandlerExecutor;Landroidx/core/provider/CallbackWithHandler;)Landroid/graphics/Typeface; +Landroidx/core/provider/FontRequestWorker$1; +HSPLandroidx/core/provider/FontRequestWorker$1;-><init>(Ljava/lang/String;Landroid/content/Context;Landroidx/core/provider/FontRequest;II)V +HSPLandroidx/core/provider/FontRequestWorker$1;->call()Landroidx/core/provider/FontRequestWorker$TypefaceResult; +HSPLandroidx/core/provider/FontRequestWorker$1;->call()Ljava/lang/Object; +Landroidx/core/provider/FontRequestWorker$2; +HSPLandroidx/core/provider/FontRequestWorker$2;-><init>(ILjava/lang/Object;)V +HSPLandroidx/core/provider/FontRequestWorker$2;->accept(Landroidx/core/provider/FontRequestWorker$TypefaceResult;)V +HSPLandroidx/core/provider/FontRequestWorker$2;->accept(Ljava/lang/Object;)V +Landroidx/core/provider/FontRequestWorker$TypefaceResult; +HSPLandroidx/core/provider/FontRequestWorker$TypefaceResult;-><init>(I)V +HSPLandroidx/core/provider/FontRequestWorker$TypefaceResult;-><init>(Landroid/graphics/Typeface;)V +Landroidx/core/provider/FontsContractCompat$FontFamilyResult; +HSPLandroidx/core/provider/FontsContractCompat$FontFamilyResult;-><init>(I[Landroidx/core/provider/FontsContractCompat$FontInfo;)V +Landroidx/core/provider/FontsContractCompat$FontInfo; +HSPLandroidx/core/provider/FontsContractCompat$FontInfo;-><init>(Landroid/net/Uri;IIZI)V +Landroidx/core/provider/FontsContractCompat$FontRequestCallback; +HSPLandroidx/core/provider/FontsContractCompat$FontRequestCallback;-><init>()V +Landroidx/core/provider/RequestExecutor$DefaultThreadFactory; +HSPLandroidx/core/provider/RequestExecutor$DefaultThreadFactory;-><init>()V +HSPLandroidx/core/provider/RequestExecutor$DefaultThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Landroidx/core/provider/RequestExecutor$DefaultThreadFactory$ProcessPriorityThread; +HSPLandroidx/core/provider/RequestExecutor$DefaultThreadFactory$ProcessPriorityThread;-><init>(Ljava/lang/Runnable;Ljava/lang/String;I)V +HSPLandroidx/core/provider/RequestExecutor$DefaultThreadFactory$ProcessPriorityThread;->run()V +Landroidx/core/provider/RequestExecutor$ReplyRunnable; +HSPLandroidx/core/provider/RequestExecutor$ReplyRunnable;-><init>(Landroid/os/Handler;Landroidx/core/provider/FontRequestWorker$1;Landroidx/core/provider/FontRequestWorker$2;)V +HSPLandroidx/core/provider/RequestExecutor$ReplyRunnable;-><init>(Landroidx/core/provider/RequestExecutor$ReplyRunnable;Landroidx/core/util/Consumer;Ljava/lang/Object;)V +HSPLandroidx/core/provider/RequestExecutor$ReplyRunnable;->run()V +Landroidx/core/text/BidiFormatter; +HSPLandroidx/core/text/BidiFormatter;-><init>(ZILandroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicInternal;)V +HSPLandroidx/core/text/BidiFormatter;->getInstance()Landroidx/core/text/BidiFormatter; +Landroidx/core/text/TextDirectionHeuristicsCompat; +Landroidx/core/text/TextDirectionHeuristicsCompat$FirstStrong; +HSPLandroidx/core/text/TextDirectionHeuristicsCompat$FirstStrong;-><init>()V +HSPLandroidx/core/text/TextDirectionHeuristicsCompat$FirstStrong;->checkRtl(Ljava/lang/CharSequence;I)I +Landroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionAlgorithm; +Landroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicImpl; +HSPLandroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicImpl;-><init>(Landroidx/core/text/TextDirectionHeuristicsCompat$FirstStrong;)V +HSPLandroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;I)Z +Landroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicInternal; +HSPLandroidx/core/text/TextDirectionHeuristicsCompat$TextDirectionHeuristicInternal;-><init>(Landroidx/core/text/TextDirectionHeuristicsCompat$FirstStrong;Z)V +Landroidx/core/text/TextUtilsCompat; +Landroidx/core/util/AtomicFile; +HSPLandroidx/core/util/AtomicFile;-><init>(Ljava/io/File;)V +HSPLandroidx/core/util/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V +HSPLandroidx/core/util/AtomicFile;->rename(Ljava/io/File;Ljava/io/File;)V +HSPLandroidx/core/util/AtomicFile;->startWrite()Ljava/io/FileOutputStream; +Landroidx/core/util/Consumer; +Landroidx/core/util/Pools$SimplePool; +HSPLandroidx/core/util/Pools$SimplePool;-><init>(I)V +HSPLandroidx/core/util/Pools$SimplePool;->acquire()Ljava/lang/Object; +HSPLandroidx/core/util/Pools$SimplePool;->release(Ljava/lang/Object;)Z +Landroidx/core/util/Pools$SynchronizedPool; +HSPLandroidx/core/util/Pools$SynchronizedPool;-><init>(I)V +HSPLandroidx/core/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object; +HSPLandroidx/core/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z +Landroidx/core/view/AccessibilityDelegateCompat; +HSPLandroidx/core/view/AccessibilityDelegateCompat;-><init>()V +HSPLandroidx/core/view/AccessibilityDelegateCompat;-><init>(Landroid/view/View$AccessibilityDelegate;)V +Landroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter; +HSPLandroidx/core/view/AccessibilityDelegateCompat$AccessibilityDelegateAdapter;-><init>(Landroidx/core/view/AccessibilityDelegateCompat;)V +Landroidx/core/view/GestureDetectorCompat; +HSPLandroidx/core/view/GestureDetectorCompat;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$SimpleOnGestureListener;)V +Landroidx/core/view/GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2; +HSPLandroidx/core/view/GestureDetectorCompat$GestureDetectorCompatImplJellybeanMr2;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$SimpleOnGestureListener;)V +Landroidx/core/view/KeyEventDispatcher$Component; +Landroidx/core/view/MenuHost; +Landroidx/core/view/MenuHostHelper; +HSPLandroidx/core/view/MenuHostHelper;-><init>(Ljava/lang/Runnable;)V +Landroidx/core/view/NestedScrollingChild; +Landroidx/core/view/NestedScrollingChildHelper; +HSPLandroidx/core/view/NestedScrollingChildHelper;-><init>(Landroid/view/View;)V +HSPLandroidx/core/view/NestedScrollingChildHelper;->getNestedScrollingParentForType(I)Landroid/view/ViewParent; +HSPLandroidx/core/view/NestedScrollingChildHelper;->stopNestedScroll(I)V +Landroidx/core/view/NestedScrollingParent2; +Landroidx/core/view/NestedScrollingParent3; +Landroidx/core/view/NestedScrollingParentHelper; +HSPLandroidx/core/view/NestedScrollingParentHelper;-><init>()V +Landroidx/core/view/OnApplyWindowInsetsListener; +Landroidx/core/view/OnReceiveContentViewBehavior; +Landroidx/core/view/ViewCompat; +HSPLandroidx/core/view/ViewCompat;->getAccessibilityDelegateInternal(Landroid/view/View;)Landroid/view/View$AccessibilityDelegate; +HSPLandroidx/core/view/ViewCompat;->notifyViewAccessibilityStateChangedIfNeeded(Landroid/view/View;I)V +HSPLandroidx/core/view/ViewCompat;->removeActionWithId(Landroid/view/View;I)V +HSPLandroidx/core/view/ViewCompat;->replaceAccessibilityAction(Landroid/view/View;Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;Ljava/lang/String;Landroidx/core/view/accessibility/AccessibilityViewCommand;)V +HSPLandroidx/core/view/ViewCompat;->saveAttributeDataForStyleable(Landroid/view/View;Landroid/content/Context;[ILandroid/util/AttributeSet;Landroid/content/res/TypedArray;II)V +HSPLandroidx/core/view/ViewCompat;->setAccessibilityDelegate(Landroid/view/View;Landroidx/core/view/AccessibilityDelegateCompat;)V +HSPLandroidx/core/view/ViewCompat;->setOnApplyWindowInsetsListener(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +Landroidx/core/view/ViewCompat$$ExternalSyntheticLambda0; +HSPLandroidx/core/view/ViewCompat$$ExternalSyntheticLambda0;-><init>()V +Landroidx/core/view/ViewCompat$1; +HSPLandroidx/core/view/ViewCompat$1;-><init>(IIII)V +Landroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager; +HSPLandroidx/core/view/ViewCompat$AccessibilityPaneVisibilityManager;-><init>()V +Landroidx/core/view/ViewCompat$AccessibilityViewProperty; +HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;-><init>(ILjava/lang/Class;II)V +HSPLandroidx/core/view/ViewCompat$AccessibilityViewProperty;->get(Landroid/view/View;)Ljava/lang/Object; +Landroidx/core/view/ViewCompat$Api21Impl$1; +HSPLandroidx/core/view/ViewCompat$Api21Impl$1;-><init>(Landroid/view/View;Landroidx/core/view/OnApplyWindowInsetsListener;)V +Landroidx/core/view/ViewCompat$Api26Impl; +HSPLandroidx/core/view/ViewCompat$Api26Impl;->getImportantForAutofill(Landroid/view/View;)I +HSPLandroidx/core/view/ViewCompat$Api26Impl;->setImportantForAutofill(Landroid/view/View;I)V +Landroidx/core/view/ViewCompat$Api28Impl; +HSPLandroidx/core/view/ViewCompat$Api28Impl;->getAccessibilityPaneTitle(Landroid/view/View;)Ljava/lang/CharSequence; +Landroidx/core/view/ViewCompat$Api29Impl; +HSPLandroidx/core/view/ViewCompat$Api29Impl;->getAccessibilityDelegate(Landroid/view/View;)Landroid/view/View$AccessibilityDelegate; +HSPLandroidx/core/view/ViewCompat$Api29Impl;->saveAttributeDataForStyleable(Landroid/view/View;Landroid/content/Context;[ILandroid/util/AttributeSet;Landroid/content/res/TypedArray;II)V +Landroidx/core/view/ViewConfigurationCompat; +Landroidx/core/view/ViewConfigurationCompat$Api26Impl; +HSPLandroidx/core/view/ViewConfigurationCompat$Api26Impl;->getScaledHorizontalScrollFactor(Landroid/view/ViewConfiguration;)F +HSPLandroidx/core/view/ViewConfigurationCompat$Api26Impl;->getScaledVerticalScrollFactor(Landroid/view/ViewConfiguration;)F +Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat;-><init>()V +HSPLandroidx/core/view/WindowInsetsCompat;-><init>(Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat;->toWindowInsetsCompat(Landroid/view/View;Landroid/view/WindowInsets;)Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$BuilderImpl; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;-><init>()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl;-><init>(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$BuilderImpl29; +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;-><init>()V +HSPLandroidx/core/view/WindowInsetsCompat$BuilderImpl29;->build()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Impl; +HSPLandroidx/core/view/WindowInsetsCompat$Impl;-><init>(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl20; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->copyRootViewBounds(Landroid/view/View;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->getInsets(I)Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->getSystemWindowInsets()Landroidx/core/graphics/Insets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setOverriddenInsets()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl20;->setRootWindowInsets(Landroidx/core/view/WindowInsetsCompat;)V +Landroidx/core/view/WindowInsetsCompat$Impl21; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeStableInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->consumeSystemWindowInsets()Landroidx/core/view/WindowInsetsCompat; +HSPLandroidx/core/view/WindowInsetsCompat$Impl21;->getStableInsets()Landroidx/core/graphics/Insets; +Landroidx/core/view/WindowInsetsCompat$Impl28; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +HSPLandroidx/core/view/WindowInsetsCompat$Impl28;->consumeDisplayCutout()Landroidx/core/view/WindowInsetsCompat; +Landroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout; +HSPLandroidx/core/view/WindowInsetsCompat$Impl28$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Landroidx/core/view/WindowInsetsCompat$Impl29; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29;-><init>(Landroidx/core/view/WindowInsetsCompat;Landroid/view/WindowInsets;)V +Landroidx/core/view/WindowInsetsCompat$Impl29$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/WindowInsets$Builder; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29$$ExternalSyntheticApiModelOutline0;->m()V +HSPLandroidx/core/view/WindowInsetsCompat$Impl29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets$Builder;)Landroid/view/WindowInsets; +HSPLandroidx/core/view/WindowInsetsCompat$Impl29$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/WindowInsets;)Landroid/graphics/Insets; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;-><init>(Landroid/view/accessibility/AccessibilityNodeInfo;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->addAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->getExtras()Landroid/os/Bundle; +PLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->removeAction(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setBoundsInParent(Landroid/graphics/Rect;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setClassName(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setHintText(Ljava/lang/CharSequence;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setScrollable(Z)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat;->setText(Ljava/lang/CharSequence;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/lang/CharSequence;)V +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline1; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline1;->m$1()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$$ExternalSyntheticApiModelOutline1;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;-><init>(I)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;-><init>(ILjava/lang/Class;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;-><init>(Ljava/lang/Object;ILjava/lang/String;Landroidx/core/view/accessibility/AccessibilityViewCommand;Ljava/lang/Class;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat;->getId()I +Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0;->m$1()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0;->m$2()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0;->m$3()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +HSPLandroidx/core/view/accessibility/AccessibilityNodeInfoCompat$AccessibilityActionCompat$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction; +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat;-><init>()V +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi16; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi16;-><init>(Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;)V +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi16;->createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi16;->performAction(IILandroid/os/Bundle;)Z +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi19;-><init>(Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;)V +Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi26; +HSPLandroidx/core/view/accessibility/AccessibilityNodeProviderCompat$AccessibilityNodeProviderApi26;-><init>(Landroidx/core/view/accessibility/AccessibilityNodeProviderCompat;)V +Landroidx/core/view/accessibility/AccessibilityViewCommand; +Landroidx/core/view/accessibility/AccessibilityViewCommand$CommandArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveAtGranularityArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveHtmlArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$MoveWindowArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$ScrollToPositionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetProgressArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetSelectionArguments; +Landroidx/core/view/accessibility/AccessibilityViewCommand$SetTextArguments; +Landroidx/core/widget/AutoSizeableTextView; +Landroidx/core/widget/TextViewCompat; +HSPLandroidx/core/widget/TextViewCompat;->wrapCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;Landroid/widget/TextView;)Landroid/view/ActionMode$Callback; +Landroidx/core/widget/TextViewOnReceiveContentListener; +HSPLandroidx/core/widget/TextViewOnReceiveContentListener;-><init>()V +Landroidx/emoji2/text/EmojiCompat; +Landroidx/emoji2/text/SpannableBuilder; +HSPLandroidx/emoji2/text/SpannableBuilder;-><init>(Ljava/lang/Class;Ljava/lang/CharSequence;)V +HSPLandroidx/emoji2/text/SpannableBuilder;->getSpanEnd(Ljava/lang/Object;)I +HSPLandroidx/emoji2/text/SpannableBuilder;->getSpanFlags(Ljava/lang/Object;)I +HSPLandroidx/emoji2/text/SpannableBuilder;->getSpanStart(Ljava/lang/Object;)I +HSPLandroidx/emoji2/text/SpannableBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroidx/emoji2/text/SpannableBuilder;->getWatcherFor(Ljava/lang/Object;)Landroidx/emoji2/text/SpannableBuilder$WatcherWrapper; +HSPLandroidx/emoji2/text/SpannableBuilder;->isWatcher(Ljava/lang/Object;)Z +HSPLandroidx/emoji2/text/SpannableBuilder;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroidx/emoji2/text/SpannableBuilder;->removeSpan(Ljava/lang/Object;)V +HSPLandroidx/emoji2/text/SpannableBuilder;->setSpan(Ljava/lang/Object;III)V +Landroidx/emoji2/text/SpannableBuilder$WatcherWrapper; +HSPLandroidx/emoji2/text/SpannableBuilder$WatcherWrapper;-><init>(Ljava/lang/Object;)V +HSPLandroidx/emoji2/text/SpannableBuilder$WatcherWrapper;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V +Landroidx/emoji2/viewsintegration/EmojiEditTextHelper; +HSPLandroidx/emoji2/viewsintegration/EmojiEditTextHelper;-><init>(Landroid/widget/EditText;)V +Landroidx/emoji2/viewsintegration/EmojiEditTextHelper$HelperInternal; +HSPLandroidx/emoji2/viewsintegration/EmojiEditTextHelper$HelperInternal;-><init>()V +Landroidx/emoji2/viewsintegration/EmojiEditTextHelper$HelperInternal19; +HSPLandroidx/emoji2/viewsintegration/EmojiEditTextHelper$HelperInternal19;-><init>(Landroid/widget/EditText;)V +Landroidx/emoji2/viewsintegration/EmojiEditableFactory; +HSPLandroidx/emoji2/viewsintegration/EmojiEditableFactory;-><init>()V +HSPLandroidx/emoji2/viewsintegration/EmojiEditableFactory;->newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable; +Landroidx/emoji2/viewsintegration/EmojiInputFilter; +HSPLandroidx/emoji2/viewsintegration/EmojiInputFilter;-><init>(Landroid/widget/TextView;)V +Landroidx/emoji2/viewsintegration/EmojiKeyListener; +HSPLandroidx/emoji2/viewsintegration/EmojiKeyListener;-><init>(Landroid/text/method/KeyListener;)V +HSPLandroidx/emoji2/viewsintegration/EmojiKeyListener;->getInputType()I +Landroidx/emoji2/viewsintegration/EmojiKeyListener$EmojiCompatHandleKeyDownHelper; +HSPLandroidx/emoji2/viewsintegration/EmojiKeyListener$EmojiCompatHandleKeyDownHelper;-><init>()V +Landroidx/emoji2/viewsintegration/EmojiTextViewHelper; +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper;-><init>(Landroid/widget/TextView;)V +Landroidx/emoji2/viewsintegration/EmojiTextViewHelper$HelperInternal; +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper$HelperInternal;-><init>()V +Landroidx/emoji2/viewsintegration/EmojiTextViewHelper$HelperInternal19; +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper$HelperInternal19;-><init>(Landroid/widget/TextView;)V +Landroidx/emoji2/viewsintegration/EmojiTextViewHelper$SkippingHelper19; +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper$SkippingHelper19;-><init>(Landroid/widget/TextView;)V +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper$SkippingHelper19;->getFilters([Landroid/text/InputFilter;)[Landroid/text/InputFilter; +HSPLandroidx/emoji2/viewsintegration/EmojiTextViewHelper$SkippingHelper19;->setEnabled(Z)V +Landroidx/emoji2/viewsintegration/EmojiTextWatcher; +HSPLandroidx/emoji2/viewsintegration/EmojiTextWatcher;-><init>(Landroid/widget/EditText;)V +HSPLandroidx/emoji2/viewsintegration/EmojiTextWatcher;->afterTextChanged(Landroid/text/Editable;)V +HSPLandroidx/emoji2/viewsintegration/EmojiTextWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroidx/emoji2/viewsintegration/EmojiTextWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V +Landroidx/fragment/app/Fragment; +Landroidx/fragment/app/FragmentActivity; +HSPLandroidx/fragment/app/FragmentActivity;-><init>()V +HSPLandroidx/fragment/app/FragmentActivity;->getSupportFragmentManager()Landroidx/fragment/app/FragmentManagerImpl; +HSPLandroidx/fragment/app/FragmentActivity;->markState(Landroidx/fragment/app/FragmentManagerImpl;)Z +HSPLandroidx/fragment/app/FragmentActivity;->onCreate(Landroid/os/Bundle;)V +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroidx/fragment/app/FragmentActivity;->onDestroy()V +HSPLandroidx/fragment/app/FragmentActivity;->onPause()V +HSPLandroidx/fragment/app/FragmentActivity;->onPostResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onResume()V +HSPLandroidx/fragment/app/FragmentActivity;->onStart()V +HSPLandroidx/fragment/app/FragmentActivity;->onStateNotSaved()V +HSPLandroidx/fragment/app/FragmentActivity;->onStop()V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda0;-><init>(Landroidx/fragment/app/FragmentActivity;)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda1;-><init>(Landroidx/fragment/app/FragmentActivity;I)V +Landroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2; +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2;-><init>(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$$ExternalSyntheticLambda2;->onContextAvailable()V +Landroidx/fragment/app/FragmentActivity$HostCallbacks; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;-><init>(Landroidx/fragment/app/FragmentActivity;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addMenuProvider(Landroidx/fragment/app/FragmentManager$2;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnConfigurationChangedListener(Landroidx/core/util/Consumer;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnMultiWindowModeChangedListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnPictureInPictureModeChangedListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->addOnTrimMemoryListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getLifecycle()Landroidx/lifecycle/LifecycleRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getSavedStateRegistry()Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->getViewModelStore()Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->removeMenuProvider(Landroidx/fragment/app/FragmentManager$2;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->removeOnConfigurationChangedListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->removeOnMultiWindowModeChangedListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->removeOnPictureInPictureModeChangedListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +HSPLandroidx/fragment/app/FragmentActivity$HostCallbacks;->removeOnTrimMemoryListener(Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;)V +Landroidx/fragment/app/FragmentContainer; +HSPLandroidx/fragment/app/FragmentContainer;-><init>()V +Landroidx/fragment/app/FragmentContainerView; +Landroidx/fragment/app/FragmentController; +HSPLandroidx/fragment/app/FragmentController;-><init>(Landroidx/fragment/app/FragmentActivity$HostCallbacks;)V +HSPLandroidx/fragment/app/FragmentController;->noteStateNotSaved()V +Landroidx/fragment/app/FragmentLayoutInflaterFactory; +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +HSPLandroidx/fragment/app/FragmentLayoutInflaterFactory;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +Landroidx/fragment/app/FragmentLayoutInflaterFactory$1; +Landroidx/fragment/app/FragmentLifecycleCallbacksDispatcher; +HSPLandroidx/fragment/app/FragmentLifecycleCallbacksDispatcher;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda0;-><init>(Landroidx/fragment/app/FragmentManagerImpl;I)V +Landroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1; +HSPLandroidx/fragment/app/FragmentManager$$ExternalSyntheticLambda1;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$1; +HSPLandroidx/fragment/app/FragmentManager$1;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$2; +HSPLandroidx/fragment/app/FragmentManager$2;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$3; +HSPLandroidx/fragment/app/FragmentManager$3;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$5; +HSPLandroidx/fragment/app/FragmentManager$5;-><init>(Landroidx/fragment/app/FragmentManagerImpl;)V +Landroidx/fragment/app/FragmentManager$8; +HSPLandroidx/fragment/app/FragmentManager$8;-><init>(Landroidx/fragment/app/FragmentManagerImpl;I)V +Landroidx/fragment/app/FragmentManager$FragmentIntentSenderContract; +HSPLandroidx/fragment/app/FragmentManager$FragmentIntentSenderContract;-><init>()V +Landroidx/fragment/app/FragmentManagerImpl; +HSPLandroidx/fragment/app/FragmentManagerImpl;-><init>()V +HSPLandroidx/fragment/app/FragmentManagerImpl;->attachController(Landroidx/fragment/app/FragmentActivity$HostCallbacks;Landroidx/fragment/app/FragmentContainer;Landroidx/fragment/app/Fragment;)V +HSPLandroidx/fragment/app/FragmentManagerImpl;->collectAllSpecialEffectsController()Ljava/util/HashSet; +HSPLandroidx/fragment/app/FragmentManagerImpl;->dispatchDestroy()V +HSPLandroidx/fragment/app/FragmentManagerImpl;->dispatchStateChange(I)V +HSPLandroidx/fragment/app/FragmentManagerImpl;->doPendingDeferredStart()V +HSPLandroidx/fragment/app/FragmentManagerImpl;->ensureExecReady(Z)V +HSPLandroidx/fragment/app/FragmentManagerImpl;->execPendingActions(Z)Z +HSPLandroidx/fragment/app/FragmentManagerImpl;->isStateSaved()Z +HSPLandroidx/fragment/app/FragmentManagerImpl;->moveToState(IZ)V +HSPLandroidx/fragment/app/FragmentManagerImpl;->noteStateNotSaved()V +HSPLandroidx/fragment/app/FragmentManagerImpl;->startPendingDeferredFragments()V +HSPLandroidx/fragment/app/FragmentManagerImpl;->updateOnBackPressedCallbackEnabled()V +Landroidx/fragment/app/FragmentManagerViewModel; +HSPLandroidx/fragment/app/FragmentManagerViewModel;-><init>(Z)V +HSPLandroidx/fragment/app/FragmentManagerViewModel;->onCleared()V +Landroidx/fragment/app/FragmentManagerViewModel$1; +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;-><init>()V +HSPLandroidx/fragment/app/FragmentManagerViewModel$1;->create(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +Landroidx/fragment/app/FragmentOnAttachListener; +Landroidx/fragment/app/FragmentStateManager; +Landroidx/fragment/app/FragmentStore; +HSPLandroidx/fragment/app/FragmentStore;-><init>()V +HSPLandroidx/fragment/app/FragmentStore;->getActiveFragmentStateManagers()Ljava/util/ArrayList; +HSPLandroidx/fragment/app/FragmentStore;->getFragments()Ljava/util/List; +Landroidx/fragment/app/strictmode/FragmentStrictMode; +Landroidx/fragment/app/strictmode/FragmentStrictMode$Flag; +Landroidx/fragment/app/strictmode/FragmentStrictMode$Policy; +Landroidx/fragment/app/strictmode/FragmentTagUsageViolation; +Landroidx/fragment/app/strictmode/Violation; +Landroidx/interpolator/view/animation/FastOutLinearInInterpolator; +HSPLandroidx/interpolator/view/animation/FastOutLinearInInterpolator;-><init>()V +Landroidx/interpolator/view/animation/FastOutSlowInInterpolator; +HSPLandroidx/interpolator/view/animation/FastOutSlowInInterpolator;-><init>()V +Landroidx/interpolator/view/animation/LinearOutSlowInInterpolator; +HSPLandroidx/interpolator/view/animation/LinearOutSlowInInterpolator;-><init>()V +Landroidx/lifecycle/DefaultLifecycleObserver; +Landroidx/lifecycle/HasDefaultViewModelProviderFactory; +Landroidx/lifecycle/Lifecycle; +HSPLandroidx/lifecycle/Lifecycle;-><init>()V +Landroidx/lifecycle/Lifecycle$Event; +HSPLandroidx/lifecycle/Lifecycle$Event;-><init>(ILjava/lang/String;)V +HSPLandroidx/lifecycle/Lifecycle$Event;->getTargetState()Landroidx/lifecycle/Lifecycle$State; +Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/Lifecycle$State;-><init>(ILjava/lang/String;)V +Landroidx/lifecycle/LifecycleEventObserver; +Landroidx/lifecycle/LifecycleObserver; +Landroidx/lifecycle/LifecycleOwner; +Landroidx/lifecycle/LifecycleRegistry; +HSPLandroidx/lifecycle/LifecycleRegistry;-><init>(Landroidx/lifecycle/LifecycleOwner;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->addObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->calculateTargetState(Landroidx/lifecycle/LifecycleObserver;)Landroidx/lifecycle/Lifecycle$State; +HSPLandroidx/lifecycle/LifecycleRegistry;->enforceMainThreadIfNeeded(Ljava/lang/String;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->handleLifecycleEvent(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->moveToState(Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->removeObserver(Landroidx/lifecycle/LifecycleObserver;)V +HSPLandroidx/lifecycle/LifecycleRegistry;->sync()V +Landroidx/lifecycle/LifecycleRegistry$ObserverWithState; +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;-><init>(Landroidx/lifecycle/LifecycleObserver;Landroidx/lifecycle/Lifecycle$State;)V +HSPLandroidx/lifecycle/LifecycleRegistry$ObserverWithState;->dispatchEvent(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/Lifecycling; +Landroidx/lifecycle/ReportFragment; +HSPLandroidx/lifecycle/ReportFragment;-><init>()V +HSPLandroidx/lifecycle/ReportFragment;->dispatch(Landroidx/lifecycle/Lifecycle$Event;)V +HSPLandroidx/lifecycle/ReportFragment;->injectIfNeededIn(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment;->onActivityCreated(Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment;->onDestroy()V +HSPLandroidx/lifecycle/ReportFragment;->onPause()V +HSPLandroidx/lifecycle/ReportFragment;->onResume()V +HSPLandroidx/lifecycle/ReportFragment;->onStart()V +HSPLandroidx/lifecycle/ReportFragment;->onStop()V +Landroidx/lifecycle/ReportFragment$Companion; +HSPLandroidx/lifecycle/ReportFragment$Companion;->dispatch$lifecycle_runtime_release(Landroid/app/Activity;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;-><init>()V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityDestroyed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPaused(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPostStarted(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPreDestroyed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPrePaused(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityPreStopped(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityResumed(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStarted(Landroid/app/Activity;)V +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks;->onActivityStopped(Landroid/app/Activity;)V +Landroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion$$ExternalSyntheticApiModelOutline0; +HSPLandroidx/lifecycle/ReportFragment$LifecycleCallbacks$Companion$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/Activity;Landroidx/lifecycle/ReportFragment$LifecycleCallbacks;)V +Landroidx/lifecycle/SavedStateHandleAttacher; +HSPLandroidx/lifecycle/SavedStateHandleAttacher;-><init>(Landroidx/lifecycle/SavedStateHandlesProvider;)V +HSPLandroidx/lifecycle/SavedStateHandleAttacher;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/lifecycle/SavedStateHandleSupport; +HSPLandroidx/lifecycle/SavedStateHandleSupport;->enableSavedStateHandles(Landroidx/savedstate/SavedStateRegistryOwner;)V +Landroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$DEFAULT_ARGS_KEY$1;-><init>()V +Landroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1; +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;-><init>()V +HSPLandroidx/lifecycle/SavedStateHandleSupport$savedStateHandlesVM$1$1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; +Landroidx/lifecycle/SavedStateHandlesProvider; +HSPLandroidx/lifecycle/SavedStateHandlesProvider;-><init>(Landroidx/savedstate/SavedStateRegistry;Landroidx/lifecycle/ViewModelStoreOwner;)V +Landroidx/lifecycle/SavedStateHandlesProvider$viewModel$2; +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;-><init>(Landroidx/lifecycle/ViewModelStoreOwner;)V +HSPLandroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;->invoke()Ljava/lang/Object; +Landroidx/lifecycle/SavedStateHandlesVM; +HSPLandroidx/lifecycle/SavedStateHandlesVM;-><init>()V +Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModel;-><init>()V +HSPLandroidx/lifecycle/ViewModel;->onCleared()V +Landroidx/lifecycle/ViewModelProvider; +HSPLandroidx/lifecycle/ViewModelProvider;-><init>(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;)V +HSPLandroidx/lifecycle/ViewModelProvider;-><init>(Landroidx/lifecycle/ViewModelStore;Landroidx/lifecycle/ViewModelProvider$Factory;Landroidx/lifecycle/viewmodel/CreationExtras;)V +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/Class;)Landroidx/lifecycle/ViewModel; +HSPLandroidx/lifecycle/ViewModelProvider;->get(Ljava/lang/Class;Ljava/lang/String;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$Factory; +HSPLandroidx/lifecycle/ViewModelProvider$Factory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/MutableCreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl; +HSPLandroidx/lifecycle/ViewModelProvider$NewInstanceFactory$Companion$ViewModelKeyImpl;-><init>()V +Landroidx/lifecycle/ViewModelStore; +HSPLandroidx/lifecycle/ViewModelStore;-><init>()V +HSPLandroidx/lifecycle/ViewModelStore;->clear()V +Landroidx/lifecycle/ViewModelStoreOwner; +Landroidx/lifecycle/ViewTreeLifecycleOwner; +HSPLandroidx/lifecycle/ViewTreeLifecycleOwner;->set(Landroid/view/View;Landroidx/lifecycle/LifecycleOwner;)V +Landroidx/lifecycle/viewmodel/CreationExtras; +HSPLandroidx/lifecycle/viewmodel/CreationExtras;-><init>()V +Landroidx/lifecycle/viewmodel/CreationExtras$Empty; +HSPLandroidx/lifecycle/viewmodel/CreationExtras$Empty;-><init>()V +Landroidx/lifecycle/viewmodel/InitializerViewModelFactory; +HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactory;-><init>([Landroidx/lifecycle/viewmodel/ViewModelInitializer;)V +HSPLandroidx/lifecycle/viewmodel/InitializerViewModelFactory;->create(Ljava/lang/Class;Landroidx/lifecycle/viewmodel/MutableCreationExtras;)Landroidx/lifecycle/ViewModel; +Landroidx/lifecycle/viewmodel/MutableCreationExtras; +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;-><init>()V +HSPLandroidx/lifecycle/viewmodel/MutableCreationExtras;-><init>(Landroidx/lifecycle/viewmodel/CreationExtras;)V +Landroidx/lifecycle/viewmodel/ViewModelInitializer; +HSPLandroidx/lifecycle/viewmodel/ViewModelInitializer;-><init>(Ljava/lang/Class;)V +Landroidx/mediarouter/media/MediaRouter; +HSPLandroidx/mediarouter/media/MediaRouter;-><init>(Landroid/content/Context;)V +HSPLandroidx/mediarouter/media/MediaRouter;->checkCallingThread()V +HSPLandroidx/mediarouter/media/MediaRouter;->getInstance(Landroid/content/Context;)Landroidx/mediarouter/media/MediaRouter; +Landroidx/mediarouter/media/MediaRouter$GlobalMediaRouter; +HSPLandroidx/mediarouter/media/MediaRouter$GlobalMediaRouter;-><init>(Landroid/content/Context;)V +Landroidx/mediarouter/media/MediaRouter$GlobalMediaRouter$3; +HSPLandroidx/mediarouter/media/MediaRouter$GlobalMediaRouter$3;-><init>(Landroidx/mediarouter/media/MediaRouter$GlobalMediaRouter;I)V +HSPLandroidx/mediarouter/media/MediaRouter$GlobalMediaRouter$3;-><init>(Ljava/lang/Object;)V +Landroidx/mediarouter/media/MediaRouter$GlobalMediaRouter$CallbackHandler; +HSPLandroidx/mediarouter/media/MediaRouter$GlobalMediaRouter$CallbackHandler;-><init>(Landroidx/mediarouter/media/MediaRouter$GlobalMediaRouter;)V +Landroidx/mediarouter/media/RemoteControlClientCompat$PlaybackInfo; +HSPLandroidx/mediarouter/media/RemoteControlClientCompat$PlaybackInfo;-><init>()V +Landroidx/mediarouter/media/SystemMediaRouteProvider$SyncCallback; +Landroidx/recyclerview/widget/AdapterHelper; +HSPLandroidx/recyclerview/widget/AdapterHelper;-><init>(Landroidx/recyclerview/widget/RecyclerView$4;)V +HSPLandroidx/recyclerview/widget/AdapterHelper;->consumePostponedUpdates()V +HSPLandroidx/recyclerview/widget/AdapterHelper;->consumeUpdatesInOnePass()V +HSPLandroidx/recyclerview/widget/AdapterHelper;->preProcess()V +HSPLandroidx/recyclerview/widget/AdapterHelper;->recycleUpdateOpsAndClearList(Ljava/util/ArrayList;)V +Landroidx/recyclerview/widget/ChildHelper; +HSPLandroidx/recyclerview/widget/ChildHelper;-><init>(Landroidx/recyclerview/widget/RecyclerView$4;)V +HSPLandroidx/recyclerview/widget/ChildHelper;->getChildCount()I +HSPLandroidx/recyclerview/widget/ChildHelper;->getUnfilteredChildCount()I +Landroidx/recyclerview/widget/ChildHelper$Bucket; +HSPLandroidx/recyclerview/widget/ChildHelper$Bucket;-><init>()V +HSPLandroidx/recyclerview/widget/ChildHelper$Bucket;->reset()V +Landroidx/recyclerview/widget/DefaultItemAnimator; +HSPLandroidx/recyclerview/widget/DefaultItemAnimator;-><init>()V +HSPLandroidx/recyclerview/widget/DefaultItemAnimator;->endAnimations()V +HSPLandroidx/recyclerview/widget/DefaultItemAnimator;->isRunning()Z +Landroidx/recyclerview/widget/GapWorker; +HSPLandroidx/recyclerview/widget/GapWorker;-><init>()V +Landroidx/recyclerview/widget/GapWorker$1; +HSPLandroidx/recyclerview/widget/GapWorker$1;-><init>()V +Landroidx/recyclerview/widget/GapWorker$LayoutPrefetchRegistryImpl; +HSPLandroidx/recyclerview/widget/GapWorker$LayoutPrefetchRegistryImpl;-><init>()V +Landroidx/recyclerview/widget/GridLayoutManager; +HSPLandroidx/recyclerview/widget/GridLayoutManager;-><init>(I)V +HSPLandroidx/recyclerview/widget/GridLayoutManager;->generateLayoutParams(Landroid/content/Context;Landroid/util/AttributeSet;)Landroidx/recyclerview/widget/RecyclerView$LayoutParams; +HSPLandroidx/recyclerview/widget/GridLayoutManager;->setSpanCount(I)V +Landroidx/recyclerview/widget/GridLayoutManager$DefaultSpanSizeLookup; +HSPLandroidx/recyclerview/widget/GridLayoutManager$DefaultSpanSizeLookup;-><init>()V +Landroidx/recyclerview/widget/GridLayoutManager$LayoutParams; +HSPLandroidx/recyclerview/widget/GridLayoutManager$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Landroidx/recyclerview/widget/GridLayoutManager$SpanSizeLookup; +HSPLandroidx/recyclerview/widget/GridLayoutManager$SpanSizeLookup;-><init>()V +HSPLandroidx/recyclerview/widget/GridLayoutManager$SpanSizeLookup;->invalidateSpanIndexCache()V +Landroidx/recyclerview/widget/ItemTouchHelper; +HSPLandroidx/recyclerview/widget/ItemTouchHelper;-><init>(Landroidx/recyclerview/widget/ItemTouchHelper$Callback;)V +HSPLandroidx/recyclerview/widget/ItemTouchHelper;->attachToRecyclerView(Landroidx/recyclerview/widget/RecyclerView;)V +Landroidx/recyclerview/widget/ItemTouchHelper$1; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$1;-><init>(Landroidx/recyclerview/widget/ItemTouchHelper;)V +Landroidx/recyclerview/widget/ItemTouchHelper$2; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$2;-><init>(Landroidx/recyclerview/widget/ItemTouchHelper;)V +Landroidx/recyclerview/widget/ItemTouchHelper$Callback; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$Callback;-><init>()V +Landroidx/recyclerview/widget/ItemTouchHelper$Callback$1; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$Callback$1;-><init>(I)V +Landroidx/recyclerview/widget/ItemTouchHelper$ItemTouchHelperGestureListener; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$ItemTouchHelperGestureListener;-><init>(Landroidx/recyclerview/widget/ItemTouchHelper;)V +Landroidx/recyclerview/widget/ItemTouchHelper$SimpleCallback; +HSPLandroidx/recyclerview/widget/ItemTouchHelper$SimpleCallback;-><init>()V +Landroidx/recyclerview/widget/LinearLayoutManager; +HSPLandroidx/recyclerview/widget/LinearLayoutManager;-><init>(I)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->assertNotInLayoutOrScroll(Ljava/lang/String;)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->calculateExtraLayoutSpace(Landroidx/recyclerview/widget/RecyclerView$State;[I)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->canScrollHorizontally()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeHorizontalScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->computeScrollOffset(Landroidx/recyclerview/widget/RecyclerView$State;)I +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->ensureLayoutState()V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->fill(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/LinearLayoutManager$LayoutState;Landroidx/recyclerview/widget/RecyclerView$State;Z)I +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->isAutoMeasureEnabled()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->isLayoutRTL()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->onAnchorReady(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;Landroidx/recyclerview/widget/LinearLayoutManager$AnchorInfo;I)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->onDetachedFromWindow(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->onLayoutChildren(Landroidx/recyclerview/widget/RecyclerView$Recycler;Landroidx/recyclerview/widget/RecyclerView$State;)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->onLayoutCompleted(Landroidx/recyclerview/widget/RecyclerView$State;)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->resolveShouldLayoutReverse()V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->setOrientation(I)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->shouldMeasureTwice()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->supportsPredictiveItemAnimations()Z +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->updateLayoutStateToFillEnd(II)V +HSPLandroidx/recyclerview/widget/LinearLayoutManager;->updateLayoutStateToFillStart(II)V +Landroidx/recyclerview/widget/LinearLayoutManager$AnchorInfo; +HSPLandroidx/recyclerview/widget/LinearLayoutManager$AnchorInfo;-><init>()V +HSPLandroidx/recyclerview/widget/LinearLayoutManager$AnchorInfo;->assignCoordinateFromPadding()V +HSPLandroidx/recyclerview/widget/LinearLayoutManager$AnchorInfo;->reset()V +Landroidx/recyclerview/widget/LinearLayoutManager$LayoutChunkResult; +HSPLandroidx/recyclerview/widget/LinearLayoutManager$LayoutChunkResult;-><init>()V +Landroidx/recyclerview/widget/LinearLayoutManager$LayoutState; +HSPLandroidx/recyclerview/widget/LinearLayoutManager$LayoutState;-><init>()V +Landroidx/recyclerview/widget/OpReorderer; +HSPLandroidx/recyclerview/widget/OpReorderer;-><init>(Landroidx/recyclerview/widget/AdapterHelper;)V +Landroidx/recyclerview/widget/OrientationHelper; +HSPLandroidx/recyclerview/widget/OrientationHelper;-><init>(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;)V +HSPLandroidx/recyclerview/widget/OrientationHelper;->createOrientationHelper(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;I)Landroidx/recyclerview/widget/OrientationHelper$1; +Landroidx/recyclerview/widget/OrientationHelper$1; +HSPLandroidx/recyclerview/widget/OrientationHelper$1;-><init>(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;I)V +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getEnd()I +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getEndAfterPadding()I +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getMode()I +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getStartAfterPadding()I +HSPLandroidx/recyclerview/widget/OrientationHelper$1;->getTotalSpace()I +Landroidx/recyclerview/widget/RecyclerView; +HSPLandroidx/recyclerview/widget/RecyclerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroidx/recyclerview/widget/RecyclerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLandroidx/recyclerview/widget/RecyclerView;->addItemDecoration(Landroidx/recyclerview/widget/RecyclerView$ItemDecoration;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->addOnChildAttachStateChangeListener(Landroidx/recyclerview/widget/RecyclerView$OnChildAttachStateChangeListener;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->addOnScrollListener(Landroidx/recyclerview/widget/RecyclerView$OnScrollListener;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->assertNotInLayoutOrScroll(Ljava/lang/String;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->clearOldPositions()V +HSPLandroidx/recyclerview/widget/RecyclerView;->computeHorizontalScrollOffset()I +HSPLandroidx/recyclerview/widget/RecyclerView;->defaultOnMeasure(II)V +HSPLandroidx/recyclerview/widget/RecyclerView;->dispatchLayout()V +HSPLandroidx/recyclerview/widget/RecyclerView;->dispatchLayoutStep1()V +HSPLandroidx/recyclerview/widget/RecyclerView;->dispatchLayoutStep2()V +HSPLandroidx/recyclerview/widget/RecyclerView;->fillRemainingScrollValues(Landroidx/recyclerview/widget/RecyclerView$State;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->findMinMaxChildLayoutPositions([I)V +HSPLandroidx/recyclerview/widget/RecyclerView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLandroidx/recyclerview/widget/RecyclerView;->getScrollingChildHelper()Landroidx/core/view/NestedScrollingChildHelper; +HSPLandroidx/recyclerview/widget/RecyclerView;->isAttachedToWindow()Z +HSPLandroidx/recyclerview/widget/RecyclerView;->isComputingLayout()Z +HSPLandroidx/recyclerview/widget/RecyclerView;->markItemDecorInsetsDirty()V +HSPLandroidx/recyclerview/widget/RecyclerView;->onAttachedToWindow()V +HSPLandroidx/recyclerview/widget/RecyclerView;->onDetachedFromWindow()V +HSPLandroidx/recyclerview/widget/RecyclerView;->onEnterLayoutOrScroll()V +HSPLandroidx/recyclerview/widget/RecyclerView;->onExitLayoutOrScroll(Z)V +HSPLandroidx/recyclerview/widget/RecyclerView;->onLayout(ZIIII)V +HSPLandroidx/recyclerview/widget/RecyclerView;->onMeasure(II)V +HSPLandroidx/recyclerview/widget/RecyclerView;->onSizeChanged(IIII)V +HSPLandroidx/recyclerview/widget/RecyclerView;->processAdapterUpdatesAndSetAnimationFlags()V +HSPLandroidx/recyclerview/widget/RecyclerView;->processDataSetCompletelyChanged(Z)V +HSPLandroidx/recyclerview/widget/RecyclerView;->removeItemDecoration(Landroidx/recyclerview/widget/RecyclerView$ItemDecoration;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->removeOnScrollListener(Landroidx/recyclerview/widget/RecyclerView$OnScrollListener;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->requestLayout()V +HSPLandroidx/recyclerview/widget/RecyclerView;->setAdapter(Landroidx/recyclerview/widget/RecyclerView$Adapter;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->setClipToPadding(Z)V +HSPLandroidx/recyclerview/widget/RecyclerView;->setLayoutManager(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;)V +HSPLandroidx/recyclerview/widget/RecyclerView;->setNestedScrollingEnabled(Z)V +HSPLandroidx/recyclerview/widget/RecyclerView;->setScrollState(I)V +HSPLandroidx/recyclerview/widget/RecyclerView;->startInterceptRequestLayout()V +HSPLandroidx/recyclerview/widget/RecyclerView;->stopInterceptRequestLayout(Z)V +HSPLandroidx/recyclerview/widget/RecyclerView;->stopNestedScroll()V +HSPLandroidx/recyclerview/widget/RecyclerView;->suppressLayout(Z)V +Landroidx/recyclerview/widget/RecyclerView$1; +HSPLandroidx/recyclerview/widget/RecyclerView$1;-><init>(ILandroidx/recyclerview/widget/RecyclerView;)V +Landroidx/recyclerview/widget/RecyclerView$3; +HSPLandroidx/recyclerview/widget/RecyclerView$3;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$4; +HSPLandroidx/recyclerview/widget/RecyclerView$4;-><init>(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/RecyclerView$4;->getChildCount()I +Landroidx/recyclerview/widget/RecyclerView$Adapter; +HSPLandroidx/recyclerview/widget/RecyclerView$Adapter;-><init>()V +HSPLandroidx/recyclerview/widget/RecyclerView$Adapter;->onAttachedToRecyclerView(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/RecyclerView$Adapter;->registerAdapterDataObserver(Landroidx/recyclerview/widget/RecyclerView$AdapterDataObserver;)V +Landroidx/recyclerview/widget/RecyclerView$AdapterDataObservable; +HSPLandroidx/recyclerview/widget/RecyclerView$AdapterDataObservable;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$AdapterDataObserver; +HSPLandroidx/recyclerview/widget/RecyclerView$AdapterDataObserver;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$ItemDecoration; +HSPLandroidx/recyclerview/widget/RecyclerView$ItemDecoration;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$LayoutManager; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;-><init>()V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->chooseSize(III)I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->detachAndScrapAttachedViews(Landroidx/recyclerview/widget/RecyclerView$Recycler;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getChildCount()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getLayoutDirection()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingLeft()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->getPaddingRight()I +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->removeAndRecycleScrapInt(Landroidx/recyclerview/widget/RecyclerView$Recycler;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->requestLayout()V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->setExactMeasureSpecsFrom(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->setMeasureSpecs(II)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->setMeasuredDimensionFromChildren(II)V +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager;->setRecyclerView(Landroidx/recyclerview/widget/RecyclerView;)V +Landroidx/recyclerview/widget/RecyclerView$LayoutManager$1; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutManager$1;-><init>(Landroidx/recyclerview/widget/RecyclerView$LayoutManager;I)V +Landroidx/recyclerview/widget/RecyclerView$LayoutParams; +HSPLandroidx/recyclerview/widget/RecyclerView$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Landroidx/recyclerview/widget/RecyclerView$OnChildAttachStateChangeListener; +Landroidx/recyclerview/widget/RecyclerView$OnItemTouchListener; +Landroidx/recyclerview/widget/RecyclerView$OnScrollListener; +HSPLandroidx/recyclerview/widget/RecyclerView$OnScrollListener;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$RecycledViewPool; +HSPLandroidx/recyclerview/widget/RecyclerView$RecycledViewPool;-><init>()V +HSPLandroidx/recyclerview/widget/RecyclerView$RecycledViewPool;->clear()V +Landroidx/recyclerview/widget/RecyclerView$Recycler; +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;-><init>(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;->getRecycledViewPool()Landroidx/recyclerview/widget/RecyclerView$RecycledViewPool; +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;->maybeSendPoolingContainerAttach()V +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;->poolingContainerDetach(Landroidx/recyclerview/widget/RecyclerView$Adapter;Z)V +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;->recycleAndClearCachedViews()V +HSPLandroidx/recyclerview/widget/RecyclerView$Recycler;->updateViewCacheSize()V +Landroidx/recyclerview/widget/RecyclerView$RecyclerListener; +Landroidx/recyclerview/widget/RecyclerView$RecyclerViewDataObserver; +HSPLandroidx/recyclerview/widget/RecyclerView$RecyclerViewDataObserver;-><init>(Landroidx/recyclerview/widget/RecyclerView;)V +Landroidx/recyclerview/widget/RecyclerView$SmoothScroller$ScrollVectorProvider; +Landroidx/recyclerview/widget/RecyclerView$State; +HSPLandroidx/recyclerview/widget/RecyclerView$State;-><init>()V +HSPLandroidx/recyclerview/widget/RecyclerView$State;->assertLayoutStep(I)V +HSPLandroidx/recyclerview/widget/RecyclerView$State;->getItemCount()I +Landroidx/recyclerview/widget/RecyclerView$StretchEdgeEffectFactory; +HSPLandroidx/recyclerview/widget/RecyclerView$StretchEdgeEffectFactory;-><init>()V +Landroidx/recyclerview/widget/RecyclerView$ViewFlinger; +HSPLandroidx/recyclerview/widget/RecyclerView$ViewFlinger;-><init>(Landroidx/recyclerview/widget/RecyclerView;)V +Landroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate; +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;-><init>(Landroidx/recyclerview/widget/RecyclerView;)V +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;->getItemDelegate()Landroidx/core/view/AccessibilityDelegateCompat; +Landroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate; +HSPLandroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate$ItemDelegate;-><init>(Landroidx/recyclerview/widget/RecyclerViewAccessibilityDelegate;)V +Landroidx/recyclerview/widget/SimpleItemAnimator; +HSPLandroidx/recyclerview/widget/SimpleItemAnimator;-><init>()V +Landroidx/recyclerview/widget/ViewBoundsCheck; +HSPLandroidx/recyclerview/widget/ViewBoundsCheck;-><init>(Landroidx/recyclerview/widget/RecyclerView$LayoutManager$1;)V +Landroidx/recyclerview/widget/ViewBoundsCheck$BoundFlags; +HSPLandroidx/recyclerview/widget/ViewBoundsCheck$BoundFlags;-><init>()V +Landroidx/recyclerview/widget/ViewBoundsCheck$Callback; +Landroidx/recyclerview/widget/ViewInfoStore; +HSPLandroidx/recyclerview/widget/ViewInfoStore;-><init>()V +Landroidx/recyclerview/widget/ViewInfoStore$InfoRecord; +Landroidx/savedstate/Recreator; +HSPLandroidx/savedstate/Recreator;-><init>(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/Recreator;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/SavedStateRegistry; +HSPLandroidx/savedstate/SavedStateRegistry;-><init>()V +HSPLandroidx/savedstate/SavedStateRegistry;->consumeRestoredStateForKey(Ljava/lang/String;)Landroid/os/Bundle; +HSPLandroidx/savedstate/SavedStateRegistry;->registerSavedStateProvider(Ljava/lang/String;Landroidx/savedstate/SavedStateRegistry$SavedStateProvider;)V +Landroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0; +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;-><init>(Landroidx/savedstate/SavedStateRegistry;)V +HSPLandroidx/savedstate/SavedStateRegistry$$ExternalSyntheticLambda0;->onStateChanged(Landroidx/lifecycle/LifecycleOwner;Landroidx/lifecycle/Lifecycle$Event;)V +Landroidx/savedstate/SavedStateRegistry$SavedStateProvider; +Landroidx/savedstate/SavedStateRegistryController; +HSPLandroidx/savedstate/SavedStateRegistryController;-><init>(Landroidx/savedstate/SavedStateRegistryOwner;)V +HSPLandroidx/savedstate/SavedStateRegistryController;->performAttach()V +HSPLandroidx/savedstate/SavedStateRegistryController;->performRestore(Landroid/os/Bundle;)V +Landroidx/savedstate/SavedStateRegistryOwner; +Landroidx/savedstate/ViewTreeSavedStateRegistryOwner; +HSPLandroidx/savedstate/ViewTreeSavedStateRegistryOwner;->set(Landroid/view/View;Landroidx/savedstate/SavedStateRegistryOwner;)V +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCommon; +Landroidx/vectordrawable/graphics/drawable/VectorDrawableCompat; +Landroidx/viewpager/widget/ViewPager$OnPageChangeListener; +Lcom/google/android/aidl/BaseStub; +HSPLcom/google/android/aidl/BaseStub;-><init>(Ljava/lang/String;)V +Lcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider; +HSPLcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider;-><init>()V +HSPLcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider;->getBookmarkAppWidgetUpdateAction(Landroid/content/Context;)Ljava/lang/String; +HSPLcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider;->onReceive$org$chromium$chrome$browser$bookmarkswidget$BookmarkWidgetProvider(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +HSPLcom/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider;->performUpdate(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;[I)V +Lcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0; +HSPLcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0;-><init>()V +Lcom/google/android/gms/auth/GoogleAuthException; +Lcom/google/android/gms/cast/Cast$Listener; +HSPLcom/google/android/gms/cast/Cast$Listener;-><init>()V +Lcom/google/android/gms/cast/framework/SessionManagerListener; +Lcom/google/android/gms/cast/framework/media/RemoteMediaClient$Callback; +HSPLcom/google/android/gms/cast/framework/media/RemoteMediaClient$Callback;-><init>()V +Lcom/google/android/gms/common/GoogleApiAvailability; +HSPLcom/google/android/gms/common/GoogleApiAvailability;-><init>()V +HSPLcom/google/android/gms/common/GoogleApiAvailability;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GoogleApiAvailability$$ExternalSyntheticApiModelOutline0; +HSPLcom/google/android/gms/common/GoogleApiAvailability$$ExternalSyntheticApiModelOutline0;->m()V +Lcom/google/android/gms/common/GoogleApiAvailabilityLight; +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;-><init>()V +HSPLcom/google/android/gms/common/GoogleApiAvailabilityLight;->isGooglePlayServicesAvailable(Landroid/content/Context;I)I +Lcom/google/android/gms/common/GoogleCertificates; +Lcom/google/android/gms/common/GoogleCertificates$1; +HSPLcom/google/android/gms/common/GoogleCertificates$1;-><init>(I[B)V +Lcom/google/android/gms/common/GoogleCertificates$CertData; +HSPLcom/google/android/gms/common/GoogleCertificates$CertData;-><init>([B)V +HSPLcom/google/android/gms/common/GoogleCertificates$CertData;->equals(Ljava/lang/Object;)Z +HSPLcom/google/android/gms/common/GoogleCertificates$CertData;->extractBytes(Ljava/lang/String;)[B +Lcom/google/android/gms/common/GoogleCertificates$FullCertData; +HSPLcom/google/android/gms/common/GoogleCertificates$FullCertData;-><init>([B)V +HSPLcom/google/android/gms/common/GoogleCertificates$FullCertData;->getBytes()[B +Lcom/google/android/gms/common/GoogleCertificates$LazyCertData; +HSPLcom/google/android/gms/common/GoogleCertificates$LazyCertData;-><init>([B)V +HSPLcom/google/android/gms/common/GoogleCertificates$LazyCertData;->getBytes()[B +Lcom/google/android/gms/common/GoogleCertificates$VALID_PUBLIC_SIGNATURES; +Lcom/google/android/gms/common/GooglePlayServicesUtilLight; +Lcom/google/android/gms/common/GoogleSignatureVerifier; +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;-><init>(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->isGooglePublicSignedPackage(Landroid/content/pm/PackageInfo;)Z +HSPLcom/google/android/gms/common/GoogleSignatureVerifier;->verifySignature(Landroid/content/pm/PackageInfo;[Lcom/google/android/gms/common/GoogleCertificates$CertData;)Lcom/google/android/gms/common/GoogleCertificates$CertData; +Lcom/google/android/gms/common/api/internal/RegistrationMethods$Builder$$ExternalSyntheticLambda0; +HSPLcom/google/android/gms/common/api/internal/RegistrationMethods$Builder$$ExternalSyntheticLambda0;-><init>()V +HSPLcom/google/android/gms/common/api/internal/RegistrationMethods$Builder$$ExternalSyntheticLambda0;->run()V +Lcom/google/android/gms/common/internal/ICertData; +Lcom/google/android/gms/common/internal/ICertData$Stub; +HSPLcom/google/android/gms/common/internal/ICertData$Stub;-><init>()V +Lcom/google/android/gms/common/internal/MetadataValueReader; +Lcom/google/android/gms/common/util/DeviceProperties; +HSPLcom/google/android/gms/common/util/DeviceProperties;->isWearableWithoutPlayStore(Landroid/content/Context;)Z +Lcom/google/android/gms/common/util/ProcessUtils$$ExternalSyntheticApiModelOutline0; +HSPLcom/google/android/gms/common/util/ProcessUtils$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/String; +Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;-><init>(Landroid/content/Context;)V +HSPLcom/google/android/gms/common/wrappers/PackageManagerWrapper;->getApplicationInfo(ILjava/lang/String;)Landroid/content/pm/ApplicationInfo; +Lcom/google/android/gms/common/wrappers/Wrappers; +HSPLcom/google/android/gms/common/wrappers/Wrappers;-><init>()V +HSPLcom/google/android/gms/common/wrappers/Wrappers;->packageManager(Landroid/content/Context;)Lcom/google/android/gms/common/wrappers/PackageManagerWrapper; +Lcom/google/android/gms/dynamic/IObjectWrapper; +Lcom/google/android/gms/dynamic/IObjectWrapper$Stub; +HSPLcom/google/android/gms/dynamic/IObjectWrapper$Stub;-><init>()V +Lcom/google/android/gms/dynamic/ObjectWrapper; +HSPLcom/google/android/gms/dynamic/ObjectWrapper;-><init>(Ljava/lang/Object;)V +HSPLcom/google/android/gms/dynamic/ObjectWrapper;->unwrap(Lcom/google/android/gms/dynamic/IObjectWrapper;)Ljava/lang/Object; +Lcom/google/android/material/animation/AnimationUtils; +Lcom/google/android/material/appbar/AppBarLayout; +HSPLcom/google/android/material/appbar/AppBarLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLcom/google/android/material/appbar/AppBarLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z +HSPLcom/google/android/material/appbar/AppBarLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; +HSPLcom/google/android/material/appbar/AppBarLayout;->setOrientation(I)V +Lcom/google/android/material/appbar/AppBarLayout$$ExternalSyntheticApiModelOutline0; +HSPLcom/google/android/material/appbar/AppBarLayout$$ExternalSyntheticApiModelOutline0;->m(Lcom/google/android/material/appbar/AppBarLayout;Z)V +Lcom/google/android/material/appbar/AppBarLayout$$ExternalSyntheticLambda1; +HSPLcom/google/android/material/appbar/AppBarLayout$$ExternalSyntheticLambda1;-><init>(Lcom/google/android/material/appbar/AppBarLayout;Lcom/google/android/material/shape/MaterialShapeDrawable;I)V +Lcom/google/android/material/appbar/AppBarLayout$1; +HSPLcom/google/android/material/appbar/AppBarLayout$1;-><init>(Lcom/google/android/material/appbar/AppBarLayout;)V +Lcom/google/android/material/appbar/AppBarLayout$BaseOnOffsetChangedListener; +Lcom/google/android/material/appbar/AppBarLayout$Behavior; +HSPLcom/google/android/material/appbar/AppBarLayout$Behavior;-><init>()V +Lcom/google/android/material/appbar/AppBarLayout$Behavior$DragCallback; +HSPLcom/google/android/material/appbar/AppBarLayout$Behavior$DragCallback;-><init>()V +Lcom/google/android/material/appbar/AppBarLayout$LayoutParams; +HSPLcom/google/android/material/appbar/AppBarLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lcom/google/android/material/appbar/AppBarLayout$OnOffsetChangedListener; +Lcom/google/android/material/appbar/AppBarLayout$ScrollingViewBehavior; +HSPLcom/google/android/material/appbar/AppBarLayout$ScrollingViewBehavior;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lcom/google/android/material/appbar/HeaderBehavior; +HSPLcom/google/android/material/appbar/HeaderBehavior;-><init>()V +Lcom/google/android/material/appbar/ViewOffsetBehavior; +HSPLcom/google/android/material/appbar/ViewOffsetBehavior;-><init>()V +HSPLcom/google/android/material/appbar/ViewOffsetBehavior;-><init>(I)V +Lcom/google/android/material/appbar/ViewUtilsLollipop; +Lcom/google/android/material/color/DynamicColors; +HSPLcom/google/android/material/color/DynamicColors;->isDynamicColorAvailable()Z +Lcom/google/android/material/color/DynamicColors$1; +HSPLcom/google/android/material/color/DynamicColors$1;-><init>()V +Lcom/google/android/material/color/DynamicColors$2; +HSPLcom/google/android/material/color/DynamicColors$2;-><init>()V +Lcom/google/android/material/color/DynamicColors$DeviceSupportCondition; +Lcom/google/android/material/color/MaterialColors; +HSPLcom/google/android/material/color/MaterialColors;->getColor(ILandroid/content/Context;Ljava/lang/String;)I +HSPLcom/google/android/material/color/MaterialColors;->getColor(Landroid/content/Context;II)I +HSPLcom/google/android/material/color/MaterialColors;->getColor(Landroid/view/View;I)I +HSPLcom/google/android/material/color/MaterialColors;->layer(FII)I +Lcom/google/android/material/elevation/ElevationOverlayProvider; +HSPLcom/google/android/material/elevation/ElevationOverlayProvider;-><init>(Landroid/content/Context;)V +HSPLcom/google/android/material/elevation/ElevationOverlayProvider;-><init>(ZIIIF)V +HSPLcom/google/android/material/elevation/ElevationOverlayProvider;->compositeOverlay(IF)I +HSPLcom/google/android/material/elevation/ElevationOverlayProvider;->compositeOverlayIfNeeded(IF)I +Lcom/google/android/material/internal/ThemeEnforcement; +HSPLcom/google/android/material/internal/ThemeEnforcement;->checkCompatibleTheme(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLcom/google/android/material/internal/ThemeEnforcement;->checkTextAppearance(Landroid/content/Context;Landroid/util/AttributeSet;[III[I)V +HSPLcom/google/android/material/internal/ThemeEnforcement;->checkTheme(Landroid/content/Context;[ILjava/lang/String;)V +HSPLcom/google/android/material/internal/ThemeEnforcement;->obtainStyledAttributes(Landroid/content/Context;Landroid/util/AttributeSet;[III[I)Landroid/content/res/TypedArray; +Lcom/google/android/material/motion/MotionUtils; +HSPLcom/google/android/material/motion/MotionUtils;->resolveThemeDuration(Landroid/content/Context;II)I +HSPLcom/google/android/material/motion/MotionUtils;->resolveThemeInterpolator(Landroid/content/Context;ILandroid/view/animation/Interpolator;)Landroid/animation/TimeInterpolator; +Lcom/google/android/material/resources/MaterialAttributes; +HSPLcom/google/android/material/resources/MaterialAttributes;->resolve(Landroid/content/Context;I)Landroid/util/TypedValue; +HSPLcom/google/android/material/resources/MaterialAttributes;->resolveTypedValueOrThrow(ILandroid/content/Context;Ljava/lang/String;)Landroid/util/TypedValue; +Lcom/google/android/material/resources/MaterialResources; +HSPLcom/google/android/material/resources/MaterialResources;->getColorStateList(Landroid/content/Context;Landroid/content/res/TypedArray;I)Landroid/content/res/ColorStateList; +Lcom/google/android/material/shadow/ShadowRenderer; +HSPLcom/google/android/material/shadow/ShadowRenderer;-><init>()V +HSPLcom/google/android/material/shadow/ShadowRenderer;->setShadowColor(I)V +Lcom/google/android/material/shape/AbsoluteCornerSize; +HSPLcom/google/android/material/shape/AbsoluteCornerSize;-><init>(F)V +Lcom/google/android/material/shape/CornerSize; +Lcom/google/android/material/shape/CornerTreatment; +HSPLcom/google/android/material/shape/CornerTreatment;-><init>()V +Lcom/google/android/material/shape/EdgeTreatment; +HSPLcom/google/android/material/shape/EdgeTreatment;-><init>()V +Lcom/google/android/material/shape/MaterialShapeDrawable; +HSPLcom/google/android/material/shape/MaterialShapeDrawable;-><init>()V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;-><init>(Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;)V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;-><init>(Lcom/google/android/material/shape/ShapeAppearanceModel;)V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->calculateTintFilter(Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;Landroid/graphics/Paint;Z)Landroid/graphics/PorterDuffColorFilter; +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->getOpacity()I +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->initializeElevationOverlay(Landroid/content/Context;)V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->invalidateSelf()V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->isStateful()Z +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->onStateChange([I)Z +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->setFillColor(Landroid/content/res/ColorStateList;)V +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->updateColorsForState([I)Z +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->updateTintFilter()Z +HSPLcom/google/android/material/shape/MaterialShapeDrawable;->updateZ()V +Lcom/google/android/material/shape/MaterialShapeDrawable$1; +HSPLcom/google/android/material/shape/MaterialShapeDrawable$1;-><init>(Lcom/google/android/material/shape/MaterialShapeDrawable;)V +Lcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState; +HSPLcom/google/android/material/shape/MaterialShapeDrawable$MaterialShapeDrawableState;-><init>(Lcom/google/android/material/shape/ShapeAppearanceModel;)V +Lcom/google/android/material/shape/RoundedCornerTreatment; +HSPLcom/google/android/material/shape/RoundedCornerTreatment;-><init>()V +Lcom/google/android/material/shape/ShapeAppearanceModel; +HSPLcom/google/android/material/shape/ShapeAppearanceModel;-><init>()V +Lcom/google/android/material/shape/ShapeAppearancePathProvider; +HSPLcom/google/android/material/shape/ShapeAppearancePathProvider;-><init>()V +Lcom/google/android/material/shape/ShapeAppearancePathProvider$Lazy; +Lcom/google/android/material/shape/ShapePath; +HSPLcom/google/android/material/shape/ShapePath;-><init>()V +HSPLcom/google/android/material/shape/ShapePath;->reset(FFF)V +Lcom/google/android/material/shape/ShapePath$ShadowCompatOperation; +Lcom/google/android/material/tabs/TabLayout$BaseOnTabSelectedListener; +Lcom/google/android/material/tabs/TabLayout$OnTabSelectedListener; +Lcom/google/android/material/theme/overlay/MaterialThemeOverlay; +HSPLcom/google/android/material/theme/overlay/MaterialThemeOverlay;->wrap(Landroid/content/Context;Landroid/util/AttributeSet;II)Landroid/content/Context; +Lcom/google/common/collect/Hashing; +HSPLcom/google/common/collect/Hashing;->smear(I)I +Lcom/google/common/collect/ImmutableCollection; +Lcom/google/common/collect/ImmutableCollection$Builder; +HSPLcom/google/common/collect/ImmutableCollection$Builder;->expandedCapacity(II)I +Lcom/google/common/collect/ImmutableMap; +HSPLcom/google/common/collect/ImmutableMap;-><init>()V +Lcom/google/common/collect/ImmutableMap$Builder; +HSPLcom/google/common/collect/ImmutableMap$Builder;-><init>(I)V +HSPLcom/google/common/collect/ImmutableMap$Builder;->buildOrThrow()Lcom/google/common/collect/RegularImmutableMap; +HSPLcom/google/common/collect/ImmutableMap$Builder;->put(Ljava/lang/Object;Ljava/lang/Object;)V +Lcom/google/common/collect/ImmutableSet; +HSPLcom/google/common/collect/ImmutableSet;->chooseTableSize(I)I +Lcom/google/common/collect/RegularImmutableMap; +HSPLcom/google/common/collect/RegularImmutableMap;-><init>(ILjava/lang/Object;[Ljava/lang/Object;)V +HSPLcom/google/common/collect/RegularImmutableMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +Lcom/google/protobuf/AbstractMessageLite; +HSPLcom/google/protobuf/AbstractMessageLite;-><init>()V +Lcom/google/protobuf/AbstractMessageLite$Builder; +HSPLcom/google/protobuf/AbstractMessageLite$Builder;-><init>()V +Lcom/google/protobuf/Android; +Lcom/google/protobuf/ByteString; +HSPLcom/google/protobuf/ByteString;-><init>()V +Lcom/google/protobuf/ByteString$ArraysByteArrayCopier; +HSPLcom/google/protobuf/ByteString$ArraysByteArrayCopier;-><init>(I)V +HSPLcom/google/protobuf/ByteString$ArraysByteArrayCopier;-><init>(Ljava/lang/Object;)V +Lcom/google/protobuf/ByteString$LeafByteString; +HSPLcom/google/protobuf/ByteString$LeafByteString;-><init>()V +Lcom/google/protobuf/ByteString$LiteralByteString; +HSPLcom/google/protobuf/ByteString$LiteralByteString;-><init>([B)V +Lcom/google/protobuf/CodedInputStream; +HSPLcom/google/protobuf/CodedInputStream;-><init>()V +HSPLcom/google/protobuf/CodedInputStream;->newInstance([BIIZ)Lcom/google/protobuf/CodedInputStream$ArrayDecoder; +Lcom/google/protobuf/CodedInputStream$ArrayDecoder; +HSPLcom/google/protobuf/CodedInputStream$ArrayDecoder;-><init>([BIIZ)V +HSPLcom/google/protobuf/CodedInputStream$ArrayDecoder;->pushLimit(I)I +Lcom/google/protobuf/ExtensionSchemaLite; +HSPLcom/google/protobuf/ExtensionSchemaLite;-><init>()V +Lcom/google/protobuf/ExtensionSchemas; +Lcom/google/protobuf/GeneratedMessageInfoFactory; +HSPLcom/google/protobuf/GeneratedMessageInfoFactory;-><init>()V +HSPLcom/google/protobuf/GeneratedMessageInfoFactory;->isSupported(Ljava/lang/Class;)Z +HSPLcom/google/protobuf/GeneratedMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/protobuf/MessageInfo; +Lcom/google/protobuf/GeneratedMessageLite; +HSPLcom/google/protobuf/GeneratedMessageLite;-><init>()V +HSPLcom/google/protobuf/GeneratedMessageLite;->clearMemoizedHashCode()V +HSPLcom/google/protobuf/GeneratedMessageLite;->clearMemoizedSerializedSize()V +HSPLcom/google/protobuf/GeneratedMessageLite;->dynamicMethod(Lcom/google/protobuf/GeneratedMessageLite$MethodToInvoke;)Ljava/lang/Object; +HSPLcom/google/protobuf/GeneratedMessageLite;->isInitialized(Lcom/google/protobuf/GeneratedMessageLite;Z)Z +HSPLcom/google/protobuf/GeneratedMessageLite;->isMutable()Z +HSPLcom/google/protobuf/GeneratedMessageLite;->markImmutable()V +HSPLcom/google/protobuf/GeneratedMessageLite;->newMutableInstance()Lcom/google/protobuf/GeneratedMessageLite; +HSPLcom/google/protobuf/GeneratedMessageLite;->registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V +Lcom/google/protobuf/GeneratedMessageLite$Builder; +HSPLcom/google/protobuf/GeneratedMessageLite$Builder;-><init>(Lcom/google/protobuf/GeneratedMessageLite;)V +HSPLcom/google/protobuf/GeneratedMessageLite$Builder;->build()Lcom/google/protobuf/GeneratedMessageLite; +HSPLcom/google/protobuf/GeneratedMessageLite$Builder;->buildPartial()Lcom/google/protobuf/GeneratedMessageLite; +Lcom/google/protobuf/GeneratedMessageLite$MethodToInvoke; +HSPLcom/google/protobuf/GeneratedMessageLite$MethodToInvoke;-><init>(ILjava/lang/String;)V +Lcom/google/protobuf/Internal; +Lcom/google/protobuf/InvalidProtocolBufferException; +Lcom/google/protobuf/InvalidProtocolBufferException$InvalidWireTypeException; +Lcom/google/protobuf/ListFieldSchema; +HSPLcom/google/protobuf/ListFieldSchema;-><init>()V +Lcom/google/protobuf/ListFieldSchema$ListFieldSchemaFull; +HSPLcom/google/protobuf/ListFieldSchema$ListFieldSchemaFull;-><init>()V +Lcom/google/protobuf/ListFieldSchema$ListFieldSchemaLite; +HSPLcom/google/protobuf/ListFieldSchema$ListFieldSchemaLite;-><init>()V +Lcom/google/protobuf/ManifestSchemaFactory; +HSPLcom/google/protobuf/ManifestSchemaFactory;-><init>()V +Lcom/google/protobuf/ManifestSchemaFactory$1; +HSPLcom/google/protobuf/ManifestSchemaFactory$1;-><init>()V +Lcom/google/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory; +HSPLcom/google/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;-><init>([Lcom/google/protobuf/MessageInfoFactory;)V +HSPLcom/google/protobuf/ManifestSchemaFactory$CompositeMessageInfoFactory;->messageInfoFor(Ljava/lang/Class;)Lcom/google/protobuf/MessageInfo; +Lcom/google/protobuf/MapEntryLite; +HSPLcom/google/protobuf/MapEntryLite;-><init>(Lcom/google/protobuf/WireFormat$FieldType;Ljava/lang/Object;Lcom/google/protobuf/WireFormat$FieldType$3;Lcom/google/protobuf/GeneratedMessageLite;)V +Lcom/google/protobuf/MapEntryLite$Metadata; +HSPLcom/google/protobuf/MapEntryLite$Metadata;-><init>(Lcom/google/protobuf/WireFormat$FieldType;Ljava/lang/Object;Lcom/google/protobuf/WireFormat$FieldType$3;Lcom/google/protobuf/GeneratedMessageLite;)V +Lcom/google/protobuf/MapFieldLite; +HSPLcom/google/protobuf/MapFieldLite;-><init>()V +Lcom/google/protobuf/MapFieldSchemaLite; +HSPLcom/google/protobuf/MapFieldSchemaLite;-><init>()V +HSPLcom/google/protobuf/MapFieldSchemaLite;->toImmutable(Ljava/lang/Object;)V +Lcom/google/protobuf/MapFieldSchemas; +Lcom/google/protobuf/MessageInfo; +Lcom/google/protobuf/MessageInfoFactory; +Lcom/google/protobuf/MessageLite; +Lcom/google/protobuf/MessageSchema; +HSPLcom/google/protobuf/MessageSchema;-><init>([I[Ljava/lang/Object;IILcom/google/protobuf/MessageLite;Z[IIILcom/google/protobuf/NewInstanceSchemaLite;Lcom/google/protobuf/ListFieldSchema;Lcom/google/protobuf/UnknownFieldSetLiteSchema;Lcom/google/protobuf/ExtensionSchemaLite;Lcom/google/protobuf/MapFieldSchemaLite;)V +HSPLcom/google/protobuf/MessageSchema;->isMutable(Ljava/lang/Object;)Z +HSPLcom/google/protobuf/MessageSchema;->makeImmutable(Ljava/lang/Object;)V +HSPLcom/google/protobuf/MessageSchema;->newSchema(Lcom/google/protobuf/MessageInfo;Lcom/google/protobuf/NewInstanceSchemaLite;Lcom/google/protobuf/ListFieldSchema;Lcom/google/protobuf/UnknownFieldSetLiteSchema;Lcom/google/protobuf/ExtensionSchemaLite;Lcom/google/protobuf/MapFieldSchemaLite;)Lcom/google/protobuf/MessageSchema; +HSPLcom/google/protobuf/MessageSchema;->newSchemaForRawMessageInfo(Lcom/google/protobuf/RawMessageInfo;Lcom/google/protobuf/NewInstanceSchemaLite;Lcom/google/protobuf/ListFieldSchema;Lcom/google/protobuf/UnknownFieldSetLiteSchema;Lcom/google/protobuf/ExtensionSchemaLite;Lcom/google/protobuf/MapFieldSchemaLite;)Lcom/google/protobuf/MessageSchema; +HSPLcom/google/protobuf/MessageSchema;->reflectField(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field; +HSPLcom/google/protobuf/MessageSchema;->typeAndOffsetAt(I)I +Lcom/google/protobuf/NewInstanceSchemaLite; +HSPLcom/google/protobuf/NewInstanceSchemaLite;-><init>()V +Lcom/google/protobuf/NewInstanceSchemas; +Lcom/google/protobuf/Protobuf; +HSPLcom/google/protobuf/Protobuf;-><init>()V +HSPLcom/google/protobuf/Protobuf;->schemaFor(Ljava/lang/Class;)Lcom/google/protobuf/Schema; +Lcom/google/protobuf/RawMessageInfo; +HSPLcom/google/protobuf/RawMessageInfo;-><init>(Lcom/google/protobuf/MessageLite;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLcom/google/protobuf/RawMessageInfo;->getDefaultInstance()Lcom/google/protobuf/MessageLite; +HSPLcom/google/protobuf/RawMessageInfo;->getObjects()[Ljava/lang/Object; +HSPLcom/google/protobuf/RawMessageInfo;->getStringInfo()Ljava/lang/String; +HSPLcom/google/protobuf/RawMessageInfo;->getSyntax$enumunboxing$()I +Lcom/google/protobuf/Schema; +Lcom/google/protobuf/SchemaUtil; +HSPLcom/google/protobuf/SchemaUtil;->getUnknownFieldSetSchema(Z)Lcom/google/protobuf/UnknownFieldSetLiteSchema; +Lcom/google/protobuf/UninitializedMessageException; +Lcom/google/protobuf/UnknownFieldSetLite; +HSPLcom/google/protobuf/UnknownFieldSetLite;-><init>(I[I[Ljava/lang/Object;Z)V +Lcom/google/protobuf/UnknownFieldSetLiteSchema; +HSPLcom/google/protobuf/UnknownFieldSetLiteSchema;-><init>()V +HSPLcom/google/protobuf/UnknownFieldSetLiteSchema;->makeImmutable(Ljava/lang/Object;)V +Lcom/google/protobuf/UnsafeUtil; +HSPLcom/google/protobuf/UnsafeUtil;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/protobuf/UnsafeUtil;->arrayIndexScale(Ljava/lang/Class;)V +HSPLcom/google/protobuf/UnsafeUtil;->bufferAddressField()Ljava/lang/reflect/Field; +HSPLcom/google/protobuf/UnsafeUtil;->determineAndroidSupportByAddressSize(Ljava/lang/Class;)Z +HSPLcom/google/protobuf/UnsafeUtil;->getUnsafe()Lsun/misc/Unsafe; +Lcom/google/protobuf/UnsafeUtil$1; +HSPLcom/google/protobuf/UnsafeUtil$1;-><init>()V +HSPLcom/google/protobuf/UnsafeUtil$1;->run()Ljava/lang/Object; +HSPLcom/google/protobuf/UnsafeUtil$1;->run()Lsun/misc/Unsafe; +Lcom/google/protobuf/UnsafeUtil$Android64MemoryAccessor; +HSPLcom/google/protobuf/UnsafeUtil$Android64MemoryAccessor;-><init>(Lsun/misc/Unsafe;)V +HSPLcom/google/protobuf/UnsafeUtil$Android64MemoryAccessor;->supportsUnsafeByteBufferOperations()Z +Lcom/google/protobuf/UnsafeUtil$MemoryAccessor; +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;-><init>(Lsun/misc/Unsafe;)V +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;->arrayBaseOffset(Ljava/lang/Class;)I +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;->arrayIndexScale(Ljava/lang/Class;)I +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;->objectFieldOffset(Ljava/lang/reflect/Field;)J +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeArrayOperations()Z +HSPLcom/google/protobuf/UnsafeUtil$MemoryAccessor;->supportsUnsafeByteBufferOperations()Z +Lcom/google/protobuf/WireFormat$FieldType; +HSPLcom/google/protobuf/WireFormat$FieldType;-><init>(Ljava/lang/String;ILcom/google/protobuf/WireFormat$JavaType;I)V +Lcom/google/protobuf/WireFormat$FieldType$1; +HSPLcom/google/protobuf/WireFormat$FieldType$1;-><init>()V +Lcom/google/protobuf/WireFormat$FieldType$2; +HSPLcom/google/protobuf/WireFormat$FieldType$2;-><init>(Lcom/google/protobuf/WireFormat$JavaType;)V +Lcom/google/protobuf/WireFormat$FieldType$3; +HSPLcom/google/protobuf/WireFormat$FieldType$3;-><init>(Lcom/google/protobuf/WireFormat$JavaType;)V +Lcom/google/protobuf/WireFormat$FieldType$4; +HSPLcom/google/protobuf/WireFormat$FieldType$4;-><init>(Lcom/google/protobuf/WireFormat$JavaType;)V +Lcom/google/protobuf/WireFormat$JavaType; +HSPLcom/google/protobuf/WireFormat$JavaType;-><init>(Ljava/io/Serializable;ILjava/lang/String;)V +Ldagger/Lazy; +Ldagger/internal/DoubleCheck; +HSPLdagger/internal/DoubleCheck;-><init>(Ljavax/inject/Provider;)V +HSPLdagger/internal/DoubleCheck;->get()Ljava/lang/Object; +HSPLdagger/internal/DoubleCheck;->lazy(Ljavax/inject/Provider;)Ldagger/Lazy; +HSPLdagger/internal/DoubleCheck;->provider(Ljavax/inject/Provider;)Ljavax/inject/Provider; +Ldagger/internal/Preconditions; +HSPLdagger/internal/Preconditions;->checkNotNullFromProvides(Ljava/lang/Object;)V +Ldagger/internal/SingleCheck; +HSPLdagger/internal/SingleCheck;-><init>(Ljavax/inject/Provider;)V +HSPLdagger/internal/SingleCheck;->get()Ljava/lang/Object; +HSPLdagger/internal/SingleCheck;->provider(Ljavax/inject/Provider;)Ljavax/inject/Provider; +Lgen/base_module/R$styleable; +Ljavax/inject/Provider; +Lkotlin/Pair; +HSPLkotlin/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +Lkotlin/SynchronizedLazyImpl; +HSPLkotlin/SynchronizedLazyImpl;-><init>(Landroidx/lifecycle/SavedStateHandlesProvider$viewModel$2;)V +HSPLkotlin/SynchronizedLazyImpl;->getValue()Ljava/lang/Object; +Lkotlin/UNINITIALIZED_VALUE; +HSPLkotlin/UNINITIALIZED_VALUE;-><init>()V +Lkotlin/collections/AbstractMutableList; +HSPLkotlin/collections/AbstractMutableList;-><init>()V +HSPLkotlin/collections/AbstractMutableList;->remove(I)Ljava/lang/Object; +HSPLkotlin/collections/AbstractMutableList;->size()I +Lkotlin/collections/ArrayDeque; +HSPLkotlin/collections/ArrayDeque;-><init>()V +HSPLkotlin/collections/ArrayDeque;->addLast(Ljava/lang/Object;)V +HSPLkotlin/collections/ArrayDeque;->ensureCapacity(I)V +HSPLkotlin/collections/ArrayDeque;->indexOf(Ljava/lang/Object;)I +HSPLkotlin/collections/ArrayDeque;->isEmpty()Z +HSPLkotlin/collections/ArrayDeque;->positiveMod(I)I +HSPLkotlin/collections/ArrayDeque;->remove(Ljava/lang/Object;)Z +Lkotlin/collections/ArraysKt__ArraysKt; +Lkotlin/collections/ArraysKt___ArraysKt; +HSPLkotlin/collections/ArraysKt___ArraysKt;->copyInto$default([Ljava/lang/Object;[Ljava/lang/Object;III)V +HSPLkotlin/collections/ArraysKt___ArraysKt;->copyInto(III[I[I)V +HSPLkotlin/collections/ArraysKt___ArraysKt;->copyInto(III[Ljava/lang/Object;[Ljava/lang/Object;)V +Lkotlin/collections/CollectionsKt__CollectionsKt; +HSPLkotlin/collections/CollectionsKt__CollectionsKt;->getLastIndex(Ljava/util/List;)I +Lkotlin/collections/EmptyMap; +HSPLkotlin/collections/EmptyMap;-><init>()V +Lkotlin/collections/MapsKt__MapsJVMKt; +HSPLkotlin/collections/MapsKt__MapsJVMKt;->mapCapacity(I)I +Lkotlin/collections/MapsKt___MapsJvmKt; +HSPLkotlin/collections/MapsKt___MapsJvmKt;->toMap(Ljava/util/ArrayList;)Ljava/util/Map; +HSPLkotlin/collections/MapsKt___MapsJvmKt;->toMap(Ljava/util/ArrayList;Ljava/util/LinkedHashMap;)V +Lkotlin/jvm/functions/Function0; +Lkotlin/jvm/functions/Function1; +Lkotlin/jvm/functions/Function10; +Lkotlin/jvm/functions/Function11; +Lkotlin/jvm/functions/Function12; +Lkotlin/jvm/functions/Function13; +Lkotlin/jvm/functions/Function14; +Lkotlin/jvm/functions/Function15; +Lkotlin/jvm/functions/Function16; +Lkotlin/jvm/functions/Function17; +Lkotlin/jvm/functions/Function18; +Lkotlin/jvm/functions/Function19; +Lkotlin/jvm/functions/Function2; +Lkotlin/jvm/functions/Function20; +Lkotlin/jvm/functions/Function21; +Lkotlin/jvm/functions/Function22; +Lkotlin/jvm/functions/Function3; +Lkotlin/jvm/functions/Function4; +Lkotlin/jvm/functions/Function5; +Lkotlin/jvm/functions/Function6; +Lkotlin/jvm/functions/Function7; +Lkotlin/jvm/functions/Function8; +Lkotlin/jvm/functions/Function9; +Lkotlin/jvm/internal/ClassBasedDeclarationContainer; +Lkotlin/jvm/internal/ClassReference; +Lkotlin/jvm/internal/FunctionBase; +Lkotlin/jvm/internal/Intrinsics; +HSPLkotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V +HSPLkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V +Lkotlin/jvm/internal/Lambda; +HSPLkotlin/jvm/internal/Lambda;-><init>(I)V +Lkotlin/jvm/internal/Reflection; +Lkotlin/jvm/internal/ReflectionFactory; +HSPLkotlin/jvm/internal/ReflectionFactory;-><init>()V +Lkotlin/reflect/KClass; +Lkotlin/text/StringsKt__IndentKt; +Lkotlin/text/StringsKt__RegexExtensionsKt; +Lkotlin/text/StringsKt__StringBuilderKt; +Lkotlin/text/StringsKt__StringNumberConversionsKt; +Lkotlin/text/StringsKt__StringsKt; +HSPLkotlin/text/StringsKt__StringsKt;->substringAfterLast$default(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/base/ApiCompatibilityUtils; +HSPLorg/chromium/base/ApiCompatibilityUtils;->checkPermission(IILandroid/content/Context;Ljava/lang/String;)I +HSPLorg/chromium/base/ApiCompatibilityUtils;->getTargetableDisplayIds(Landroid/app/Activity;)Ljava/util/ArrayList; +HSPLorg/chromium/base/ApiCompatibilityUtils;->isDemoUser()Z +HSPLorg/chromium/base/ApiCompatibilityUtils;->setStatusBarIconColor(Landroid/view/View;Z)V +HSPLorg/chromium/base/ApiCompatibilityUtils;->setTextAppearance(Landroid/widget/TextView;I)V +Lorg/chromium/base/ApiCompatibilityUtils$ApisNMR1$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/ApiCompatibilityUtils$ApisNMR1$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/UserManager;)Z +Lorg/chromium/base/ApiCompatibilityUtils$ApisO$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/ApiCompatibilityUtils$ApisO$$ExternalSyntheticApiModelOutline0;->m()Landroid/view/textclassifier/TextClassifier; +HSPLorg/chromium/base/ApiCompatibilityUtils$ApisO$$ExternalSyntheticApiModelOutline0;->m(Landroid/widget/TextView;Landroid/view/textclassifier/TextClassifier;)V +Lorg/chromium/base/ApiCompatibilityUtils$ApisQ$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/ApiCompatibilityUtils$ApisQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ActivityManager;Landroid/content/Context;ILandroid/content/Intent;)Z +Lorg/chromium/base/ApkAssets; +HSPLorg/chromium/base/ApkAssets;->open(Ljava/lang/String;Ljava/lang/String;)[J +Lorg/chromium/base/ApplicationStatus; +HSPLorg/chromium/base/ApplicationStatus;->-$$Nest$smonStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/base/ApplicationStatus;->getRunningActivities()Ljava/util/ArrayList; +HSPLorg/chromium/base/ApplicationStatus;->getStateForActivity(Landroid/app/Activity;)I +HSPLorg/chromium/base/ApplicationStatus;->getStateForApplication()I +HSPLorg/chromium/base/ApplicationStatus;->hasVisibleActivities()Z +HSPLorg/chromium/base/ApplicationStatus;->isTaskVisible(I)Z +HSPLorg/chromium/base/ApplicationStatus;->registerApplicationStateListener(Lorg/chromium/base/ApplicationStatus$ApplicationStateListener;)V +HSPLorg/chromium/base/ApplicationStatus;->registerStateListenerForActivity(Lorg/chromium/base/ApplicationStatus$ActivityStateListener;Landroid/app/Activity;)V +HSPLorg/chromium/base/ApplicationStatus;->registerStateListenerForAllActivities(Lorg/chromium/base/ApplicationStatus$ActivityStateListener;)V +HSPLorg/chromium/base/ApplicationStatus;->registerThreadSafeNativeApplicationStateListener()V +HSPLorg/chromium/base/ApplicationStatus;->registerWindowFocusChangedListener(Lorg/chromium/base/ApplicationStatus$WindowFocusChangedListener;)V +HSPLorg/chromium/base/ApplicationStatus;->unregisterActivityStateListener(Lorg/chromium/base/ApplicationStatus$ActivityStateListener;)V +Lorg/chromium/base/ApplicationStatus$1; +HSPLorg/chromium/base/ApplicationStatus$1;-><init>()V +HSPLorg/chromium/base/ApplicationStatus$1;->onWindowFocusChanged(Landroid/app/Activity;Z)V +Lorg/chromium/base/ApplicationStatus$2; +HSPLorg/chromium/base/ApplicationStatus$2;-><init>()V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityDestroyed(Landroid/app/Activity;)V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityPaused(Landroid/app/Activity;)V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityResumed(Landroid/app/Activity;)V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityStarted(Landroid/app/Activity;)V +HSPLorg/chromium/base/ApplicationStatus$2;->onActivityStopped(Landroid/app/Activity;)V +Lorg/chromium/base/ApplicationStatus$3; +HSPLorg/chromium/base/ApplicationStatus$3;-><init>()V +HSPLorg/chromium/base/ApplicationStatus$3;->run()V +Lorg/chromium/base/ApplicationStatus$3$1; +HSPLorg/chromium/base/ApplicationStatus$3$1;-><init>()V +HSPLorg/chromium/base/ApplicationStatus$3$1;->onApplicationStateChange(I)V +Lorg/chromium/base/ApplicationStatus$ActivityInfo; +HSPLorg/chromium/base/ApplicationStatus$ActivityInfo;-><init>()V +Lorg/chromium/base/ApplicationStatus$ActivityStateListener; +Lorg/chromium/base/ApplicationStatus$ApplicationStateListener; +Lorg/chromium/base/ApplicationStatus$TaskVisibilityListener; +Lorg/chromium/base/ApplicationStatus$WindowCallbackProxy; +HSPLorg/chromium/base/ApplicationStatus$WindowCallbackProxy;-><init>(Landroid/app/Activity;Landroid/view/Window$Callback;)V +HSPLorg/chromium/base/ApplicationStatus$WindowCallbackProxy;->invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; +Lorg/chromium/base/ApplicationStatus$WindowFocusChangedListener; +Lorg/chromium/base/BuildInfo; +HSPLorg/chromium/base/BuildInfo;-><init>()V +HSPLorg/chromium/base/BuildInfo;->getAll()[Ljava/lang/String; +HSPLorg/chromium/base/BuildInfo;->isDebugAndroid()Z +HSPLorg/chromium/base/BuildInfo;->packageVersionCode(Landroid/content/pm/PackageInfo;)J +Lorg/chromium/base/BuildInfo$Holder; +Lorg/chromium/base/BundleUtils; +HSPLorg/chromium/base/BundleUtils;->isIsolatedSplitInstalled(Ljava/lang/String;)Z +HSPLorg/chromium/base/BundleUtils;->newInstance(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/Object; +Lorg/chromium/base/BundleUtils$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/BundleUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String; +Lorg/chromium/base/BundleUtils$SplitCompatClassLoader; +HSPLorg/chromium/base/BundleUtils$SplitCompatClassLoader;-><init>()V +HSPLorg/chromium/base/BundleUtils$SplitCompatClassLoader;->checkSplitsClassLoaders(Ljava/lang/String;)Ljava/lang/Class; +HSPLorg/chromium/base/BundleUtils$SplitCompatClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class; +Lorg/chromium/base/ByteArrayGenerator; +HSPLorg/chromium/base/ByteArrayGenerator;-><init>()V +Lorg/chromium/base/Callback; +HSPLorg/chromium/base/Callback;->bind(Ljava/lang/Object;)Lorg/chromium/base/Callback$$ExternalSyntheticLambda0; +Lorg/chromium/base/Callback$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/Callback$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/Callback;Ljava/lang/Object;)V +HSPLorg/chromium/base/Callback$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/Callback$Helper; +HSPLorg/chromium/base/Callback$Helper;->onBooleanResultFromNative(Lorg/chromium/base/Callback;Z)V +HSPLorg/chromium/base/Callback$Helper;->onIntResultFromNative(Lorg/chromium/base/Callback;I)V +HSPLorg/chromium/base/Callback$Helper;->onObjectResultFromNative(Lorg/chromium/base/Callback;Ljava/lang/Object;)V +Lorg/chromium/base/CallbackController; +HSPLorg/chromium/base/CallbackController;-><init>()V +HSPLorg/chromium/base/CallbackController;->destroy()V +HSPLorg/chromium/base/CallbackController;->makeCancelable(Ljava/lang/Runnable;)Lorg/chromium/base/CallbackController$CancelableRunnable; +HSPLorg/chromium/base/CallbackController;->makeCancelable(Lorg/chromium/base/Callback;)Lorg/chromium/base/CallbackController$CancelableCallback; +Lorg/chromium/base/CallbackController$Cancelable; +Lorg/chromium/base/CallbackController$CancelableCallback; +HSPLorg/chromium/base/CallbackController$CancelableCallback;-><init>(Lorg/chromium/base/CallbackController;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/CallbackController$CancelableCallback;->cancel()V +HSPLorg/chromium/base/CallbackController$CancelableCallback;->onResult(Ljava/lang/Object;)V +Lorg/chromium/base/CallbackController$CancelableRunnable; +HSPLorg/chromium/base/CallbackController$CancelableRunnable;-><init>(Lorg/chromium/base/CallbackController;Ljava/lang/Runnable;)V +HSPLorg/chromium/base/CallbackController$CancelableRunnable;->cancel()V +HSPLorg/chromium/base/CallbackController$CancelableRunnable;->run()V +Lorg/chromium/base/CollectionUtil; +HSPLorg/chromium/base/CollectionUtil;->newHashSet([Ljava/lang/Object;)Ljava/util/HashSet; +HSPLorg/chromium/base/CollectionUtil;->strengthen(Ljava/util/Collection;)Ljava/util/ArrayList; +Lorg/chromium/base/CommandLine; +HSPLorg/chromium/base/CommandLine;-><init>()V +HSPLorg/chromium/base/CommandLine;->getInstance()Lorg/chromium/base/CommandLine; +HSPLorg/chromium/base/CommandLine;->init([Ljava/lang/String;)V +Lorg/chromium/base/CommandLine$JavaCommandLine; +HSPLorg/chromium/base/CommandLine$JavaCommandLine;-><init>([Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$JavaCommandLine;->appendSwitch(Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$JavaCommandLine;->appendSwitchWithValue(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$JavaCommandLine;->getCommandLineArguments()[Ljava/lang/String; +HSPLorg/chromium/base/CommandLine$JavaCommandLine;->getSwitchValue(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/base/CommandLine$JavaCommandLine;->hasSwitch(Ljava/lang/String;)Z +Lorg/chromium/base/CommandLine$NativeCommandLine; +HSPLorg/chromium/base/CommandLine$NativeCommandLine;-><init>([Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$NativeCommandLine;->appendSwitch(Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$NativeCommandLine;->appendSwitchWithValue(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/base/CommandLine$NativeCommandLine;->getSwitchValue(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/base/CommandLine$NativeCommandLine;->hasSwitch(Ljava/lang/String;)Z +Lorg/chromium/base/ContentUriUtils; +PLorg/chromium/base/ContentUriUtils;->isContentUri(Ljava/lang/String;)Z +Lorg/chromium/base/ContextUtils; +HSPLorg/chromium/base/ContextUtils;->activityFromContext(Landroid/content/Context;)Landroid/app/Activity; +HSPLorg/chromium/base/ContextUtils;->getProcessName()Ljava/lang/String; +HSPLorg/chromium/base/ContextUtils;->registerBroadcastReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;I)Landroid/content/Intent; +HSPLorg/chromium/base/ContextUtils;->registerExportedBroadcastReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;)V +HSPLorg/chromium/base/ContextUtils;->registerNonExportedBroadcastReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V +HSPLorg/chromium/base/ContextUtils;->registerProtectedBroadcastReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; +Lorg/chromium/base/ContextUtils$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/ContextUtils$$ExternalSyntheticApiModelOutline0;->m()Z +Lorg/chromium/base/ContextUtils$Holder; +Lorg/chromium/base/DiscardableReferencePool; +HSPLorg/chromium/base/DiscardableReferencePool;-><init>()V +HSPLorg/chromium/base/DiscardableReferencePool;->put(Ljava/lang/Object;)Lorg/chromium/base/DiscardableReferencePool$DiscardableReference; +Lorg/chromium/base/DiscardableReferencePool$DiscardableReference; +HSPLorg/chromium/base/DiscardableReferencePool$DiscardableReference;-><init>(Ljava/lang/Object;)V +Lorg/chromium/base/EarlyTraceEvent; +HSPLorg/chromium/base/EarlyTraceEvent;->begin(Ljava/lang/String;Z)V +HSPLorg/chromium/base/EarlyTraceEvent;->enabled()Z +HSPLorg/chromium/base/EarlyTraceEvent;->end(Ljava/lang/String;Z)V +HSPLorg/chromium/base/EarlyTraceEvent;->getBackgroundStartupTracingFlag()Z +HSPLorg/chromium/base/EarlyTraceEvent;->setBackgroundStartupTracingFlag(Z)V +Lorg/chromium/base/FeatureList; +HSPLorg/chromium/base/FeatureList;->isInitialized()Z +HSPLorg/chromium/base/FeatureList;->isNativeInitialized()Z +Lorg/chromium/base/FileUtils; +HSPLorg/chromium/base/FileUtils;->recursivelyDeleteFile(Ljava/io/File;Ljava/util/function/Function;)V +Lorg/chromium/base/FileUtils$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/FileUtils$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/base/Flag; +HSPLorg/chromium/base/Flag;-><init>(Ljava/lang/String;)V +Lorg/chromium/base/IntentUtils; +HSPLorg/chromium/base/IntentUtils;->isMainIntentFromLauncher(Landroid/content/Intent;)Z +HSPLorg/chromium/base/IntentUtils;->isTrustedIntentFromSelf(Landroid/content/Intent;)Z +HSPLorg/chromium/base/IntentUtils;->safeGetBooleanExtra(Landroid/content/Intent;Ljava/lang/String;Z)Z +HSPLorg/chromium/base/IntentUtils;->safeGetBundleExtra(Landroid/content/Intent;Ljava/lang/String;)Landroid/os/Bundle; +HSPLorg/chromium/base/IntentUtils;->safeGetInt(Ljava/lang/String;ILandroid/os/Bundle;)I +HSPLorg/chromium/base/IntentUtils;->safeGetIntExtra(ILandroid/content/Intent;Ljava/lang/String;)I +HSPLorg/chromium/base/IntentUtils;->safeGetParcelableExtra(Landroid/content/Intent;Ljava/lang/String;)Landroid/os/Parcelable; +HSPLorg/chromium/base/IntentUtils;->safeGetStringArrayListExtra(Landroid/content/Intent;Ljava/lang/String;)Ljava/util/ArrayList; +HSPLorg/chromium/base/IntentUtils;->safeGetStringExtra(Landroid/content/Intent;Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/base/JNIUtils; +HSPLorg/chromium/base/JNIUtils;->getSplitClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLorg/chromium/base/JNIUtils;->isSelectiveJniRegistrationEnabled()Z +Lorg/chromium/base/JavaExceptionReporter; +HSPLorg/chromium/base/JavaExceptionReporter;-><init>(Ljava/lang/Thread$UncaughtExceptionHandler;Z)V +HSPLorg/chromium/base/JavaExceptionReporter;->installHandler(Z)V +Lorg/chromium/base/JavaHandlerThread; +HSPLorg/chromium/base/JavaHandlerThread;-><init>(ILjava/lang/String;)V +HSPLorg/chromium/base/JavaHandlerThread;->startAndInitialize(JJ)V +Lorg/chromium/base/JavaHandlerThread$1; +HSPLorg/chromium/base/JavaHandlerThread$1;-><init>(JJ)V +HSPLorg/chromium/base/JavaHandlerThread$1;->run()V +Lorg/chromium/base/LocaleUtils; +HSPLorg/chromium/base/LocaleUtils;->getDefaultCountryCode()Ljava/lang/String; +HSPLorg/chromium/base/LocaleUtils;->getDefaultLocaleListString()Ljava/lang/String; +HSPLorg/chromium/base/LocaleUtils;->getDefaultLocaleString()Ljava/lang/String; +HSPLorg/chromium/base/LocaleUtils;->getUpdatedLanguageForChromium(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/base/LocaleUtils;->toBaseLanguage(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/base/LocaleUtils;->toLanguageTag(Ljava/util/Locale;)Ljava/lang/String; +Lorg/chromium/base/Log; +HSPLorg/chromium/base/Log;->formatLog(Ljava/lang/String;Ljava/lang/Throwable;[Ljava/lang/Object;)Ljava/lang/String; +HSPLorg/chromium/base/Log;->getThrowableToLog([Ljava/lang/Object;)Ljava/lang/Throwable; +HSPLorg/chromium/base/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/chromium/base/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLorg/chromium/base/Log;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +HSPLorg/chromium/base/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V +HSPLorg/chromium/base/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V +HSPLorg/chromium/base/Log;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V +Lorg/chromium/base/MathUtils; +HSPLorg/chromium/base/MathUtils;->areFloatsEqual(FF)Z +HSPLorg/chromium/base/MathUtils;->clamp(FFF)F +HSPLorg/chromium/base/MathUtils;->clamp(III)I +Lorg/chromium/base/MemoryPressureListener; +HSPLorg/chromium/base/MemoryPressureListener;->addCallback(Lorg/chromium/base/memory/MemoryPressureCallback;)V +HSPLorg/chromium/base/MemoryPressureListener;->addNativeCallback()V +Lorg/chromium/base/MemoryPressureListener$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/MemoryPressureListener$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/base/ObserverList; +HSPLorg/chromium/base/ObserverList;-><init>()V +HSPLorg/chromium/base/ObserverList;->addObserver(Ljava/lang/Object;)Z +HSPLorg/chromium/base/ObserverList;->clear()V +HSPLorg/chromium/base/ObserverList;->hasObserver(Ljava/lang/Object;)Z +HSPLorg/chromium/base/ObserverList;->isEmpty()Z +HSPLorg/chromium/base/ObserverList;->iterator()Ljava/util/Iterator; +HSPLorg/chromium/base/ObserverList;->removeObserver(Ljava/lang/Object;)Z +HSPLorg/chromium/base/ObserverList;->rewindableIterator()Lorg/chromium/base/ObserverList$ObserverListIterator; +Lorg/chromium/base/ObserverList$ObserverListIterator; +HSPLorg/chromium/base/ObserverList$ObserverListIterator;-><init>(Lorg/chromium/base/ObserverList;)V +HSPLorg/chromium/base/ObserverList$ObserverListIterator;->compactListIfNeeded()V +HSPLorg/chromium/base/ObserverList$ObserverListIterator;->hasNext()Z +HSPLorg/chromium/base/ObserverList$ObserverListIterator;->next()Ljava/lang/Object; +HSPLorg/chromium/base/ObserverList$ObserverListIterator;->rewind()V +Lorg/chromium/base/PackageManagerUtils; +HSPLorg/chromium/base/PackageManagerUtils;->canResolveActivity(Landroid/content/Intent;I)Z +HSPLorg/chromium/base/PackageManagerUtils;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List; +HSPLorg/chromium/base/PackageManagerUtils;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo; +HSPLorg/chromium/base/PackageManagerUtils;->resolveDefaultWebBrowserActivity()Landroid/content/pm/ResolveInfo; +Lorg/chromium/base/PackageUtils; +HSPLorg/chromium/base/PackageUtils;->getPackageInfo(ILjava/lang/String;)Landroid/content/pm/PackageInfo; +HSPLorg/chromium/base/PackageUtils;->getPackageVersion(Ljava/lang/String;)I +HSPLorg/chromium/base/PackageUtils;->isPackageInstalled(Ljava/lang/String;)Z +Lorg/chromium/base/PathUtils; +HSPLorg/chromium/base/PathUtils;->chmod(ILjava/lang/String;)V +HSPLorg/chromium/base/PathUtils;->getAllPrivateDownloadsDirectories()[Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getCacheDirectory()Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getDataDirectory()Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getDirectoryPath(I)Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getDownloadsDirectory()Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getNativeLibraryDirectory()Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->getThumbnailCacheDirectory()Ljava/lang/String; +HSPLorg/chromium/base/PathUtils;->setPrivateDataDirectorySuffix()V +HSPLorg/chromium/base/PathUtils;->toAbsolutePathStrings(Ljava/util/List;)[Ljava/lang/String; +Lorg/chromium/base/PathUtils$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/PathUtils$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/base/PathUtils$$ExternalSyntheticLambda0;->call()Ljava/lang/Object; +Lorg/chromium/base/PowerMonitor; +HSPLorg/chromium/base/PowerMonitor;-><init>()V +HSPLorg/chromium/base/PowerMonitor;->create()V +HSPLorg/chromium/base/PowerMonitor;->getCurrentThermalStatus()I +HSPLorg/chromium/base/PowerMonitor;->isBatteryPower()Z +Lorg/chromium/base/PowerMonitor$1; +HSPLorg/chromium/base/PowerMonitor$1;-><init>()V +Lorg/chromium/base/PowerMonitorForQ$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/PowerMonitorForQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/PowerManager;Lorg/chromium/base/PowerMonitorForQ$1;)V +Lorg/chromium/base/PowerMonitorForQ$1; +HSPLorg/chromium/base/PowerMonitorForQ$1;-><init>()V +HSPLorg/chromium/base/PowerMonitorForQ$1;->onThermalStatusChanged(I)V +Lorg/chromium/base/Promise; +HSPLorg/chromium/base/Promise;-><init>()V +HSPLorg/chromium/base/Promise;->exceptInner(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/Promise;->fulfill(Ljava/lang/Object;)V +HSPLorg/chromium/base/Promise;->fulfilled(Ljava/lang/Object;)Lorg/chromium/base/Promise; +HSPLorg/chromium/base/Promise;->isFulfilled()Z +HSPLorg/chromium/base/Promise;->then(Ljava/util/function/Function;)Lorg/chromium/base/Promise; +HSPLorg/chromium/base/Promise;->then(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/Promise;->then(Lorg/chromium/base/Callback;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/Promise;->thenInner(Lorg/chromium/base/Callback;)V +Lorg/chromium/base/Promise$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/Promise$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/base/Promise$$ExternalSyntheticLambda1; +HSPLorg/chromium/base/Promise$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/base/Promise;Ljava/util/function/Function;)V +HSPLorg/chromium/base/Promise$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/base/Promise$$ExternalSyntheticLambda2; +HSPLorg/chromium/base/Promise$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/base/Promise;I)V +Lorg/chromium/base/StreamUtil; +HSPLorg/chromium/base/StreamUtil;->closeQuietly(Ljava/io/Closeable;)V +Lorg/chromium/base/StrictModeContext; +HSPLorg/chromium/base/StrictModeContext;-><init>(Landroid/os/StrictMode$ThreadPolicy;Landroid/os/StrictMode$VmPolicy;)V +HSPLorg/chromium/base/StrictModeContext;->allowDiskReads()Lorg/chromium/base/StrictModeContext; +HSPLorg/chromium/base/StrictModeContext;->allowDiskWrites()Lorg/chromium/base/StrictModeContext; +HSPLorg/chromium/base/StrictModeContext;->close()V +Lorg/chromium/base/SysUtils; +HSPLorg/chromium/base/SysUtils;->amountOfPhysicalMemoryKB()I +HSPLorg/chromium/base/SysUtils;->detectAmountOfPhysicalMemoryKB()I +HSPLorg/chromium/base/SysUtils;->isLowEndDevice()Z +Lorg/chromium/base/ThreadUtils; +HSPLorg/chromium/base/ThreadUtils;->checkUiThread()V +HSPLorg/chromium/base/ThreadUtils;->getUiThreadHandler()Landroid/os/Handler; +HSPLorg/chromium/base/ThreadUtils;->getUiThreadLooper()Landroid/os/Looper; +HSPLorg/chromium/base/ThreadUtils;->postOnUiThread(Ljava/lang/Runnable;)V +HSPLorg/chromium/base/ThreadUtils;->runOnUiThread(Ljava/lang/Runnable;)V +HSPLorg/chromium/base/ThreadUtils;->runningOnUiThread()Z +Lorg/chromium/base/ThreadUtils$ThreadChecker; +HSPLorg/chromium/base/ThreadUtils$ThreadChecker;-><init>()V +Lorg/chromium/base/TimezoneUtils; +HSPLorg/chromium/base/TimezoneUtils;->getDefaultTimeZoneId()Ljava/lang/String; +Lorg/chromium/base/TraceEvent; +HSPLorg/chromium/base/TraceEvent;->begin(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/base/TraceEvent;->end(JLjava/lang/String;)V +HSPLorg/chromium/base/TraceEvent;->end(Ljava/lang/String;)V +HSPLorg/chromium/base/TraceEvent;->finishAsync(JLjava/lang/String;)V +HSPLorg/chromium/base/TraceEvent;->instant(Ljava/lang/String;)V +HSPLorg/chromium/base/TraceEvent;->scoped(Ljava/lang/String;Ljava/lang/String;)Lorg/chromium/base/TraceEvent; +HSPLorg/chromium/base/TraceEvent;->setEnabled(Z)V +HSPLorg/chromium/base/TraceEvent;->startAsync(JLjava/lang/String;)V +Lorg/chromium/base/TraceEvent$ATrace; +HSPLorg/chromium/base/TraceEvent$ATrace;-><init>(J)V +HSPLorg/chromium/base/TraceEvent$ATrace;->onNativeTracingReady()V +HSPLorg/chromium/base/TraceEvent$ATrace;->pollConfig()V +HSPLorg/chromium/base/TraceEvent$ATrace;->queueIdle()Z +Lorg/chromium/base/TraceEvent$ATrace$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/TraceEvent$ATrace$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/TraceEvent$ATrace;I)V +HSPLorg/chromium/base/TraceEvent$ATrace$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/TraceEvent$ViewHierarchyDumper; +HSPLorg/chromium/base/TraceEvent$ViewHierarchyDumper;->updateEnabledState()V +Lorg/chromium/base/TraceEvent$ViewHierarchyDumper$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/TraceEvent$ViewHierarchyDumper$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/base/TraceEvent$ViewHierarchyDumper$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/UnownedUserData; +HSPLorg/chromium/base/UnownedUserData;->onDetachedFromHost()V +Lorg/chromium/base/UnownedUserDataHost; +HSPLorg/chromium/base/UnownedUserDataHost;-><init>()V +HSPLorg/chromium/base/UnownedUserDataHost;->get(Lorg/chromium/base/UnownedUserDataKey;)Lorg/chromium/base/UnownedUserData; +Lorg/chromium/base/UnownedUserDataHost$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/UnownedUserDataHost$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/UnownedUserDataHost;Lorg/chromium/base/UnownedUserData;)V +HSPLorg/chromium/base/UnownedUserDataHost$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/UnownedUserDataKey; +HSPLorg/chromium/base/UnownedUserDataKey;-><init>(Ljava/lang/Class;)V +HSPLorg/chromium/base/UnownedUserDataKey;->attachToHost(Lorg/chromium/base/UnownedUserDataHost;Lorg/chromium/base/UnownedUserData;)V +HSPLorg/chromium/base/UnownedUserDataKey;->detachFromAllHosts(Lorg/chromium/base/UnownedUserData;)V +HSPLorg/chromium/base/UnownedUserDataKey;->detachFromHost(Lorg/chromium/base/UnownedUserDataHost;)V +HSPLorg/chromium/base/UnownedUserDataKey;->removeHostAttachment(Lorg/chromium/base/UnownedUserDataHost;)V +HSPLorg/chromium/base/UnownedUserDataKey;->retrieveDataFromHost(Lorg/chromium/base/UnownedUserDataHost;)Lorg/chromium/base/UnownedUserData; +Lorg/chromium/base/UserData; +HSPLorg/chromium/base/UserData;->destroy()V +Lorg/chromium/base/UserDataHost; +HSPLorg/chromium/base/UserDataHost;-><init>()V +HSPLorg/chromium/base/UserDataHost;->checkThreadAndState()V +HSPLorg/chromium/base/UserDataHost;->getUserData(Ljava/lang/Class;)Lorg/chromium/base/UserData; +HSPLorg/chromium/base/UserDataHost;->setUserData(Ljava/lang/Class;Lorg/chromium/base/UserData;)Lorg/chromium/base/UserData; +Lorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class; +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/ClipDescription;)J +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;I)Landroid/content/Intent; +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/res/Configuration;)Z +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/net/ConnectivityManager;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/net/ConnectivityManager;Landroid/net/NetworkRequest;Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;Landroid/os/Handler;)V +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Display;)Z +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/View;)V +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/autofill/AutofillManager;)V +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/autofill/AutofillManager;Landroid/view/View;)V +HSPLorg/chromium/base/compat/ApiHelperForO$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/autofill/AutofillManager; +Lorg/chromium/base/compat/ApiHelperForOMR1$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/compat/ApiHelperForOMR1$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Window;)Z +Lorg/chromium/base/compat/ApiHelperForP$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/compat/ApiHelperForP$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/PackageInfo;)J +HSPLorg/chromium/base/compat/ApiHelperForP$$ExternalSyntheticApiModelOutline0;->m(Landroid/net/LinkProperties;)Ljava/lang/String; +HSPLorg/chromium/base/compat/ApiHelperForP$$ExternalSyntheticApiModelOutline0;->m(Landroid/net/LinkProperties;)Z +Lorg/chromium/base/compat/ApiHelperForQ$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/base/compat/ApiHelperForQ$$ExternalSyntheticApiModelOutline0;->m(ILandroid/content/Context;Landroid/content/Intent;Landroid/content/ServiceConnection;Ljava/lang/String;Ljava/util/concurrent/Executor;)Z +HSPLorg/chromium/base/compat/ApiHelperForQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/Context;Lorg/chromium/base/process_launcher/ChildServiceConnectionImpl;II)V +HSPLorg/chromium/base/compat/ApiHelperForQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/net/Uri;)Landroid/net/Uri; +HSPLorg/chromium/base/compat/ApiHelperForQ$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/PowerManager;)I +Lorg/chromium/base/jank_tracker/FrameMetrics; +HSPLorg/chromium/base/jank_tracker/FrameMetrics;-><init>([Ljava/lang/Long;[Ljava/lang/Long;[Ljava/lang/Integer;)V +Lorg/chromium/base/jank_tracker/FrameMetricsListener; +HSPLorg/chromium/base/jank_tracker/FrameMetricsListener;-><init>(Lorg/chromium/base/jank_tracker/FrameMetricsStore;)V +HSPLorg/chromium/base/jank_tracker/FrameMetricsListener;->onFrameMetricsAvailable(Landroid/view/Window;Landroid/view/FrameMetrics;I)V +Lorg/chromium/base/jank_tracker/FrameMetricsStore; +HSPLorg/chromium/base/jank_tracker/FrameMetricsStore;-><init>()V +HSPLorg/chromium/base/jank_tracker/FrameMetricsStore;->removeUnusedFrames()V +Lorg/chromium/base/jank_tracker/JankActivityTracker; +HSPLorg/chromium/base/jank_tracker/JankActivityTracker;-><init>(Landroid/app/Activity;Lorg/chromium/base/jank_tracker/FrameMetricsListener;Lorg/chromium/base/jank_tracker/JankReportingScheduler;)V +HSPLorg/chromium/base/jank_tracker/JankActivityTracker;->assertValidState()V +HSPLorg/chromium/base/jank_tracker/JankActivityTracker;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/base/jank_tracker/JankActivityTracker;->startReportingTimer()V +HSPLorg/chromium/base/jank_tracker/JankActivityTracker;->stopReportingTimer()V +Lorg/chromium/base/jank_tracker/JankMetricCalculator; +HSPLorg/chromium/base/jank_tracker/JankMetricCalculator;->areFramesConsecutive(II[J[J)Z +HSPLorg/chromium/base/jank_tracker/JankMetricCalculator;->longArrayToPrimitiveArray([Ljava/lang/Long;)[J +Lorg/chromium/base/jank_tracker/JankMetricUMARecorder; +HSPLorg/chromium/base/jank_tracker/JankMetricUMARecorder;->scenarioToString(I)Ljava/lang/String; +Lorg/chromium/base/jank_tracker/JankReportingRunnable; +HSPLorg/chromium/base/jank_tracker/JankReportingRunnable;-><init>(Lorg/chromium/base/jank_tracker/FrameMetricsStore;IZ)V +HSPLorg/chromium/base/jank_tracker/JankReportingRunnable;->run()V +Lorg/chromium/base/jank_tracker/JankReportingScheduler; +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler;-><init>(Lorg/chromium/base/jank_tracker/FrameMetricsStore;)V +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler;->finishTrackingScenario(I)V +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler;->getOrCreateHandler()Landroid/os/Handler; +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler;->startTrackingScenario(I)V +Lorg/chromium/base/jank_tracker/JankReportingScheduler$1; +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler$1;-><init>(Lorg/chromium/base/jank_tracker/JankReportingScheduler;)V +HSPLorg/chromium/base/jank_tracker/JankReportingScheduler$1;->run()V +Lorg/chromium/base/jank_tracker/JankTracker; +Lorg/chromium/base/jank_tracker/JankTrackerImpl; +HSPLorg/chromium/base/jank_tracker/JankTrackerImpl;-><init>(Landroid/app/Activity;)V +Lorg/chromium/base/library_loader/LibraryLoader; +HSPLorg/chromium/base/library_loader/LibraryLoader;-><init>()V +HSPLorg/chromium/base/library_loader/LibraryLoader;->ensureInitialized()V +HSPLorg/chromium/base/library_loader/LibraryLoader;->ensureMainDexInitialized()V +HSPLorg/chromium/base/library_loader/LibraryLoader;->initializeAlreadyLocked()V +HSPLorg/chromium/base/library_loader/LibraryLoader;->isInitialized()Z +HSPLorg/chromium/base/library_loader/LibraryLoader;->loadMainDexAlreadyLocked(Landroid/content/pm/ApplicationInfo;Z)V +HSPLorg/chromium/base/library_loader/LibraryLoader;->loadNonMainDex()V +HSPLorg/chromium/base/library_loader/LibraryLoader;->setLibraryProcessType(I)V +Lorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator; +HSPLorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator;-><init>(Lorg/chromium/base/library_loader/LibraryLoader;)V +HSPLorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator;->creationAsString()Ljava/lang/String; +HSPLorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator;->ensureInitializedInMainProcess()V +HSPLorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator;->putLoadAddressToBundle(Landroid/os/Bundle;)V +HSPLorg/chromium/base/library_loader/LibraryLoader$MultiProcessMediator;->putSharedRelrosToBundle(Landroid/os/Bundle;)V +Lorg/chromium/base/library_loader/LibraryPrefetcher; +HSPLorg/chromium/base/library_loader/LibraryPrefetcher;->asyncPrefetchLibrariesToMemory()V +Lorg/chromium/base/library_loader/LibraryPrefetcher$$ExternalSyntheticLambda1; +HSPLorg/chromium/base/library_loader/LibraryPrefetcher$$ExternalSyntheticLambda1;-><init>(Z)V +HSPLorg/chromium/base/library_loader/LibraryPrefetcher$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/base/library_loader/ProcessInitException; +Lorg/chromium/base/lifetime/DestroyChecker; +HSPLorg/chromium/base/lifetime/DestroyChecker;-><init>()V +Lorg/chromium/base/memory/MemoryPressureCallback; +Lorg/chromium/base/memory/MemoryPressureMonitor; +HSPLorg/chromium/base/memory/MemoryPressureMonitor;-><init>()V +Lorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda1; +HSPLorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda1;-><init>()V +Lorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda2; +HSPLorg/chromium/base/memory/MemoryPressureMonitor$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/base/memory/MemoryPressureMonitor;)V +Lorg/chromium/base/memory/MemoryPressureMonitor$1; +HSPLorg/chromium/base/memory/MemoryPressureMonitor$1;-><init>(Lorg/chromium/base/memory/MemoryPressureMonitor;)V +Lorg/chromium/base/memory/MemoryPressureUma; +HSPLorg/chromium/base/memory/MemoryPressureUma;-><init>(Ljava/lang/String;)V +Lorg/chromium/base/memory/MemoryPurgeManager; +HSPLorg/chromium/base/memory/MemoryPurgeManager;-><init>()V +HSPLorg/chromium/base/memory/MemoryPurgeManager;->onApplicationStateChange(I)V +Lorg/chromium/base/metrics/CachingUmaRecorder; +HSPLorg/chromium/base/metrics/CachingUmaRecorder;-><init>()V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->cacheOrRecordHistogramSample(ILjava/lang/String;IIII)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->flushHistogramsAlreadyLocked(Ljava/util/Map;I)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordBooleanHistogram(Ljava/lang/String;Z)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordExponentialHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordHistogramSampleAlreadyLocked(ILjava/lang/String;IIII)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordLinearHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordSparseHistogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder;->recordUserAction(JLjava/lang/String;)V +Lorg/chromium/base/metrics/CachingUmaRecorder$Histogram; +HSPLorg/chromium/base/metrics/CachingUmaRecorder$Histogram;-><init>(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/CachingUmaRecorder$Histogram;->addSample(I)Z +Lorg/chromium/base/metrics/NativeUmaRecorder; +HSPLorg/chromium/base/metrics/NativeUmaRecorder;-><init>()V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->getNativeHint(Ljava/lang/String;)J +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->maybeUpdateNativeHint(Ljava/lang/String;JJ)V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->recordBooleanHistogram(Ljava/lang/String;Z)V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->recordExponentialHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->recordLinearHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->recordSparseHistogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/NativeUmaRecorder;->recordUserAction(JLjava/lang/String;)V +Lorg/chromium/base/metrics/RecordHistogram; +HSPLorg/chromium/base/metrics/RecordHistogram;->clampToInt(J)I +HSPLorg/chromium/base/metrics/RecordHistogram;->recordBooleanHistogram(Ljava/lang/String;Z)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordCount100Histogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordCount1MHistogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordCustomCountHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordCustomTimesHistogramMilliseconds(Ljava/lang/String;JJJI)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordExactLinearHistogram(IILjava/lang/String;)V +PLorg/chromium/base/metrics/RecordHistogram;->recordLinearCountHistogram(IIIILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordMediumTimesHistogram(JLjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordPercentageHistogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordSparseHistogram(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/RecordHistogram;->recordTimesHistogram(JLjava/lang/String;)V +Lorg/chromium/base/metrics/RecordUserAction; +HSPLorg/chromium/base/metrics/RecordUserAction;->record(Ljava/lang/String;)V +Lorg/chromium/base/metrics/TimingMetric; +HSPLorg/chromium/base/metrics/TimingMetric;-><init>(ILjava/lang/String;)V +HSPLorg/chromium/base/metrics/TimingMetric;->close()V +HSPLorg/chromium/base/metrics/TimingMetric;->mediumUptime(Ljava/lang/String;)Lorg/chromium/base/metrics/TimingMetric; +Lorg/chromium/base/metrics/UmaRecorder; +Lorg/chromium/base/metrics/UmaRecorderHolder; +Lorg/chromium/base/process_launcher/BindService; +HSPLorg/chromium/base/process_launcher/BindService;->bindServiceByReflection(Landroid/content/Context;Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;)Z +HSPLorg/chromium/base/process_launcher/BindService;->doBindService(Landroid/content/Context;Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Ljava/util/concurrent/Executor;Ljava/lang/String;)Z +HSPLorg/chromium/base/process_launcher/BindService;->supportVariableConnections()Z +Lorg/chromium/base/process_launcher/ChildConnectionAllocator; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator;-><init>(Landroid/os/Handler;Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator;->checkServiceExists(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator;->create(Landroid/content/Context;Landroid/os/Handler;Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/chromium/base/process_launcher/ChildConnectionAllocator$FixedSizeAllocatorImpl; +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1;-><init>(Lorg/chromium/base/process_launcher/ChildConnectionAllocator;Lorg/chromium/base/process_launcher/ChildProcessConnection$ServiceCallback;)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1;->onChildProcessDied(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1;->onChildStarted()V +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1$1; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1$1;-><init>(Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1;)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1$1;->run()V +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1$2; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1$2;-><init>(Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1;Lorg/chromium/base/process_launcher/ChildProcessConnection;I)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$1$2;->run()V +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$ConnectionFactoryImpl; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$ConnectionFactoryImpl;-><init>()V +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$FixedSizeAllocatorImpl; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$FixedSizeAllocatorImpl;-><init>(Landroid/os/Handler;Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;Ljava/lang/String;Ljava/lang/String;ZI)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$FixedSizeAllocatorImpl;->doAllocate(Landroid/content/Context;Landroid/os/Bundle;Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1;)Lorg/chromium/base/process_launcher/ChildProcessConnection; +Lorg/chromium/base/process_launcher/ChildConnectionAllocator$VariableSizeAllocatorImpl; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$VariableSizeAllocatorImpl;-><init>(Landroid/os/Handler;Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$VariableSizeAllocatorImpl;->allocate(Landroid/content/Context;Landroid/os/Bundle;)Lorg/chromium/base/process_launcher/ChildProcessConnection; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$VariableSizeAllocatorImpl;->doAllocate(Landroid/content/Context;Landroid/os/Bundle;Lorg/chromium/base/process_launcher/ChildConnectionAllocator$1;)Lorg/chromium/base/process_launcher/ChildProcessConnection; +HSPLorg/chromium/base/process_launcher/ChildConnectionAllocator$VariableSizeAllocatorImpl;->doFree(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +Lorg/chromium/base/process_launcher/ChildProcessConnection; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZLandroid/os/Bundle;Ljava/lang/String;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->addStrongBinding()V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->addVisibleBinding()V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->bind(Z)Z +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->createBindings(Landroid/content/ComponentName;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->doConnectionSetup()V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->isConnected()Z +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->onServiceConnectedOnLauncherThread(Landroid/os/IBinder;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->start(ZLorg/chromium/base/process_launcher/ChildConnectionAllocator$1;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->unbind()V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->updateBindingState()V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection;->updateGroupImportance(II)V +Lorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +Lorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda2; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/base/memory/MemoryPressureCallback;I)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda3; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda3;-><init>(ILjava/lang/Object;)V +PLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda3;->run()V +Lorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda4; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$$ExternalSyntheticLambda4;->execute(Ljava/lang/Runnable;)V +Lorg/chromium/base/process_launcher/ChildProcessConnection$1; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$1;-><init>(Landroid/os/Bundle;Ljava/util/List;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$1;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;Landroid/content/Context;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$1;->createConnection(Landroid/content/Intent;ILorg/chromium/base/process_launcher/ChildProcessConnection$2;Ljava/lang/String;)Lorg/chromium/base/process_launcher/ChildServiceConnectionImpl; +Lorg/chromium/base/process_launcher/ChildProcessConnection$2; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$2;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +Lorg/chromium/base/process_launcher/ChildProcessConnection$3; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3;->asBinder()Landroid/os/IBinder; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3;->finishSetupConnection(IIJLandroid/os/Bundle;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3;->onTransact$org$chromium$base$process_launcher$IParentProcess$Stub(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +PLorg/chromium/base/process_launcher/ChildProcessConnection$3;->reportCleanExit()V +Lorg/chromium/base/process_launcher/ChildProcessConnection$3$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection$3;IIJLandroid/os/Bundle;)V +HSPLorg/chromium/base/process_launcher/ChildProcessConnection$3$$ExternalSyntheticLambda0;->run()V +PLorg/chromium/base/process_launcher/ChildProcessConnection$3$1;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection$3;)V +PLorg/chromium/base/process_launcher/ChildProcessConnection$3$1;->run()V +Lorg/chromium/base/process_launcher/ChildProcessConnection$ServiceCallback; +Lorg/chromium/base/process_launcher/ChildProcessLauncher; +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher;-><init>(Landroid/os/Handler;Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$1;[Ljava/lang/String;[Lorg/chromium/base/process_launcher/FileDescriptorInfo;Lorg/chromium/base/process_launcher/ChildConnectionAllocator;Ljava/util/List;)V +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher;->allocateAndSetupConnection(Lorg/chromium/base/process_launcher/ChildProcessConnection$ServiceCallback;ZZ)Z +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher;->setupConnection()V +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher;->start(ZZ)V +Lorg/chromium/base/process_launcher/ChildProcessLauncher$1; +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$1;-><init>(Lorg/chromium/base/process_launcher/ChildProcessLauncher;ZZ)V +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$1;->onChildProcessDied(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$1;->onChildStarted()V +Lorg/chromium/base/process_launcher/ChildProcessLauncher$2; +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$2;-><init>(Lorg/chromium/base/process_launcher/ChildProcessLauncher;)V +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$2;->onConnected()V +Lorg/chromium/base/process_launcher/ChildProcessLauncher$Delegate; +HSPLorg/chromium/base/process_launcher/ChildProcessLauncher$Delegate;-><init>()V +Lorg/chromium/base/process_launcher/ChildServiceConnectionImpl; +HSPLorg/chromium/base/process_launcher/ChildServiceConnectionImpl;-><init>(Landroid/content/Context;Landroid/content/Intent;ILandroid/os/Handler;Ljava/util/concurrent/Executor;Lorg/chromium/base/process_launcher/ChildProcessConnection$2;Ljava/lang/String;)V +HSPLorg/chromium/base/process_launcher/ChildServiceConnectionImpl;->bindServiceConnection()Z +HSPLorg/chromium/base/process_launcher/ChildServiceConnectionImpl;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +HSPLorg/chromium/base/process_launcher/ChildServiceConnectionImpl;->unbindServiceConnection()V +Lorg/chromium/base/process_launcher/FileDescriptorInfo; +HSPLorg/chromium/base/process_launcher/FileDescriptorInfo;-><init>(ILandroid/os/ParcelFileDescriptor;JJ)V +HSPLorg/chromium/base/process_launcher/FileDescriptorInfo;->writeToParcel(Landroid/os/Parcel;I)V +Lorg/chromium/base/process_launcher/FileDescriptorInfo$1; +HSPLorg/chromium/base/process_launcher/FileDescriptorInfo$1;-><init>()V +Lorg/chromium/base/process_launcher/IChildProcessService; +Lorg/chromium/base/process_launcher/IChildProcessService$Stub; +Lorg/chromium/base/process_launcher/IChildProcessService$Stub$Proxy; +HSPLorg/chromium/base/process_launcher/IChildProcessService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V +HSPLorg/chromium/base/process_launcher/IChildProcessService$Stub$Proxy;->getAppInfo()Landroid/content/pm/ApplicationInfo; +HSPLorg/chromium/base/process_launcher/IChildProcessService$Stub$Proxy;->setupConnection(Landroid/os/Bundle;Lorg/chromium/base/process_launcher/IParentProcess;Ljava/util/List;)V +Lorg/chromium/base/process_launcher/IParentProcess; +Lorg/chromium/base/supplier/ObservableSupplier; +Lorg/chromium/base/supplier/ObservableSupplierImpl; +HSPLorg/chromium/base/supplier/ObservableSupplierImpl;-><init>()V +HSPLorg/chromium/base/supplier/ObservableSupplierImpl;->addObserver(Lorg/chromium/base/Callback;)Ljava/lang/Object; +HSPLorg/chromium/base/supplier/ObservableSupplierImpl;->get()Ljava/lang/Object; +HSPLorg/chromium/base/supplier/ObservableSupplierImpl;->removeObserver(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/supplier/ObservableSupplierImpl;->set(Ljava/lang/Object;)V +Lorg/chromium/base/supplier/ObservableSupplierImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/supplier/ObservableSupplierImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/supplier/ObservableSupplierImpl;Ljava/lang/Object;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/base/supplier/ObservableSupplierImpl$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/supplier/OneShotCallback; +HSPLorg/chromium/base/supplier/OneShotCallback;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/Callback;)V +Lorg/chromium/base/supplier/OneShotCallback$CallbackWrapper; +HSPLorg/chromium/base/supplier/OneShotCallback$CallbackWrapper;-><init>(Lorg/chromium/base/supplier/OneShotCallback;)V +HSPLorg/chromium/base/supplier/OneShotCallback$CallbackWrapper;->onResult(Ljava/lang/Object;)V +Lorg/chromium/base/supplier/OneshotSupplier; +Lorg/chromium/base/supplier/OneshotSupplierImpl; +HSPLorg/chromium/base/supplier/OneshotSupplierImpl;-><init>()V +HSPLorg/chromium/base/supplier/OneshotSupplierImpl;->get()Ljava/lang/Object; +HSPLorg/chromium/base/supplier/OneshotSupplierImpl;->onAvailable(Lorg/chromium/base/Callback;)Ljava/lang/Object; +HSPLorg/chromium/base/supplier/OneshotSupplierImpl;->set(Ljava/lang/Object;)V +Lorg/chromium/base/supplier/Supplier; +HSPLorg/chromium/base/supplier/Supplier;->hasValue()Z +Lorg/chromium/base/supplier/UnownedUserDataSupplier; +HSPLorg/chromium/base/supplier/UnownedUserDataSupplier;-><init>(Lorg/chromium/base/UnownedUserDataKey;)V +HSPLorg/chromium/base/supplier/UnownedUserDataSupplier;->attach(Lorg/chromium/base/UnownedUserDataHost;)V +HSPLorg/chromium/base/supplier/UnownedUserDataSupplier;->destroy()V +Lorg/chromium/base/task/AsyncTask; +HSPLorg/chromium/base/task/AsyncTask;-><init>()V +PLorg/chromium/base/task/AsyncTask;->cancel(Z)Z +HSPLorg/chromium/base/task/AsyncTask;->executeOnExecutor(Ljava/util/concurrent/Executor;)V +HSPLorg/chromium/base/task/AsyncTask;->executeOnTaskRunner(Lorg/chromium/base/task/TaskRunner;)V +HSPLorg/chromium/base/task/AsyncTask;->executionPreamble()V +HSPLorg/chromium/base/task/AsyncTask;->get()Ljava/lang/Object; +HSPLorg/chromium/base/task/AsyncTask;->isCancelled()Z +PLorg/chromium/base/task/AsyncTask;->onCancelled()V +PLorg/chromium/base/task/AsyncTask;->onCancelled(Ljava/lang/Object;)V +HSPLorg/chromium/base/task/AsyncTask;->onPreExecute()V +HSPLorg/chromium/base/task/AsyncTask;->postResult(Ljava/lang/Object;)V +Lorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V +Lorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda1; +HSPLorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/base/task/AsyncTask;Ljava/lang/Object;)V +HSPLorg/chromium/base/task/AsyncTask$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/base/task/AsyncTask$1; +HSPLorg/chromium/base/task/AsyncTask$1;-><init>(Lorg/chromium/base/task/AsyncTask;)V +HSPLorg/chromium/base/task/AsyncTask$1;->call()Ljava/lang/Object; +Lorg/chromium/base/task/AsyncTask$NamedFutureTask; +HSPLorg/chromium/base/task/AsyncTask$NamedFutureTask;-><init>(Lorg/chromium/base/task/AsyncTask;Lorg/chromium/base/task/AsyncTask$1;)V +HSPLorg/chromium/base/task/AsyncTask$NamedFutureTask;->done()V +HSPLorg/chromium/base/task/AsyncTask$NamedFutureTask;->run()V +Lorg/chromium/base/task/AsyncTask$StealRunnableHandler; +HSPLorg/chromium/base/task/AsyncTask$StealRunnableHandler;-><init>()V +Lorg/chromium/base/task/BackgroundOnlyAsyncTask; +HSPLorg/chromium/base/task/BackgroundOnlyAsyncTask;-><init>()V +Lorg/chromium/base/task/ChainedTasks; +HSPLorg/chromium/base/task/ChainedTasks;-><init>()V +HSPLorg/chromium/base/task/ChainedTasks;->add(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/ChainedTasks;->start(Z)V +Lorg/chromium/base/task/ChainedTasks$1; +HSPLorg/chromium/base/task/ChainedTasks$1;-><init>(Lorg/chromium/base/task/ChainedTasks;)V +HSPLorg/chromium/base/task/ChainedTasks$1;->run()V +Lorg/chromium/base/task/ChoreographerTaskRunner; +HSPLorg/chromium/base/task/ChoreographerTaskRunner;-><init>(Landroid/view/Choreographer;)V +HSPLorg/chromium/base/task/ChoreographerTaskRunner;->postDelayedTask(Ljava/lang/Runnable;J)V +Lorg/chromium/base/task/ChoreographerTaskRunner$1; +HSPLorg/chromium/base/task/ChoreographerTaskRunner$1;-><init>(Ljava/lang/Runnable;I)V +HSPLorg/chromium/base/task/ChoreographerTaskRunner$1;->doFrame(J)V +Lorg/chromium/base/task/ChromeThreadPoolExecutor; +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor;-><init>()V +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V +Lorg/chromium/base/task/ChromeThreadPoolExecutor$1; +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor$1;-><init>()V +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread; +Lorg/chromium/base/task/ChromeThreadPoolExecutor$1$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor$1$$ExternalSyntheticLambda0;-><init>(Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/ChromeThreadPoolExecutor$1$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/task/DefaultTaskExecutor; +HSPLorg/chromium/base/task/DefaultTaskExecutor;-><init>()V +HSPLorg/chromium/base/task/DefaultTaskExecutor;->createChoreographerTaskRunner()Lorg/chromium/base/task/ChoreographerTaskRunner; +HSPLorg/chromium/base/task/DefaultTaskExecutor;->createSequencedTaskRunner(Lorg/chromium/base/task/TaskTraits;)Lorg/chromium/base/task/SequencedTaskRunner; +HSPLorg/chromium/base/task/DefaultTaskExecutor;->createTaskRunner(Lorg/chromium/base/task/TaskTraits;)Lorg/chromium/base/task/TaskRunner; +HSPLorg/chromium/base/task/DefaultTaskExecutor;->postDelayedTask(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;J)V +Lorg/chromium/base/task/DefaultTaskExecutor$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/task/DefaultTaskExecutor$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/base/task/DefaultTaskExecutor$$ExternalSyntheticLambda0;->call()Ljava/lang/Object; +Lorg/chromium/base/task/PostTask; +HSPLorg/chromium/base/task/PostTask;->createSequencedTaskRunner(Lorg/chromium/base/task/TaskTraits;)Lorg/chromium/base/task/SequencedTaskRunner; +HSPLorg/chromium/base/task/PostTask;->onNativeSchedulerReady()V +HSPLorg/chromium/base/task/PostTask;->postDelayedTask(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;J)V +HSPLorg/chromium/base/task/PostTask;->postTask(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/PostTask;->runOrPostTask(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;)V +Lorg/chromium/base/task/SequencedTaskRunner; +Lorg/chromium/base/task/SequencedTaskRunnerImpl; +HSPLorg/chromium/base/task/SequencedTaskRunnerImpl;-><init>(Lorg/chromium/base/task/TaskTraits;)V +HSPLorg/chromium/base/task/SequencedTaskRunnerImpl;->initNativeTaskRunner()V +HSPLorg/chromium/base/task/SequencedTaskRunnerImpl;->runPreNativeTask()V +HSPLorg/chromium/base/task/SequencedTaskRunnerImpl;->schedulePreNativeTask()V +Lorg/chromium/base/task/SerialExecutor; +HSPLorg/chromium/base/task/SerialExecutor;-><init>()V +HSPLorg/chromium/base/task/SerialExecutor;->execute(Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/SerialExecutor;->scheduleNext()V +Lorg/chromium/base/task/SerialExecutor$1; +HSPLorg/chromium/base/task/SerialExecutor$1;-><init>(Lorg/chromium/base/task/SerialExecutor;Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/SerialExecutor$1;->run()V +Lorg/chromium/base/task/SingleThreadTaskRunner; +Lorg/chromium/base/task/SingleThreadTaskRunnerImpl; +HSPLorg/chromium/base/task/SingleThreadTaskRunnerImpl;-><init>(Landroid/os/Handler;Lorg/chromium/base/task/TaskTraits;)V +HSPLorg/chromium/base/task/SingleThreadTaskRunnerImpl;->belongsToCurrentThread()Z +HSPLorg/chromium/base/task/SingleThreadTaskRunnerImpl;->schedulePreNativeTask()V +Lorg/chromium/base/task/TaskExecutor; +Lorg/chromium/base/task/TaskRunner; +Lorg/chromium/base/task/TaskRunnerImpl; +HSPLorg/chromium/base/task/TaskRunnerImpl;-><init>(Lorg/chromium/base/task/TaskTraits;Ljava/lang/String;I)V +HSPLorg/chromium/base/task/TaskRunnerImpl;->destroyGarbageCollectedTaskRunners()V +HSPLorg/chromium/base/task/TaskRunnerImpl;->initNativeTaskRunner()V +HSPLorg/chromium/base/task/TaskRunnerImpl;->oneTimeInitialization()V +HSPLorg/chromium/base/task/TaskRunnerImpl;->postDelayedTask(Ljava/lang/Runnable;J)V +HSPLorg/chromium/base/task/TaskRunnerImpl;->postTask(Ljava/lang/Runnable;)V +HSPLorg/chromium/base/task/TaskRunnerImpl;->runPreNativeTask()V +HSPLorg/chromium/base/task/TaskRunnerImpl;->schedulePreNativeTask()V +Lorg/chromium/base/task/TaskRunnerImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/base/task/TaskRunnerImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/base/task/TaskRunnerImpl;)V +HSPLorg/chromium/base/task/TaskRunnerImpl$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/base/task/TaskRunnerImpl$TaskRunnerCleaner; +HSPLorg/chromium/base/task/TaskRunnerImpl$TaskRunnerCleaner;-><init>(Lorg/chromium/base/task/TaskRunnerImpl;)V +Lorg/chromium/base/task/TaskTraits; +HSPLorg/chromium/base/task/TaskTraits;-><init>()V +HSPLorg/chromium/base/task/TaskTraits;-><init>(Lorg/chromium/base/task/TaskTraits;)V +HSPLorg/chromium/base/task/TaskTraits;->hashCode()I +HSPLorg/chromium/base/task/TaskTraits;->taskPriority(I)Lorg/chromium/base/task/TaskTraits; +Lorg/chromium/blink/mojom/AndroidFontLookup; +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal; +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$1; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$1;-><init>()V +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$1;->buildStub(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/Interface;)Lorg/chromium/mojo/bindings/Interface$Stub; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$1;->getName()Ljava/lang/String; +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesParams; +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams;-><init>(I)V +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams;->encode(Lorg/chromium/mojo/bindings/Encoder;)V +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams$$ExternalSyntheticOutline0; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams$$ExternalSyntheticOutline0;->m(IIILorg/chromium/mojo/bindings/Encoder;Ljava/lang/String;ZII)I +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParams$$ExternalSyntheticOutline0;->m(Lorg/chromium/mojo/bindings/Message;)Lorg/chromium/mojo/bindings/Decoder; +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/MessageReceiver;JI)V +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder;->call(Ljava/lang/Object;)V +Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$Stub; +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$Stub;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/blink/mojom/AndroidFontLookup;)V +HSPLorg/chromium/blink/mojom/AndroidFontLookup_Internal$Stub;->acceptWithResponder(Lorg/chromium/mojo/bindings/Message;Lorg/chromium/mojo/bindings/MessageReceiver;)Z +Lorg/chromium/build/NativeLibraries; +Lorg/chromium/chrome/browser/ActivityTabProvider; +HSPLorg/chromium/chrome/browser/ActivityTabProvider;-><init>()V +HSPLorg/chromium/chrome/browser/ActivityTabProvider;->triggerActivityTabChangeEvent(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ActivityTabProvider$1; +HSPLorg/chromium/chrome/browser/ActivityTabProvider$1;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/ActivityTabProvider$1;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/ActivityTabProvider$2; +HSPLorg/chromium/chrome/browser/ActivityTabProvider$2;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/ActivityTabProvider$2;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ActivityTabProvider$3; +HSPLorg/chromium/chrome/browser/ActivityTabProvider$3;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;)V +Lorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver; +HSPLorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Z)V +HSPLorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver;->destroy()V +HSPLorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver;)V +HSPLorg/chromium/chrome/browser/ActivityTabProvider$ActivityTabTabObserver$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ActivityUtils; +HSPLorg/chromium/chrome/browser/ActivityUtils;->getThemeId()I +Lorg/chromium/chrome/browser/AppHooks; +HSPLorg/chromium/chrome/browser/AppHooks;-><init>()V +HSPLorg/chromium/chrome/browser/AppHooks;->get()Lorg/chromium/chrome/browser/AppHooks; +Lorg/chromium/chrome/browser/AppHooksImpl; +HSPLorg/chromium/chrome/browser/AppHooksImpl;-><init>()V +Lorg/chromium/chrome/browser/AppHooksModule; +HSPLorg/chromium/chrome/browser/AppHooksModule;-><init>()V +Lorg/chromium/chrome/browser/AppIndexingUtil; +HSPLorg/chromium/chrome/browser/AppIndexingUtil;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/AppIndexingUtil;->extractDocumentMetadata(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/AppIndexingUtil$1; +HSPLorg/chromium/chrome/browser/AppIndexingUtil$1;-><init>(Lorg/chromium/chrome/browser/AppIndexingUtil;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/AppIndexingUtil$1;->didFirstVisuallyNonEmptyPaint(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/AppIndexingUtil$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/ApplicationLifetime; +Lorg/chromium/chrome/browser/ApplicationLifetime$Observer; +Lorg/chromium/chrome/browser/BackupSigninProcessor; +HSPLorg/chromium/chrome/browser/BackupSigninProcessor;->setBackupFlowSigninComplete()V +HSPLorg/chromium/chrome/browser/BackupSigninProcessor;->start(Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/ChromeActionModeHandler; +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/base/supplier/ObservableSupplier;)V +Lorg/chromium/chrome/browser/ChromeActionModeHandler$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ChromeActionModeHandler;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ChromeActionModeHandler$1; +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler$1;-><init>(Lorg/chromium/chrome/browser/ChromeActionModeHandler;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler$1;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ChromeActionModeHandler$ActionModeCallback; +HSPLorg/chromium/chrome/browser/ChromeActionModeHandler$ActionModeCallback;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/content_public/browser/WebContents;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/ChromeActivitySessionTracker; +HSPLorg/chromium/chrome/browser/ChromeActivitySessionTracker;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeActivitySessionTracker;->getInstance()Lorg/chromium/chrome/browser/ChromeActivitySessionTracker; +HSPLorg/chromium/chrome/browser/ChromeActivitySessionTracker;->updateAcceptLanguages()V +Lorg/chromium/chrome/browser/ChromeActivitySessionTracker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ChromeActivitySessionTracker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ChromeActivitySessionTracker;)V +HSPLorg/chromium/chrome/browser/ChromeActivitySessionTracker$$ExternalSyntheticLambda0;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/ChromeApplicationImpl; +HSPLorg/chromium/chrome/browser/ChromeApplicationImpl;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeApplicationImpl;->getComponent()Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl; +HSPLorg/chromium/chrome/browser/ChromeApplicationImpl;->onCreate()V +Lorg/chromium/chrome/browser/ChromeBackupAgentImpl; +Lorg/chromium/chrome/browser/ChromeBackupWatcher; +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher;->createChromeBackupWatcher()Lorg/chromium/chrome/browser/ChromeBackupWatcher; +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher;->onBackupPrefsChanged()V +Lorg/chromium/chrome/browser/ChromeBackupWatcher$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ChromeBackupWatcher;)V +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher$$ExternalSyntheticLambda0;->onPreferenceChanged(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/ChromeBackupWatcher$1; +HSPLorg/chromium/chrome/browser/ChromeBackupWatcher$1;-><init>(Lorg/chromium/chrome/browser/ChromeBackupWatcher;)V +Lorg/chromium/chrome/browser/ChromeBaseAppCompatActivity; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->applyOverrides(Landroid/content/Context;Landroid/content/res/Configuration;)Z +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->attachBaseContext(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->createNightModeStateProvider()Lorg/chromium/chrome/browser/night_mode/NightModeStateProvider; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->getClassLoader()Ljava/lang/ClassLoader; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->getModalDialogManager()Lorg/chromium/ui/modaldialog/ModalDialogManager; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->initializeNightModeStateProvider()V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->onCreate(Landroid/os/Bundle;)V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->onDestroy()V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->setDefaultTaskDescription()V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity;->setTheme(I)V +Lorg/chromium/chrome/browser/ChromeBaseAppCompatActivity$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeBaseAppCompatActivity$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/ChromeInactivityTracker; +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->onDestroy()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->onStopWithNative()V +HSPLorg/chromium/chrome/browser/ChromeInactivityTracker;->setLastVisibleTimeMsAndRecord(J)V +Lorg/chromium/chrome/browser/ChromeKeyboardVisibilityDelegate; +HSPLorg/chromium/chrome/browser/ChromeKeyboardVisibilityDelegate;-><init>(Ljava/lang/ref/WeakReference;Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentSupplier;)V +HSPLorg/chromium/chrome/browser/ChromeKeyboardVisibilityDelegate;->calculateKeyboardHeight(Landroid/view/View;)I +HSPLorg/chromium/chrome/browser/ChromeKeyboardVisibilityDelegate;->isKeyboardShowing(Landroid/content/Context;Landroid/view/View;)Z +Lorg/chromium/chrome/browser/ChromeLocalizationUtils; +HSPLorg/chromium/chrome/browser/ChromeLocalizationUtils;->recordUiLanguageStatus()V +Lorg/chromium/chrome/browser/ChromeStrictMode; +Lorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticApiModelOutline0;->m(Landroid/os/StrictMode$VmPolicy$Builder;)V +Lorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticApiModelOutline1; +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticApiModelOutline1;->m(Landroid/os/StrictMode$VmPolicy$Builder;)Landroid/os/StrictMode$VmPolicy$Builder; +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticApiModelOutline1;->m(Landroid/os/StrictMode$VmPolicy$Builder;)V +Lorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticLambda3;-><init>()V +Lorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticLambda4;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeStrictMode$$ExternalSyntheticLambda4;->queueIdle()Z +Lorg/chromium/chrome/browser/ChromeTabbedActivity; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->$r8$lambda$y0VI-Tx4eNfLGtbQTxAQ0QI-8JA(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)Lorg/chromium/chrome/browser/TabbedModeTabDelegateFactory; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->-$$Nest$mlaunchIntent(Lorg/chromium/chrome/browser/ChromeTabbedActivity;Lorg/chromium/content_public/browser/LoadUrlParams;Ljava/lang/String;ZLandroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createAppMenuPropertiesDelegate()Lorg/chromium/chrome/browser/ui/appmenu/AppMenuPropertiesDelegate; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createIntentHandlerDelegate()Lorg/chromium/chrome/browser/IntentHandler$IntentHandlerDelegate; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createLaunchCauseMetrics()Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createModalDialogManager()Lorg/chromium/ui/modaldialog/ModalDialogManager; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createRootUiCoordinator()Lorg/chromium/chrome/browser/ui/RootUiCoordinator; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createStartSurface(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createTabCreators()Landroid/util/Pair; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createTabModelOrchestrator()Lorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createTabModels()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->createTabSwitcherOrStartSurface(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->destroyTabModels()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->dispatchOnInflationComplete()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->finishNativeInitialization()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getActivityType()I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getControlContainerHeightResource()I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getControlContainerLayoutId()I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getLayoutManager()Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getTabCreator(Z)Lorg/chromium/chrome/browser/tabmodel/ChromeTabCreator; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getTabCreator(Z)Lorg/chromium/chrome/browser/tabmodel/TabCreator; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->getToolbarLayoutId()I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->handleDebugIntent(Landroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->initDeferredStartupForActivity()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->initializeCompositor()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->initializeCompositorContent()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->initializeState()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->isInOverviewMode()Z +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->isStartSurfaceRefactorEnabled()Z +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->isStartedUpCorrectly(Landroid/content/Intent;)Z +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->maybeDispatchExplicitMainViewIntent(Landroid/content/Intent;I)I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->maybeDispatchLaunchIntent(Landroid/content/Intent;Landroid/os/Bundle;)I +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onAccessibilityModeChanged(Z)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onAccessibilityTabSwitcherModeChanged()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onDestroyInternal()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onNewIntent(Landroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onNewIntentWithNative(Landroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onPause()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onPreCreate()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onResume()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onSceneChange(Lorg/chromium/chrome/browser/compositor/layouts/Layout;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onStart()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onStop()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->onStopWithNative()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->performPostInflationStartup()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->performPreInflationStartup()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->saveState()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->setInitialOverviewState(Z)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->setTrackColdStartupMetrics(Z)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->setupCompositorContentPreNativeForPhone()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->shouldIgnoreIntent()Z +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->shouldShowOverviewPageOnStart()Z +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity;->startNativeInitialization()V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/content/pm/ShortcutManager; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda11; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda11;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;I)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda12; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda12;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda12;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;I)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14;->getAsBoolean()Z +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda15; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda15;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda16; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda16;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;I)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda19; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda19;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/ui/appmenu/AppMenuBlocker;I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda3;->run()V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda5; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda5;-><init>(I)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda5;->run()V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda8; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda8;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda8;->getSnackbarManager()Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$1; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$1;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$1;->hasIncognitoTabs()Z +Lorg/chromium/chrome/browser/ChromeTabbedActivity$3; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$3;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$3;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$5; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$5;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$5;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$6; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$6;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$6;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$7; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$7;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$7;->getIntentHandlingTimeMs()J +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$7;->processUrlViewIntent(Lorg/chromium/content_public/browser/LoadUrlParams;ILjava/lang/String;ILandroid/content/Intent;)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity$Preload; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$Preload;-><init>()V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$Preload;->getLifecycle()Landroidx/lifecycle/LifecycleRegistry; +Lorg/chromium/chrome/browser/ChromeTabbedActivity$Preload$1; +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$Preload$1;-><init>(Landroidx/lifecycle/LifecycleOwner;)V +HSPLorg/chromium/chrome/browser/ChromeTabbedActivity$Preload$1;->addObserver(Landroidx/lifecycle/LifecycleObserver;)V +Lorg/chromium/chrome/browser/ChromeTabbedActivity2; +Lorg/chromium/chrome/browser/ChromeWindow; +HSPLorg/chromium/chrome/browser/ChromeWindow;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentSupplier;Lorg/chromium/ui/base/IntentRequestTrackerImpl;)V +HSPLorg/chromium/chrome/browser/ChromeWindow;->getKeyboardDelegate()Lorg/chromium/ui/KeyboardVisibilityDelegate; +Lorg/chromium/chrome/browser/DefaultBrowserInfo; +Lorg/chromium/chrome/browser/DefaultBrowserInfo$1; +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$1;-><init>()V +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$1;->doInBackground()Ljava/lang/Object; +Lorg/chromium/chrome/browser/DefaultBrowserInfo$2; +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$2;-><init>()V +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$2;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$2;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/DefaultBrowserInfo$DefaultInfo; +HSPLorg/chromium/chrome/browser/DefaultBrowserInfo$DefaultInfo;-><init>()V +Lorg/chromium/chrome/browser/DeferredStartupHandler; +HSPLorg/chromium/chrome/browser/DeferredStartupHandler;-><init>()V +HSPLorg/chromium/chrome/browser/DeferredStartupHandler;->addDeferredTask(Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/DeferredStartupHandler;->getInstance()Lorg/chromium/chrome/browser/DeferredStartupHandler; +Lorg/chromium/chrome/browser/DeferredStartupHandler$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/DeferredStartupHandler$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/DeferredStartupHandler;)V +HSPLorg/chromium/chrome/browser/DeferredStartupHandler$$ExternalSyntheticLambda0;->queueIdle()Z +PLorg/chromium/chrome/browser/DevToolsServer;-><init>()V +Lorg/chromium/chrome/browser/FileProviderHelper; +HSPLorg/chromium/chrome/browser/FileProviderHelper;-><init>()V +Lorg/chromium/chrome/browser/IntentHandler; +HSPLorg/chromium/chrome/browser/IntentHandler;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/IntentHandler$IntentHandlerDelegate;)V +HSPLorg/chromium/chrome/browser/IntentHandler;->determineExternalIntentSource(Landroid/content/Intent;)I +HSPLorg/chromium/chrome/browser/IntentHandler;->extractUrlFromIntent(Landroid/content/Intent;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->getBringTabToFrontId(Landroid/content/Intent;)I +HSPLorg/chromium/chrome/browser/IntentHandler;->getExtraHeadersFromIntent(Landroid/content/Intent;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->getReferrerUrl(Landroid/content/Intent;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->getReferrerUrlIncludingExtraHeaders(Landroid/content/Intent;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->getSanitizedUrlScheme(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->getTabId(Landroid/content/Intent;)I +PLorg/chromium/chrome/browser/IntentHandler;->getTimestampFromIntent(Landroid/content/Intent;)J +HSPLorg/chromium/chrome/browser/IntentHandler;->getTransitionTypeFromIntent(Landroid/content/Intent;I)I +HSPLorg/chromium/chrome/browser/IntentHandler;->getUrlFromIntent(Landroid/content/Intent;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->hasAnyIncognitoExtra(Landroid/os/Bundle;)Z +HSPLorg/chromium/chrome/browser/IntentHandler;->intentHasUnsafeInternalScheme(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;)Z +HSPLorg/chromium/chrome/browser/IntentHandler;->maybeAddAdditionalContentHeaders(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/IntentHandler;->onNewIntent(Landroid/content/Intent;)Z +HSPLorg/chromium/chrome/browser/IntentHandler;->processUrlViewIntent(Lorg/chromium/content_public/browser/LoadUrlParams;ILjava/lang/String;ILandroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/IntentHandler;->shouldIgnoreIntent(Landroid/content/Intent;ZZ)Z +Lorg/chromium/chrome/browser/IntentHandler$IntentHandlerDelegate; +Lorg/chromium/chrome/browser/LaunchIntentDispatcher; +HSPLorg/chromium/chrome/browser/LaunchIntentDispatcher;->isCustomTabIntent(Landroid/content/Intent;)Z +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/content/pm/ShortcutInfo$Builder;Ljava/lang/String;)Landroid/content/pm/ShortcutInfo$Builder; +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m()V +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ShortcutInfo$Builder;)Landroid/content/pm/ShortcutInfo; +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ShortcutInfo$Builder;Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder; +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ShortcutInfo$Builder;Landroid/graphics/drawable/Icon;)Landroid/content/pm/ShortcutInfo$Builder; +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ShortcutInfo$Builder;Ljava/lang/String;)Landroid/content/pm/ShortcutInfo$Builder; +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Landroid/content/pm/ShortcutManager;Ljava/util/List;)Z +PLorg/chromium/chrome/browser/LauncherShortcutActivity$$ExternalSyntheticApiModelOutline0;->m(Lorg/chromium/chrome/browser/ChromeTabbedActivity;)Landroid/content/pm/ShortcutInfo$Builder; +Lorg/chromium/chrome/browser/PowerBroadcastReceiver; +HSPLorg/chromium/chrome/browser/PowerBroadcastReceiver;-><init>()V +HSPLorg/chromium/chrome/browser/PowerBroadcastReceiver;->onForegroundSessionStart()V +Lorg/chromium/chrome/browser/PowerBroadcastReceiver$ServiceRunnable; +HSPLorg/chromium/chrome/browser/PowerBroadcastReceiver$ServiceRunnable;-><init>()V +PLorg/chromium/chrome/browser/PowerBroadcastReceiver$ServiceRunnable;->run()V +Lorg/chromium/chrome/browser/ProductConfig; +Lorg/chromium/chrome/browser/SwipeRefreshHandler; +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->cancelStopRefreshingRunnable()V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->destroyInternal()V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->detachSwipeRefreshLayoutIfNecessary()V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/SwipeRefreshHandler; +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler;->reset()V +Lorg/chromium/chrome/browser/SwipeRefreshHandler$$ExternalSyntheticLambda2; +Lorg/chromium/chrome/browser/SwipeRefreshHandler$1; +HSPLorg/chromium/chrome/browser/SwipeRefreshHandler$1;-><init>(Lorg/chromium/chrome/browser/SwipeRefreshHandler;)V +Lorg/chromium/chrome/browser/TabUsageTracker; +HSPLorg/chromium/chrome/browser/TabUsageTracker;-><init>(Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/TabUsageTracker;->onDestroy()V +HSPLorg/chromium/chrome/browser/TabUsageTracker;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/TabUsageTracker;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/TabUsageTracker;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/TabUsageTracker;->onStopWithNative()V +PLorg/chromium/chrome/browser/TabUsageTracker$1;-><init>(Lorg/chromium/chrome/browser/TabUsageTracker;)V +PLorg/chromium/chrome/browser/TabUsageTracker$1;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/TabUsageTracker$2; +HSPLorg/chromium/chrome/browser/TabUsageTracker$2;-><init>(Lorg/chromium/chrome/browser/TabUsageTracker;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/TabUsageTracker$2;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/TabUsageTracker$2;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/TabbedModeTabDelegateFactory; +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;-><init>(Landroid/app/Activity;Lorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;Lorg/chromium/chrome/browser/share/ShareDelegateSupplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda3;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14;Lorg/chromium/base/jank_tracker/JankTrackerImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18;Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl;)V +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;->createBrowserControlsVisibilityDelegate(Lorg/chromium/chrome/browser/tab/TabImpl;)Lorg/chromium/components/browser_ui/util/BrowserControlsVisibilityDelegate; +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;->createContextMenuPopulatorFactory(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/contextmenu/ContextMenuPopulatorFactory; +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;->createExternalNavigationHandler(Lorg/chromium/chrome/browser/tab/TabImpl;)Lorg/chromium/components/external_intents/ExternalNavigationHandler; +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;->createNativePage(Ljava/lang/String;Lorg/chromium/chrome/browser/ui/native_page/NativePage;Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/ui/native_page/NativePage; +HSPLorg/chromium/chrome/browser/TabbedModeTabDelegateFactory;->createWebContentsDelegate(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid; +Lorg/chromium/chrome/browser/WarmupManager; +HSPLorg/chromium/chrome/browser/WarmupManager;-><init>()V +HSPLorg/chromium/chrome/browser/WarmupManager;->getInstance()Lorg/chromium/chrome/browser/WarmupManager; +HSPLorg/chromium/chrome/browser/WarmupManager;->maybePreconnectUrlAndSubResources(Ljava/lang/String;Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/WarmupManager;->takeSpareWebContents(ZZ)Lorg/chromium/content_public/browser/WebContents; +Lorg/chromium/chrome/browser/WebContentsFactory; +HSPLorg/chromium/chrome/browser/WebContentsFactory;->createWebContents(Lorg/chromium/chrome/browser/profiles/Profile;Z)Lorg/chromium/content_public/browser/WebContents; +Lorg/chromium/chrome/browser/WebContentsFactory$WebContentsCreationException; +HSPLorg/chromium/chrome/browser/WebContentsFactory$WebContentsCreationException;-><init>()V +Lorg/chromium/chrome/browser/accessibility/AccessibilityTabHelper; +HSPLorg/chromium/chrome/browser/accessibility/AccessibilityTabHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/accessibility/AccessibilityTabHelper;->destroy()V +HSPLorg/chromium/chrome/browser/accessibility/AccessibilityTabHelper;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/accessibility/AccessibilityTabHelper;->updateWebContentsAccessibilityStateForTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate$ReaderForAccessibilityDelegate$$ExternalSyntheticOutline0; +HSPLorg/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate$ReaderForAccessibilityDelegate$$ExternalSyntheticOutline0;->m(Ljava/lang/String;)Z +Lorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout; +HSPLorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +HSPLorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout;->destroy()V +HSPLorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout;->setTabModelSelector(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +Lorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout$1; +HSPLorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout$1;-><init>(Lorg/chromium/chrome/browser/accessibility_tab_switcher/OverviewListLayout;)V +Lorg/chromium/chrome/browser/announcement/AnnouncementNotificationManager; +HSPLorg/chromium/chrome/browser/announcement/AnnouncementNotificationManager;->isFirstRun()Z +Lorg/chromium/chrome/browser/app/ChromeActivity; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;-><init>()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->areTabModelsInitialized()Z +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->changeBackgroundColorForResizing()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->createComponent(Lorg/chromium/chrome/browser/dependency_injection/ChromeActivityCommonsModule;)Lorg/chromium/chrome/browser/dependency_injection/ChromeActivityComponent; +PLorg/chromium/chrome/browser/app/ChromeActivity;->createContextReporterIfNeeded()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->createModalDialogManager()Lorg/chromium/ui/modaldialog/ModalDialogManager; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->createWindowAndroid()Lorg/chromium/ui/base/ActivityWindowAndroid; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->doLayoutInflation()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->finishNativeInitialization()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getActivityTab()Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getBackgroundDrawable()Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getBaseStatusBarColor(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getBrowserControlsManager()Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getCurrentTabModel()Lorg/chromium/chrome/browser/tabmodel/TabModel; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getCurrentWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getFullscreenManager()Lorg/chromium/chrome/browser/fullscreen/FullscreenManager; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getLaunchCauseMetrics()Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getOnCreateTimestampMs()J +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getSnackbarManager()Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getTabCreator(Z)Lorg/chromium/chrome/browser/tabmodel/TabCreator; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getTabModelSelector()Lorg/chromium/chrome/browser/tabmodel/TabModelSelector; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getTabObscuringHandler()Lorg/chromium/chrome/browser/tab/TabObscuringHandler; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->getViewToBeDrawnBeforeInitializingNative()Landroid/view/View; +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initDeferredStartupForActivity()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeBackPressHandling()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeCompositor()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeCompositorContent(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Landroid/view/View;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/toolbar/ControlContainer;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeStartupMetrics()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeState()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->initializeTabModels()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->isCustomTab()Z +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->markSessionEnd()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->markSessionResume()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->maybeRemoveWindowBackground()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onActivityHidden()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onActivityShown()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onAttachFragment(Landroid/app/Fragment;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onDestroy()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onInitialLayoutInflationComplete()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onNewIntentWithNative(Landroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onPreCreate()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onStart()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onStop()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onStopWithNative()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->onWindowFocusChanged(Z)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->performPostInflationStartup()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->performPreInflationStartup()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->postDeferredStartupIfNeeded()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->shouldPostDeferredStartupForReparentedTab()Z +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->shouldStartGpuProcess()Z +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->supportsAppMenu()Z +HSPLorg/chromium/chrome/browser/app/ChromeActivity;->triggerLayoutInflation()V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;I)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda11; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda11;-><init>(Landroid/util/Pair;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda11;->getTabCreator(Z)Lorg/chromium/chrome/browser/tabmodel/TabCreator; +PLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda12;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;I)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda3;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda5; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda5;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;I)V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda7; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda7;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda7;->run()V +Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda8; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda8;-><init>()V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda8;->run()V +Lorg/chromium/chrome/browser/app/ChromeActivity$1; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$1;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$1;->onLoadStopped(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$2; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$2;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/app/ChromeActivity$2;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/app/ChromeActivity$4; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$4;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;)V +Lorg/chromium/chrome/browser/app/ChromeActivity$6; +HSPLorg/chromium/chrome/browser/app/ChromeActivity$6;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity;)V +Lorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl; +HSPLorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Landroid/view/View;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;)V +HSPLorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl;->loadingStateChanged(Z)V +Lorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl;I)V +HSPLorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl;)V +Lorg/chromium/chrome/browser/app/download/DownloadMessageUiDelegate; +HSPLorg/chromium/chrome/browser/app/download/DownloadMessageUiDelegate;-><init>()V +HSPLorg/chromium/chrome/browser/app/download/DownloadMessageUiDelegate;->maybeSwitchToFocusedActivity()Z +Lorg/chromium/chrome/browser/app/feature_guide/notifications/FeatureNotificationGuideDelegate; +HSPLorg/chromium/chrome/browser/app/feature_guide/notifications/FeatureNotificationGuideDelegate;-><init>()V +Lorg/chromium/chrome/browser/app/flags/ChromeCachedFlags; +HSPLorg/chromium/chrome/browser/app/flags/ChromeCachedFlags;-><init>()V +Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics; +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$1; +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$1;-><init>()V +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$1;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$BetweenLaunchState; +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$BetweenLaunchState;-><init>()V +Lorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$PerLaunchState; +HSPLorg/chromium/chrome/browser/app/metrics/LaunchCauseMetrics$PerLaunchState;-><init>()V +Lorg/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetrics; +HSPLorg/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetrics;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetrics;->computeIntentLaunchCause()I +HSPLorg/chromium/chrome/browser/app/metrics/TabbedActivityLaunchCauseMetrics;->getIntentionalTransitionCauseOrOther()I +Lorg/chromium/chrome/browser/app/notifications/ContextualNotificationPermissionRequesterImpl; +HSPLorg/chromium/chrome/browser/app/notifications/ContextualNotificationPermissionRequesterImpl;-><init>()V +Lorg/chromium/chrome/browser/app/notifications/ContextualNotificationPermissionRequesterImpl$LazyHolder; +Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl; +HSPLorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;)V +Lorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid; +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Landroid/app/Activity;Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate;ZLorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->controlsResizeView()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->getBottomControlsHeight()I +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->getBottomControlsMinHeight()I +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->getDisplayMode()I +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->getTopControlsHeight()I +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->getTopControlsMinHeight()I +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isCustomTab()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isForceDarkWebContentEnabled()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isFullscreenForTabOrPending()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isModalContextMenu()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isNightModeEnabled()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->isPictureInPictureEnabled()Z +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;->shouldAnimateBrowserControlsHeightChanges()Z +Lorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid$1; +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid$1;-><init>(Lorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid;)V +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ActivityTabWebContentsDelegateAndroid$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/app/tab_activity_glue/ReparentingDelegateFactory$2; +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/ReparentingDelegateFactory$2;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/app/tab_activity_glue/TabReparentingController; +HSPLorg/chromium/chrome/browser/app/tab_activity_glue/TabReparentingController;-><init>(Lorg/chromium/chrome/browser/app/tab_activity_glue/ReparentingDelegateFactory$2;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;)V +Lorg/chromium/chrome/browser/app/tabmodel/AsyncTabParamsManagerSingleton; +Lorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier; +HSPLorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier;-><init>(Lorg/chromium/base/supplier/OneshotSupplierImpl;)V +Lorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier;)V +HSPLorg/chromium/chrome/browser/app/tabmodel/ChromeNextTabPolicySupplier$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/app/tabmodel/ChromeTabModelFilterFactory; +HSPLorg/chromium/chrome/browser/app/tabmodel/ChromeTabModelFilterFactory;-><init>(Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/app/tabmodel/DefaultTabModelSelectorFactory; +HSPLorg/chromium/chrome/browser/app/tabmodel/DefaultTabModelSelectorFactory;-><init>()V +Lorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator; +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;-><init>()V +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;->destroy()V +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;->loadState(Z)V +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;->onNativeLibraryReady(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;->restoreTabs(Z)V +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;->saveState()V +Lorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator$1; +HSPLorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator$1;-><init>(Lorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator;)V +Lorg/chromium/chrome/browser/app/tabmodel/TabWindowManagerSingleton; +HSPLorg/chromium/chrome/browser/app/tabmodel/TabWindowManagerSingleton;->getInstance()Lorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl; +Lorg/chromium/chrome/browser/app/tabmodel/TabbedModeTabModelOrchestrator; +HSPLorg/chromium/chrome/browser/app/tabmodel/TabbedModeTabModelOrchestrator;-><init>(Z)V +Lorg/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePrompt$$ExternalSyntheticOutline0; +HSPLorg/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePrompt$$ExternalSyntheticOutline0;->m(Ljava/util/HashMap;Lorg/chromium/ui/modelutil/PropertyModel$WritableObjectPropertyKey;Lorg/chromium/ui/modelutil/PropertyModel$ObjectContainer;Ljava/util/HashMap;)Lorg/chromium/ui/modelutil/PropertyModel; +Lorg/chromium/chrome/browser/back_press/BackPressManager; +HSPLorg/chromium/chrome/browser/back_press/BackPressManager;-><init>(Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/back_press/BackPressManager;->isEnabled()Z +Lorg/chromium/chrome/browser/back_press/BackPressManager$1; +HSPLorg/chromium/chrome/browser/back_press/BackPressManager$1;-><init>(Lorg/chromium/chrome/browser/back_press/BackPressManager;)V +Lorg/chromium/chrome/browser/background_sync/GooglePlayServicesChecker; +HSPLorg/chromium/chrome/browser/background_sync/GooglePlayServicesChecker;->shouldDisableBackgroundSync()Z +Lorg/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory; +HSPLorg/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory;-><init>()V +HSPLorg/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory;->setAsDefault()V +Lorg/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory$LazyHolder; +Lorg/chromium/chrome/browser/banners/AppBannerInProductHelpController; +HSPLorg/chromium/chrome/browser/banners/AppBannerInProductHelpController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/banners/AppBannerInProductHelpControllerProvider; +Lorg/chromium/chrome/browser/base/ServiceTracingProxyProvider; +HSPLorg/chromium/chrome/browser/base/ServiceTracingProxyProvider;->create(Landroid/content/Context;)Lorg/chromium/chrome/browser/base/ServiceTracingProxyProvider; +Lorg/chromium/chrome/browser/base/SplitChromeApplication; +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication;-><init>()V +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication;->attachBaseContext(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication;->finishPreload(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication;->getResources()Landroid/content/res/Resources; +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication;->onCreate()V +Lorg/chromium/chrome/browser/base/SplitChromeApplication$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/base/SplitChromeApplication;I)V +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/base/SplitChromeApplication$1; +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication$1;-><init>(Lorg/chromium/chrome/browser/base/SplitChromeApplication;Landroid/content/Context;)V +Lorg/chromium/chrome/browser/base/SplitChromeApplication$1$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication$1$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;Landroid/os/HandlerThread;)V +HSPLorg/chromium/chrome/browser/base/SplitChromeApplication$1$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory; +HSPLorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory;-><init>()V +HSPLorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory;->getComponentClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/ClassLoader; +HSPLorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; +HSPLorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory;->instantiateProvider(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/content/ContentProvider; +HSPLorg/chromium/chrome/browser/base/SplitCompatAppComponentFactory;->instantiateReceiver(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/content/BroadcastReceiver; +Lorg/chromium/chrome/browser/base/SplitCompatApplication; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;-><init>()V +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->attachBaseContext(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->createChromeContext(Landroid/content/Context;)Landroid/content/Context; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->getImpl()Lorg/chromium/chrome/browser/base/SplitCompatApplication$Impl; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->isBrowserProcess()Z +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication;->onCreate()V +Lorg/chromium/chrome/browser/base/SplitCompatApplication$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication$$ExternalSyntheticLambda0;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/base/SplitCompatApplication$1; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication$1;-><init>()V +Lorg/chromium/chrome/browser/base/SplitCompatApplication$Impl; +HSPLorg/chromium/chrome/browser/base/SplitCompatApplication$Impl;-><init>()V +Lorg/chromium/chrome/browser/base/SplitCompatBackupAgent$Impl; +Lorg/chromium/chrome/browser/base/SplitCompatContentProvider; +HSPLorg/chromium/chrome/browser/base/SplitCompatContentProvider;-><init>()V +HSPLorg/chromium/chrome/browser/base/SplitCompatContentProvider;->onCreate()Z +Lorg/chromium/chrome/browser/base/SplitCompatIntentService$Impl; +Lorg/chromium/chrome/browser/base/SplitCompatService$Impl; +Lorg/chromium/chrome/browser/base/SplitPreloader; +HSPLorg/chromium/chrome/browser/base/SplitPreloader;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask; +HSPLorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask;-><init>(Lorg/chromium/chrome/browser/base/SplitPreloader;Lorg/chromium/chrome/browser/base/SplitChromeApplication$1;)V +HSPLorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask;->createSplitContext()Landroid/content/Context; +HSPLorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask;->finish$1()V +HSPLorg/chromium/chrome/browser/base/SplitPreloader$PreloadTask;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/battery/BatterySaverOSSetting; +HSPLorg/chromium/chrome/browser/battery/BatterySaverOSSetting;->isBatterySaverEnabled()Z +Lorg/chromium/chrome/browser/bluetooth/BluetoothNotificationManager; +HSPLorg/chromium/chrome/browser/bluetooth/BluetoothNotificationManager;->updateBluetoothNotificationForTab(Landroid/content/Context;ILorg/chromium/content_public/browser/WebContents;Lorg/chromium/url/GURL;Z)V +Lorg/chromium/chrome/browser/bookmarks/BookmarkBridge; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;-><init>(J)V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->addObserver(Lorg/chromium/chrome/browser/bookmarks/BookmarkModelObserver;)V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->bookmarkModelLoaded()V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->createBookmarkModel(J)Lorg/chromium/chrome/browser/bookmarks/BookmarkModel; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->finishLoadingBookmarkModel(Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->getUserBookmarkIdForTab(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/components/bookmarks/BookmarkId; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->isEditBookmarksEnabled()Z +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge;->removeObserver(Lorg/chromium/chrome/browser/bookmarks/BookmarkModelObserver;)V +Lorg/chromium/chrome/browser/bookmarks/BookmarkBridge$1; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge$1;-><init>(Lorg/chromium/chrome/browser/bookmarks/BookmarkBridge;)V +Lorg/chromium/chrome/browser/bookmarks/BookmarkBridge$2; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge$2;-><init>(Lorg/chromium/chrome/browser/bookmarks/BookmarkModel;JLjava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkBridge$2;->bookmarkModelLoaded()V +Lorg/chromium/chrome/browser/bookmarks/BookmarkModel; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkModel;-><init>(J)V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkModel;->getForProfile(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/chrome/browser/bookmarks/BookmarkModel; +Lorg/chromium/chrome/browser/bookmarks/BookmarkModelObserver; +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkModelObserver;-><init>()V +HSPLorg/chromium/chrome/browser/bookmarks/BookmarkModelObserver;->bookmarkModelLoaded()V +Lorg/chromium/chrome/browser/bookmarks/BookmarkUtils; +Lorg/chromium/chrome/browser/bookmarks/TabBookmarker; +HSPLorg/chromium/chrome/browser/bookmarks/TabBookmarker;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Z)V +Lorg/chromium/chrome/browser/browser_controls/BrowserControlsMarginSupplier; +Lorg/chromium/chrome/browser/browser_controls/BrowserControlsSizer; +Lorg/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider$Observer; +Lorg/chromium/chrome/browser/browser_controls/BrowserControlsUtils; +HSPLorg/chromium/chrome/browser/browser_controls/BrowserControlsUtils;->getBottomContentOffset(Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;)I +Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager; +Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate; +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;-><init>(Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;->ensureControlsVisibleForMinDuration()V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;->releasePersistentShowingToken(I)V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;->showControlsTransient()V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;->updateVisibilityConstraints()V +Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;I)V +HSPLorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorder; +HSPLorg/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorder;-><init>(Ldagger/Lazy;Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer;Lorg/chromium/chrome/browser/browserservices/metrics/TrustedWebActivityUmaRecorder;)V +PLorg/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorder;->recordDismissals(Ljava/lang/String;Z)V +Lorg/chromium/chrome/browser/browserservices/intents/BrowserServicesIntentDataProvider; +Lorg/chromium/chrome/browser/browserservices/metrics/TrustedWebActivityUmaRecorder; +HSPLorg/chromium/chrome/browser/browserservices/metrics/TrustedWebActivityUmaRecorder;-><init>(Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule$1;)V +Lorg/chromium/chrome/browser/browserservices/metrics/TrustedWebActivityUmaRecorder$DeferredTaskHandler; +Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge; +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge;->getPermissions(I)[Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge$Permission; +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge;->setInstalledWebappProvider(J)V +Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappBridge$Permission; +Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionManager; +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionManager;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore;Ldagger/Lazy;Lorg/chromium/chrome/browser/browserservices/metrics/TrustedWebActivityUmaRecorder;)V +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionManager;->get()Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionManager; +Lorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore; +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore;-><init>()V +HSPLorg/chromium/chrome/browser/browserservices/permissiondelegation/InstalledWebappPermissionStore;->getStoredOrigins()Ljava/util/HashSet; +Lorg/chromium/chrome/browser/commerce/ShoppingFeatures; +HSPLorg/chromium/chrome/browser/commerce/ShoppingFeatures;->isShoppingListEligible()Z +Lorg/chromium/chrome/browser/commerce/ShoppingServiceFactory; +HSPLorg/chromium/chrome/browser/commerce/ShoppingServiceFactory;->getForProfile(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/components/commerce/core/ShoppingService; +Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManager$SurfaceManagerCallbackTarget; +Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl; +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;-><init>(Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManager$SurfaceManagerCallbackTarget;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->attachSurfaceNow(Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->detachSurfaceLater(Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->detachSurfaceNow(Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->disownClientSurface(Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;Z)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->getStateForHolder(Landroid/view/SurfaceHolder;)Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState; +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->requestSurface(I)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->surfaceChanged(Landroid/view/SurfaceHolder;III)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->surfaceCreated(Landroid/view/SurfaceHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->surfaceDestroyed(Landroid/view/SurfaceHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl;->surfaceRedrawNeededAsync(Landroid/view/SurfaceHolder;Ljava/lang/Runnable;)V +Lorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState; +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;-><init>(Landroid/content/Context;ILandroid/view/SurfaceHolder$Callback2;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;->isAttached()Z +HSPLorg/chromium/chrome/browser/compositor/CompositorSurfaceManagerImpl$SurfaceState;->surfaceHolder()Landroid/view/SurfaceHolder; +Lorg/chromium/chrome/browser/compositor/CompositorView; +HSPLorg/chromium/chrome/browser/compositor/CompositorView;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutRenderHost;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->didSwapBuffers(Z)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->didSwapFrame(I)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->getSurfacePixelFormat()I +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->initializeIfOnUiThread()V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->onCompositorLayout()V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->onDetachedFromWindow()V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->onSelectionHandlesStateChanged(Z)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->onWindowVisibilityChanged(I)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->runDrawFinishedCallback()V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->setVisibility(I)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->surfaceChanged(Landroid/view/Surface;III)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->surfaceCreated()V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->surfaceDestroyed(Z)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->surfaceRedrawNeededAsync(Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorView;->updateNeedsDidSwapBuffersCallback()V +Lorg/chromium/chrome/browser/compositor/CompositorView$ScreenStateReceiverWorkaround; +HSPLorg/chromium/chrome/browser/compositor/CompositorView$ScreenStateReceiverWorkaround;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorView;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->clearChildFocus(Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->flushInvalidation()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getBottomControlsHeightPixels()I +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getContentView()Lorg/chromium/components/embedder_support/view/ContentView; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getCurrentTab()Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getKeyboardBottomInsetForControlsPixels()I +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getViewportSize()Landroid/graphics/Point; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getVisibleViewport(Landroid/graphics/RectF;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->getWindowViewport(Landroid/graphics/RectF;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->handleSystemUiVisibilityChange()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->handleWindowInsetChanged()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->initializeTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->invalidateAccessibilityProvider()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onDetachedFromWindow()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onSizeChanged(IIII)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->onViewportChanged()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->requestRender(Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->setSize(Lorg/chromium/content_public/browser/WebContents;Landroid/view/View;II)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->setTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->updateApplicationViewportInsetSuppliers()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->updateContentOverlayVisibility(Z)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->updateNeedsSwapBuffersCallback()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->updateViewportSize()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder;->updateVirtualKeyboardMode(I)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda1;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;I)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$$ExternalSyntheticLambda3;->run()V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$1; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$1;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$2; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$2;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$2;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$3; +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$3;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$3;->onChange()V +HSPLorg/chromium/chrome/browser/compositor/CompositorViewHolder$3;->onNewTabCreated(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$Initializer; +Lorg/chromium/chrome/browser/compositor/Invalidator; +HSPLorg/chromium/chrome/browser/compositor/Invalidator;-><init>()V +Lorg/chromium/chrome/browser/compositor/Invalidator$Host; +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager;FLorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->destroy()V +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->getHandleBackPressChangedSupplier()Lorg/chromium/base/supplier/ObservableSupplier; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->getWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->isActive()Z +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->onSizeChanged(FFFI)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->shouldHideAndroidBrowserControls()Z +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;->updateOverlay(J)Z +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel$1; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel$1;-><init>(Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel$1;->onSceneChange(Lorg/chromium/chrome/browser/compositor/layouts/Layout;)V +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/compositor/layouts/LayoutUpdateHost;F)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->getPanelHeightFromState(Ljava/lang/Integer;)F +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->getTabHeight()F +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->isFullWidthSizePanel()Z +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->isPanelOpened()Z +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->isSceneOverlayTreeShowing()Z +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelAnimation;->isShowing()Z +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager;-><init>()V +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager$1; +HSPLorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager$1;-><init>()V +Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager$OverlayPanelManagerObserver; +Lorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel; +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;FLorg/chromium/chrome/browser/toolbar/ToolbarManager;ILorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel;->closePanel(IZ)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel;->getBarHeight()F +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel;->setManagementDelegate(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;)V +Lorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelInterface; +Lorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics; +HSPLorg/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelMetrics;-><init>()V +Lorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator; +HSPLorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator;-><init>(Landroid/content/Context;Lorg/chromium/ui/base/ActivityWindowAndroid;Landroid/view/View;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController;Z)V +Lorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator$FaviconLoader; +HSPLorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator$FaviconLoader;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabMediator; +HSPLorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabMediator;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController;Lorg/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator$FaviconLoader;I)V +Lorg/chromium/chrome/browser/compositor/layouts/Layout; +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutUpdateHost;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->attachViews(Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->canHostBeFocusable()Z +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->createLayoutTab(IZ)Lorg/chromium/chrome/browser/compositor/layouts/components/LayoutTab; +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->doneHiding()V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->doneShowing()V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->forceHideBrowserControlsAndroidView()Z +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->notifySizeChanged()V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->onTabCreated(IIZZFF)V +PLorg/chromium/chrome/browser/compositor/layouts/Layout;->onTabRestored(J)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->onUpdateAnimation()Z +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->setTabContentManager(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->setTabModelSelector(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->show(JZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->startHiding(IZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->updateSnap(FFF)F +HSPLorg/chromium/chrome/browser/compositor/layouts/Layout;->updateSnap(Lorg/chromium/ui/modelutil/PropertyModel;)Z +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Landroid/view/ViewGroup;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda12;Lorg/chromium/base/jank_tracker/JankTrackerImpl;Landroid/view/ViewGroup;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->createOverviewLayout(Lorg/chromium/chrome/features/start_surface/StartSurface;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->destroy()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->doneHiding()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->getLayoutForType(I)Lorg/chromium/chrome/browser/compositor/layouts/Layout; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->getToolbarSwipeHandler()Lorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener$SwipeHandler; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->init(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/app/ChromeActivity;Lorg/chromium/chrome/browser/toolbar/ControlContainer;Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->onAccessibilityModeChanged(Z)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->setTabModelSelector(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->shouldDelayHideAnimation(Lorg/chromium/chrome/browser/compositor/layouts/Layout;)Z +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->shouldShowToolbarAnimationOnHide(Lorg/chromium/chrome/browser/compositor/layouts/Layout;I)Z +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->shouldShowToolbarAnimationOnShow(Z)Z +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->startShowing(Lorg/chromium/chrome/browser/compositor/layouts/Layout;Z)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;->tabCreated(IIIZZFF)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$1;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$ToolbarSwipeHandler; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome$ToolbarSwipeHandler;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Landroid/view/ViewGroup;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda12;Lorg/chromium/base/jank_tracker/JankTrackerImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone;->createTabModelObserver()Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone;->getLayoutForType(I)Lorg/chromium/chrome/browser/compositor/layouts/Layout; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone;->init(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/app/ChromeActivity;Lorg/chromium/chrome/browser/toolbar/ControlContainer;Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChromePhone;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerHost; +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerHost;Landroid/view/ViewGroup;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->addObserver(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->addSceneOverlay(Lorg/chromium/chrome/browser/layouts/SceneOverlay;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->destroy()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->doneHiding()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->doneShowing()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->getActiveLayoutType()I +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->getLayoutForType(I)Lorg/chromium/chrome/browser/compositor/layouts/Layout; +PLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->getNextLayoutType()I +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->getViewportPixel(Landroid/graphics/RectF;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->init(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/app/ChromeActivity;Lorg/chromium/chrome/browser/toolbar/ControlContainer;Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->initLayoutTabFromHost(I)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->isLayoutVisible(I)Z +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->onViewportChanged()V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->removeObserver(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->requestUpdate(Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->setNextLayout(Lorg/chromium/chrome/browser/compositor/layouts/Layout;Z)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->setTabModelSelector(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->showLayout(IZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->startHiding(IZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->startShowing(Lorg/chromium/chrome/browser/compositor/layouts/Layout;Z)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;->tabCreated(IIIZZFF)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;I)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$1;->onBackgroundColorChanged(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$1;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$2; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$2;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$LayoutManagerTabModelObserver;->willAddTab(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$ShowingEventSequencer; +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$ShowingEventSequencer;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$ShowingEventSequencer;->close()V +Lorg/chromium/chrome/browser/compositor/layouts/LayoutRenderHost; +Lorg/chromium/chrome/browser/compositor/layouts/LayoutUpdateHost; +Lorg/chromium/chrome/browser/compositor/layouts/SceneChangeObserver; +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerHost;Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$FrameRequestSupplier;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->destroy()V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->doneHiding()V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->doneShowing()V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->getLayoutType()I +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->getSceneLayer()Lorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->getViewportMode()I +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->setStaticTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->show(JZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->updateLayout$1()V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->updateSceneLayer(Landroid/graphics/RectF;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/ui/resources/ResourceManager;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->updateStaticTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout;->updateVisibleIdsLiveLayerOnly()V +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout;)V +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout$2; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$2;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$2;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout$3; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$3;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$3;->onBackgroundColorChanged(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$3;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$3;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout$UnstallRunnable; +HSPLorg/chromium/chrome/browser/compositor/layouts/StaticLayout$UnstallRunnable;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/StaticLayout;)V +Lorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout; +HSPLorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout;->setTabContentManager(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +Lorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout$$ExternalSyntheticLambda0;-><init>(I)V +Lorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout;I)V +HSPLorg/chromium/chrome/browser/compositor/layouts/ToolbarSwipeLayout$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/compositor/layouts/components/LayoutTab; +HSPLorg/chromium/chrome/browser/compositor/layouts/components/LayoutTab;-><init>(IIIZ)V +HSPLorg/chromium/chrome/browser/compositor/layouts/components/LayoutTab;->getId()I +HSPLorg/chromium/chrome/browser/compositor/layouts/components/LayoutTab;->init(II)V +Lorg/chromium/chrome/browser/compositor/layouts/content/ContentOffsetProvider; +Lorg/chromium/chrome/browser/compositor/layouts/content/InvalidationAwareThumbnailProvider; +Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager; +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/content/ContentOffsetProvider;ZLorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda4;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->cacheTabThumbnail(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->captureThumbnail(Lorg/chromium/chrome/browser/tab/Tab;ZLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->getIntegerResourceWithOverride(ILandroid/content/Context;Ljava/lang/String;)I +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->getNativePtr()J +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->getTabCaptureAspectRatio()D +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;->updateVisibleIds(ILjava/util/List;)V +Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler; +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler;->onTabRegistered(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManagerHandler;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/BlackHoleEventFilter; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/BlackHoleEventFilter;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureHandler;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter$1; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter$1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter$LongPressRunnable; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter$LongPressRunnable;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureEventFilter;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/GestureHandler; +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/bottombar/OverlayPanel;)V +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter;->reset()V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter$InternalGestureDetector; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter$InternalGestureDetector;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter;)V +Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter$SwipeGestureListenerImpl; +HSPLorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter$SwipeGestureListenerImpl;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter;Landroid/content/Context;)V +Lorg/chromium/chrome/browser/compositor/layouts/phone/SimpleAnimationLayout; +HSPLorg/chromium/chrome/browser/compositor/layouts/phone/SimpleAnimationLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;)V +Lorg/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager; +Lorg/chromium/chrome/browser/compositor/resources/StaticResourcePreloads; +Lorg/chromium/chrome/browser/compositor/resources/SystemResourcePreloads; +Lorg/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer; +HSPLorg/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer;-><init>(F)V +HSPLorg/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer;->initializeNative()V +Lorg/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer; +HSPLorg/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer;-><init>()V +HSPLorg/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer;->destroy()V +HSPLorg/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer;->initializeNative()V +Lorg/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer; +HSPLorg/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer;-><init>()V +HSPLorg/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer;->initializeNative()V +Lorg/chromium/chrome/browser/compositor/scene_layer/ToolbarSwipeSceneLayer; +HSPLorg/chromium/chrome/browser/compositor/scene_layer/ToolbarSwipeSceneLayer;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +HSPLorg/chromium/chrome/browser/compositor/scene_layer/ToolbarSwipeSceneLayer;->initializeNative()V +Lorg/chromium/chrome/browser/content_capture/ContentCaptureHistoryDeletionObserver; +HSPLorg/chromium/chrome/browser/content_capture/ContentCaptureHistoryDeletionObserver;-><init>(Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda2;)V +Lorg/chromium/chrome/browser/contextmenu/ChromeContextMenuItem$$ExternalSyntheticOutline0; +HSPLorg/chromium/chrome/browser/contextmenu/ChromeContextMenuItem$$ExternalSyntheticOutline0;->m(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/chromium/chrome/browser/preferences/KeyPrefix;Z)Z +Lorg/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulatorFactory; +HSPLorg/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulatorFactory;-><init>(Lorg/chromium/chrome/browser/tab/TabContextMenuItemDelegate;Lorg/chromium/base/supplier/Supplier;ILorg/chromium/components/externalauth/ExternalAuthUtils;)V +HSPLorg/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulatorFactory;->onDestroy()V +Lorg/chromium/chrome/browser/contextmenu/ContextMenuHelper; +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuHelper;-><init>(JLorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuHelper;->create(JLorg/chromium/content_public/browser/WebContents;)Lorg/chromium/chrome/browser/contextmenu/ContextMenuHelper; +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuHelper;->destroy()V +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuHelper;->dismissContextMenu()V +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuHelper;->setPopulatorFactory(Lorg/chromium/chrome/browser/contextmenu/ContextMenuPopulatorFactory;)V +Lorg/chromium/chrome/browser/contextmenu/ContextMenuItemDelegate; +Lorg/chromium/chrome/browser/contextmenu/ContextMenuPopulatorFactory; +Lorg/chromium/chrome/browser/contextmenu/ContextMenuUtils; +HSPLorg/chromium/chrome/browser/contextmenu/ContextMenuUtils;->usePopupContextMenuForContext(Landroid/content/Context;)Z +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchFieldTrial;->isEnabled()Z +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy;Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$5;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController;->enter(I)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController;->notifyFinishedWorkOn(I)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController;->reset(Ljava/lang/Integer;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateController;->transitionTo(ILjava/lang/Integer;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateHandler; +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManagementDelegate; +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$ContextualSearchTabPromotionDelegate;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->clearNativeManager()V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->getSearchPanelWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->hideContextualSearch(I)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->isSearchPanelShowing()Z +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->onAccessibilityModeChanged(Z)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;->setNativeManager(J)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$1; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$1;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$1;->onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$2; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$2;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$3; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$3;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$3;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$3;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$4; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$4;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$5; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$5;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager$ContextualSearchTabPromotionDelegate; +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator; +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController;Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchNetworkCommunicator;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy;->getPrefService()Lorg/chromium/components/prefs/PrefService; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy;->isContextualSearchEnabled()Z +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionHandler;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionHandler; +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->getContextualSearchManager(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchManager; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->getContextualSearchManagerSupplier(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/base/supplier/ObservableSupplierImpl; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->onPageLoadStarted(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->onTemplateURLServiceChanged()V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->removeContextualSearchHooks(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->updateContextualSearchHooks(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;->updateHooksForTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchTabHelper;)V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImpl; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImpl;-><init>()V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImpl$TranslateBridgeWrapper; +HSPLorg/chromium/chrome/browser/contextualsearch/ContextualSearchTranslationImpl$TranslateBridgeWrapper;-><init>()V +Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchUma; +Lorg/chromium/chrome/browser/contextualsearch/RelatedSearchesStamp; +HSPLorg/chromium/chrome/browser/contextualsearch/RelatedSearchesStamp;-><init>(Lorg/chromium/chrome/browser/contextualsearch/ContextualSearchPolicy;)V +Lorg/chromium/chrome/browser/contextualsearch/SelectionClientManager; +HSPLorg/chromium/chrome/browser/contextualsearch/SelectionClientManager;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/cookies/CookiesFetcher; +HSPLorg/chromium/chrome/browser/cookies/CookiesFetcher;->fetchFileName()Ljava/lang/String; +Lorg/chromium/chrome/browser/cookies/CookiesFetcher$2; +HSPLorg/chromium/chrome/browser/cookies/CookiesFetcher$2;-><init>()V +HSPLorg/chromium/chrome/browser/cookies/CookiesFetcher$2;->doInBackground()Ljava/lang/Object; +Lorg/chromium/chrome/browser/crash/ApplicationStatusTracker; +HSPLorg/chromium/chrome/browser/crash/ApplicationStatusTracker;-><init>()V +HSPLorg/chromium/chrome/browser/crash/ApplicationStatusTracker;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/crash/CrashUploadCountStore; +HSPLorg/chromium/chrome/browser/crash/CrashUploadCountStore;-><init>()V +HSPLorg/chromium/chrome/browser/crash/CrashUploadCountStore;->failureUploadKey(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/crash/CrashUploadCountStore;->successUploadKey(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl; +Lorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda1;-><init>()V +HSPLorg/chromium/chrome/browser/crash/MinidumpUploadServiceImpl$$ExternalSyntheticLambda1;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/crypto/CipherFactory; +HSPLorg/chromium/chrome/browser/crypto/CipherFactory;-><init>()V +HSPLorg/chromium/chrome/browser/crypto/CipherFactory;->restoreFromBundle(Landroid/os/Bundle;)Z +Lorg/chromium/chrome/browser/crypto/CipherFactory$LazyHolder; +Lorg/chromium/chrome/browser/customtabs/BaseCustomTabActivity; +Lorg/chromium/chrome/browser/customtabs/CustomTabActivity; +Lorg/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider; +Lorg/chromium/chrome/browser/customtabs/CustomTabTrustedCdnPublisherUrlVisibility; +Lorg/chromium/chrome/browser/customtabs/features/CustomTabNavigationBarController$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/customtabs/features/CustomTabNavigationBarController$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/Window;I)V +Lorg/chromium/chrome/browser/customtabs/features/branding/BrandingController; +Lorg/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbar; +Lorg/chromium/chrome/browser/datareduction/DataSaverOSSetting; +HSPLorg/chromium/chrome/browser/datareduction/DataSaverOSSetting;->isDataSaverEnabled()Z +Lorg/chromium/chrome/browser/dependency_injection/ChromeActivityCommonsModule; +HSPLorg/chromium/chrome/browser/dependency_injection/ChromeActivityCommonsModule;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$Initializer;Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/app/ChromeActivity$$ExternalSyntheticLambda6;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/share/ShareDelegateSupplier;Lorg/chromium/chrome/browser/tabmodel/TabModelInitializer;I)V +Lorg/chromium/chrome/browser/dependency_injection/ChromeActivityComponent; +Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule; +HSPLorg/chromium/chrome/browser/dependency_injection/ChromeAppModule;-><init>()V +Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule$1; +HSPLorg/chromium/chrome/browser/dependency_injection/ChromeAppModule$1;-><init>(Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule;)V +Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule_ProvideContextFactory; +HSPLorg/chromium/chrome/browser/dependency_injection/ChromeAppModule_ProvideContextFactory;->provideContext(Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule;)Landroid/content/Context; +Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$Builder; +HSPLorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$Builder;-><init>(Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl;)V +Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl; +HSPLorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl;-><init>(Lorg/chromium/chrome/browser/dependency_injection/ChromeAppModule;Lorg/chromium/chrome/browser/AppHooksModule;)V +Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl$SwitchingProvider; +HSPLorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl$SwitchingProvider;-><init>(Lorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl;I)V +HSPLorg/chromium/chrome/browser/dependency_injection/DaggerChromeAppComponent$ChromeAppComponentImpl$SwitchingProvider;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIPHController; +HSPLorg/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIPHController;->create(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/profiles/Profile;Landroid/widget/ImageButton;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;D)Lorg/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIPHController; +Lorg/chromium/chrome/browser/device/DeviceClassManager; +HSPLorg/chromium/chrome/browser/device/DeviceClassManager;-><init>()V +HSPLorg/chromium/chrome/browser/device/DeviceClassManager;->enableAccessibilityLayout(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/device/DeviceClassManager;->enableAnimations()Z +HSPLorg/chromium/chrome/browser/device/DeviceClassManager;->getInstance()Lorg/chromium/chrome/browser/device/DeviceClassManager; +Lorg/chromium/chrome/browser/directactions/DirectActionInitializer; +HSPLorg/chromium/chrome/browser/directactions/DirectActionInitializer;-><init>(ILorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/findinpage/FindToolbarManager;)V +HSPLorg/chromium/chrome/browser/directactions/DirectActionInitializer;->onDestroy()V +HSPLorg/chromium/chrome/browser/directactions/DirectActionInitializer;->onFinishNativeInitialization()V +Lorg/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils; +HSPLorg/chromium/chrome/browser/dom_distiller/DomDistillerTabUtils;->getDistillerHeuristics()I +Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager; +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->destroy()V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->isEnabled()Z +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->onLoadUrl(ILorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/content_public/browser/LoadUrlParams;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;->tryShowingPrompt()V +Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$2; +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$2;-><init>(Lorg/chromium/chrome/browser/dom_distiller/ReaderModeManager;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$2;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$2;->didStartNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeManager$2;->navigationEntryCommitted(Lorg/chromium/content_public/browser/LoadCommittedDetails;)V +Lorg/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController; +HSPLorg/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/ui/modaldialog/ModalDialogManager;Landroid/graphics/drawable/Drawable;)V +Lorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider; +HSPLorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider;->destroy()V +HSPLorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider;->resetState()V +Lorg/chromium/chrome/browser/dom_distiller/TabDistillabilityProvider$DistillabilityObserver; +Lorg/chromium/chrome/browser/download/DownloadController$Observer; +Lorg/chromium/chrome/browser/download/DownloadDelegateImpl; +HSPLorg/chromium/chrome/browser/download/DownloadDelegateImpl;-><init>()V +PLorg/chromium/chrome/browser/download/DownloadDelegateImpl;->isDownloadOnSDCard(Ljava/lang/String;)Z +Lorg/chromium/chrome/browser/download/DownloadDialogBridge; +HSPLorg/chromium/chrome/browser/download/DownloadDialogBridge;-><init>(JLorg/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator;)V +HSPLorg/chromium/chrome/browser/download/DownloadDialogBridge;->create(J)Lorg/chromium/chrome/browser/download/DownloadDialogBridge; +PLorg/chromium/chrome/browser/download/DownloadDirectoryProvider;->isDownloadOnSDCard(Ljava/lang/String;)Z +Lorg/chromium/chrome/browser/download/DownloadFileProvider; +HSPLorg/chromium/chrome/browser/download/DownloadFileProvider;-><init>()V +HSPLorg/chromium/chrome/browser/download/DownloadFileProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V +Lorg/chromium/chrome/browser/download/DownloadForegroundServiceManager; +HSPLorg/chromium/chrome/browser/download/DownloadForegroundServiceManager;-><init>()V +Lorg/chromium/chrome/browser/download/DownloadForegroundServiceManager$1; +HSPLorg/chromium/chrome/browser/download/DownloadForegroundServiceManager$1;-><init>(Lorg/chromium/chrome/browser/download/DownloadForegroundServiceManager;)V +Lorg/chromium/chrome/browser/download/DownloadForegroundServiceManager$2; +HSPLorg/chromium/chrome/browser/download/DownloadForegroundServiceManager$2;-><init>(Lorg/chromium/chrome/browser/download/DownloadForegroundServiceManager;)V +Lorg/chromium/chrome/browser/download/DownloadManagerService; +HSPLorg/chromium/chrome/browser/download/DownloadManagerService;-><init>(Lorg/chromium/chrome/browser/download/SystemDownloadNotifier;Landroid/os/Handler;)V +HSPLorg/chromium/chrome/browser/download/DownloadManagerService;->getDownloadManagerService()Lorg/chromium/chrome/browser/download/DownloadManagerService; +HSPLorg/chromium/chrome/browser/download/DownloadManagerService;->getNativeDownloadManagerService()J +Lorg/chromium/chrome/browser/download/DownloadMessageBridge; +HSPLorg/chromium/chrome/browser/download/DownloadMessageBridge;-><init>(J)V +HSPLorg/chromium/chrome/browser/download/DownloadMessageBridge;->create(J)Lorg/chromium/chrome/browser/download/DownloadMessageBridge; +Lorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl; +HSPLorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl;-><init>(Lorg/chromium/chrome/browser/app/download/DownloadMessageUiDelegate;)V +Lorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl;)V +HSPLorg/chromium/chrome/browser/download/DownloadMessageUiControllerImpl$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/download/DownloadNotificationService; +HSPLorg/chromium/chrome/browser/download/DownloadNotificationService;-><init>()V +HSPLorg/chromium/chrome/browser/download/DownloadNotificationService;->cancelOffTheRecordDownloads()V +Lorg/chromium/chrome/browser/download/DownloadNotificationService$LazyHolder; +Lorg/chromium/chrome/browser/download/DownloadServiceDelegate; +Lorg/chromium/chrome/browser/download/DownloadSharedPreferenceHelper; +HSPLorg/chromium/chrome/browser/download/DownloadSharedPreferenceHelper;-><init>()V +Lorg/chromium/chrome/browser/download/DownloadSharedPreferenceHelper$LazyHolder; +Lorg/chromium/chrome/browser/download/DownloadSnackbarController; +HSPLorg/chromium/chrome/browser/download/DownloadSnackbarController;-><init>()V +Lorg/chromium/chrome/browser/download/DownloadUtils; +HSPLorg/chromium/chrome/browser/download/DownloadUtils;->isAllowedToDownloadPage(Lorg/chromium/chrome/browser/tab/Tab;)Z +Lorg/chromium/chrome/browser/download/OMADownloadHandler; +HSPLorg/chromium/chrome/browser/download/OMADownloadHandler;-><init>(Landroid/content/Context;)V +PLorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider;-><init>()V +PLorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider;->getInstance()Lorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider; +PLorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider;->onItemsAdded(Ljava/util/List;)V +PLorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider;)V +PLorg/chromium/chrome/browser/download/OfflineContentAvailabilityStatusProvider$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/download/SystemDownloadNotifier; +HSPLorg/chromium/chrome/browser/download/SystemDownloadNotifier;-><init>()V +Lorg/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator; +HSPLorg/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator;-><init>()V +Lorg/chromium/chrome/browser/download/items/OfflineContentAggregatorFactory; +HSPLorg/chromium/chrome/browser/download/items/OfflineContentAggregatorFactory;->get()Lorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge; +Lorg/chromium/chrome/browser/download/items/OfflineContentAggregatorNotificationBridgeUi; +HSPLorg/chromium/chrome/browser/download/items/OfflineContentAggregatorNotificationBridgeUi;-><init>(Lorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge;Lorg/chromium/chrome/browser/download/SystemDownloadNotifier;)V +Lorg/chromium/chrome/browser/download/items/OfflineContentAggregatorNotificationBridgeUiFactory; +HSPLorg/chromium/chrome/browser/download/items/OfflineContentAggregatorNotificationBridgeUiFactory;->instance()Lorg/chromium/chrome/browser/download/items/OfflineContentAggregatorNotificationBridgeUi; +Lorg/chromium/chrome/browser/download/service/DownloadTaskScheduler; +HSPLorg/chromium/chrome/browser/download/service/DownloadTaskScheduler;->cancelTask(I)V +HPLorg/chromium/chrome/browser/download/service/DownloadTaskScheduler;->scheduleTask(IZZIJJ)V +Lorg/chromium/chrome/browser/dragdrop/ChromeDragAndDropBrowserDelegate; +HSPLorg/chromium/chrome/browser/dragdrop/ChromeDragAndDropBrowserDelegate;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo;-><init>()V +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo;->getInstance()Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo;->getManagedStateForNative()V +Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo$OwnedState; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfo$OwnedState;-><init>(ZZ)V +Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl;-><init>()V +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl;->getDeviceEnterpriseInfo(Lorg/chromium/base/Callback;)V +PLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl;->logDeviceEnterpriseInfo()V +PLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl;Lorg/chromium/base/Callback;)V +PLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$$ExternalSyntheticLambda0;->run()V +PLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$$ExternalSyntheticLambda2;-><init>()V +PLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$1; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$1;-><init>(Lorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl;)V +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$1;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/enterprise/util/EnterpriseInfoImpl$1;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl; +HSPLorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl;->shouldDisableExternalIntentRequestsForUrl(Lorg/chromium/url/GURL;)Z +Lorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl$1; +HSPLorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl$1;-><init>(Lorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl;)V +HSPLorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler; +HSPLorg/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler;-><init>()V +HSPLorg/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler;->getInstance()Lorg/chromium/chrome/browser/externalnav/IntentWithRequestMetadataHandler; +Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorDelegate; +Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl; +HSPLorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl;-><init>(Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorDelegate;)V +Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl$ScreenshotMonitorContentObserver; +HSPLorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl$ScreenshotMonitorContentObserver;-><init>(Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl;Lorg/chromium/chrome/browser/feature_engagement/ScreenshotMonitorImpl;)V +Lorg/chromium/chrome/browser/feature_engagement/TrackerFactory; +HSPLorg/chromium/chrome/browser/feature_engagement/TrackerFactory;->getTrackerForProfile(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/components/feature_engagement/Tracker; +Lorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationGuideBridge; +Lorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationGuideService$Delegate; +Lorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationUtils; +HSPLorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationUtils;->getIPHFeatureForNotificationFeatureType(I)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationUtils;->registerIPHCallback(ILjava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/feature_guide/notifications/FeatureNotificationUtils;->unregisterIPHCallback(I)V +Lorg/chromium/chrome/browser/feed/FeedFeatures; +Lorg/chromium/chrome/browser/feed/FeedPlaceholderLayout; +Lorg/chromium/chrome/browser/feed/FeedStreamViewResizer; +HSPLorg/chromium/chrome/browser/feed/FeedStreamViewResizer;-><init>(Landroid/app/Activity;Landroid/view/ViewGroup;Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;II)V +HSPLorg/chromium/chrome/browser/feed/FeedStreamViewResizer;->createAndAttach(Landroid/app/Activity;Landroid/view/ViewGroup;Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;)V +Lorg/chromium/chrome/browser/feed/FeedSurfaceDelegate; +Lorg/chromium/chrome/browser/feed/FeedSurfaceTracker; +HSPLorg/chromium/chrome/browser/feed/FeedSurfaceTracker;-><init>()V +HSPLorg/chromium/chrome/browser/feed/FeedSurfaceTracker;->getInstance()Lorg/chromium/chrome/browser/feed/FeedSurfaceTracker; +Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout; +HSPLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;->create(Landroid/app/Activity;)Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout; +HSPLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;->onWindowVisibilityChanged(I)V +Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout$1; +HSPLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout$1;-><init>(Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout$2; +HSPLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout$2;-><init>(Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;)V +Lorg/chromium/chrome/browser/feed/ScrollListener; +Lorg/chromium/chrome/browser/feed/ScrollableContainerDelegate; +Lorg/chromium/chrome/browser/feed/webfeed/WebFeedSnackbarController$FeedLauncher; +Lorg/chromium/chrome/browser/findinpage/FindToolbarManager; +HSPLorg/chromium/chrome/browser/findinpage/FindToolbarManager;-><init>(Landroid/view/ViewStub;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/toolbar/top/ToolbarActionModeCallback;Lorg/chromium/chrome/browser/back_press/BackPressManager;)V +Lorg/chromium/chrome/browser/findinpage/FindToolbarObserver; +Lorg/chromium/chrome/browser/firstrun/FirstRunFlowSequencer; +HSPLorg/chromium/chrome/browser/firstrun/FirstRunFlowSequencer;->checkIfFirstRunIsNecessary(Landroid/content/Intent;Z)Z +HSPLorg/chromium/chrome/browser/firstrun/FirstRunFlowSequencer;->checkIfFirstRunIsNecessary(ZZ)Z +HSPLorg/chromium/chrome/browser/firstrun/FirstRunFlowSequencer;->launch(Landroid/content/Context;Landroid/content/Intent;Z)Z +Lorg/chromium/chrome/browser/firstrun/FirstRunSignInProcessor; +HSPLorg/chromium/chrome/browser/firstrun/FirstRunSignInProcessor;->openSyncSettingsIfScheduled(Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/firstrun/FirstRunStatus; +HSPLorg/chromium/chrome/browser/firstrun/FirstRunStatus;->getFirstRunFlowComplete()Z +Lorg/chromium/chrome/browser/flags/AllCachedFieldTrialParameters; +HSPLorg/chromium/chrome/browser/flags/AllCachedFieldTrialParameters;-><init>()V +HSPLorg/chromium/chrome/browser/flags/AllCachedFieldTrialParameters;->cacheToDisk()V +Lorg/chromium/chrome/browser/flags/BooleanCachedFieldTrialParameter; +HSPLorg/chromium/chrome/browser/flags/BooleanCachedFieldTrialParameter;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLorg/chromium/chrome/browser/flags/BooleanCachedFieldTrialParameter;->cacheToDisk()V +HSPLorg/chromium/chrome/browser/flags/BooleanCachedFieldTrialParameter;->getValue()Z +Lorg/chromium/chrome/browser/flags/CachedFeatureFlags; +HSPLorg/chromium/chrome/browser/flags/CachedFeatureFlags;->cacheNativeFlags(Ljava/util/List;)V +HSPLorg/chromium/chrome/browser/flags/CachedFeatureFlags;->getConsistentBooleanValue(Ljava/lang/String;Z)Z +HSPLorg/chromium/chrome/browser/flags/CachedFeatureFlags;->getReachedCodeProfilerTrialGroup()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/flags/CachedFeatureFlags;->isEnabled(Ljava/lang/String;Z)Z +Lorg/chromium/chrome/browser/flags/CachedFieldTrialParameter; +HSPLorg/chromium/chrome/browser/flags/CachedFieldTrialParameter;-><init>(Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/flags/CachedFieldTrialParameter;->getSharedPreferenceKey()Ljava/lang/String; +Lorg/chromium/chrome/browser/flags/CachedFlag; +HSPLorg/chromium/chrome/browser/flags/CachedFlag;-><init>(Ljava/lang/String;Z)V +HSPLorg/chromium/chrome/browser/flags/CachedFlag;->isEnabled()Z +Lorg/chromium/chrome/browser/flags/CachedFlagsSafeMode; +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;->-$$Nest$mwriteSafeValues(Lorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;Lorg/chromium/chrome/browser/flags/ValuesReturned;)V +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;-><init>()V +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;->getSafeValuePreferences()Landroid/content/SharedPreferences; +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;->isSafeModeExperimentEnabled()Z +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;->onFlagChecked()V +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;->shouldEnterSafeMode()Z +Lorg/chromium/chrome/browser/flags/CachedFlagsSafeMode$1; +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode$1;-><init>(Lorg/chromium/chrome/browser/flags/CachedFlagsSafeMode;Lorg/chromium/chrome/browser/flags/ValuesReturned;)V +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode$1;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/flags/CachedFlagsSafeMode$1;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/flags/ChromeFeatureList; +Lorg/chromium/chrome/browser/flags/DoubleCachedFieldTrialParameter; +HSPLorg/chromium/chrome/browser/flags/DoubleCachedFieldTrialParameter;-><init>(Ljava/lang/String;Ljava/lang/String;D)V +HSPLorg/chromium/chrome/browser/flags/DoubleCachedFieldTrialParameter;->cacheToDisk()V +HSPLorg/chromium/chrome/browser/flags/DoubleCachedFieldTrialParameter;->getValue()D +Lorg/chromium/chrome/browser/flags/IntCachedFieldTrialParameter; +HSPLorg/chromium/chrome/browser/flags/IntCachedFieldTrialParameter;-><init>(ILjava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/flags/IntCachedFieldTrialParameter;->cacheToDisk()V +HSPLorg/chromium/chrome/browser/flags/IntCachedFieldTrialParameter;->getValue()I +Lorg/chromium/chrome/browser/flags/MutableFlagWithSafeDefault; +HSPLorg/chromium/chrome/browser/flags/MutableFlagWithSafeDefault;-><init>(Ljava/lang/String;Z)V +HSPLorg/chromium/chrome/browser/flags/MutableFlagWithSafeDefault;->isEnabled()Z +Lorg/chromium/chrome/browser/flags/PostNativeFlag; +HSPLorg/chromium/chrome/browser/flags/PostNativeFlag;-><init>()V +HSPLorg/chromium/chrome/browser/flags/PostNativeFlag;->isEnabled()Z +Lorg/chromium/chrome/browser/flags/StringCachedFieldTrialParameter; +HSPLorg/chromium/chrome/browser/flags/StringCachedFieldTrialParameter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/flags/StringCachedFieldTrialParameter;->cacheToDisk()V +HSPLorg/chromium/chrome/browser/flags/StringCachedFieldTrialParameter;->getValue()Ljava/lang/String; +Lorg/chromium/chrome/browser/flags/ValuesOverridden; +HSPLorg/chromium/chrome/browser/flags/ValuesOverridden;-><init>()V +Lorg/chromium/chrome/browser/flags/ValuesReturned; +HSPLorg/chromium/chrome/browser/flags/ValuesReturned;-><init>()V +Lorg/chromium/chrome/browser/fonts/FontPreloader; +HSPLorg/chromium/chrome/browser/fonts/FontPreloader;-><init>()V +HSPLorg/chromium/chrome/browser/fonts/FontPreloader;->getInstance()Lorg/chromium/chrome/browser/fonts/FontPreloader; +HSPLorg/chromium/chrome/browser/fonts/FontPreloader;->onFirstDraw(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/fonts/FontPreloader;->onPostInflationStartup(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/fonts/FontPreloader$OnFontCallback; +HSPLorg/chromium/chrome/browser/fonts/FontPreloader$OnFontCallback;-><init>(Lorg/chromium/chrome/browser/fonts/FontPreloader;)V +HSPLorg/chromium/chrome/browser/fonts/FontPreloader$OnFontCallback;->onFontRetrievalFailed(I)V +HSPLorg/chromium/chrome/browser/fonts/FontPreloader$OnFontCallback;->onFontRetrieved(Landroid/graphics/Typeface;)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->-$$Nest$monOffsetsChanged(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;IIIII)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->addObserver(Lorg/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider$Observer;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->getBottomControlOffset()I +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->initialize(Lorg/chromium/chrome/browser/toolbar/ControlContainer;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;I)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->removeObserver(Lorg/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider$Observer;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->scheduleVisibilityUpdate()V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->setBottomControlsHeight(II)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->setPositionsForTab(IIIII)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->setPositionsForTabToNonFullscreen()V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->shouldShowAndroidControls()Z +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->showAndroidControls(Z)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;->updateBrowserControlsOffsets(ZIIIII)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$1; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$1;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$2; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$2;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$2;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$3; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$3;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$3;->onBrowserControlsOffsetChanged(Lorg/chromium/chrome/browser/tab/TabImpl;IIIII)V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager$3;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManagerSupplier; +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManagerSupplier;-><init>()V +HSPLorg/chromium/chrome/browser/fullscreen/BrowserControlsManagerSupplier;->getValueOrNullFrom(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager; +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->addObserver(Lorg/chromium/chrome/browser/fullscreen/FullscreenManager$Observer;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->createAndShowNotificationToast()V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->exitPersistentFullscreenMode()V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->getPersistentFullscreenMode()Z +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->hideImmediatelyNotificationToast()V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->onWindowFocusChanged(Landroid/app/Activity;Z)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->removeObserver(Lorg/chromium/chrome/browser/fullscreen/FullscreenManager$Observer;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->setContentView(Lorg/chromium/components/embedder_support/view/ContentView;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;->updateMultiTouchZoomSupport(Z)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;I)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$1; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$1;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$2; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$2;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$2;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$3; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$3;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$3;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$3;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$3;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$FullscreenHandler; +HSPLorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler$FullscreenHandler;-><init>(Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;)V +Lorg/chromium/chrome/browser/fullscreen/FullscreenManager; +Lorg/chromium/chrome/browser/fullscreen/FullscreenManager$Observer; +Lorg/chromium/chrome/browser/gesturenav/GestureNavigationProperties; +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;-><init>()V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;->isFeatureEnabled()Z +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;->updateNavigationHandler()V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;)V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;I)V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;)V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda3;-><init>()V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$1; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$1;-><init>(Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator;)V +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationLayout; +HSPLorg/chromium/chrome/browser/gesturenav/HistoryNavigationLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationCoordinator$$ExternalSyntheticLambda1;)V +Lorg/chromium/chrome/browser/gesturenav/NavigationGlow; +HSPLorg/chromium/chrome/browser/gesturenav/NavigationGlow;-><init>(Landroid/view/ViewGroup;)V +Lorg/chromium/chrome/browser/gesturenav/NavigationHandler; +HSPLorg/chromium/chrome/browser/gesturenav/NavigationHandler;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/gesturenav/HistoryNavigationLayout;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$2;)V +HSPLorg/chromium/chrome/browser/gesturenav/NavigationHandler;->reset()V +Lorg/chromium/chrome/browser/gesturenav/NavigationHandler$1; +HSPLorg/chromium/chrome/browser/gesturenav/NavigationHandler$1;-><init>(Lorg/chromium/chrome/browser/gesturenav/NavigationHandler;)V +Lorg/chromium/chrome/browser/gesturenav/NavigationHandler$SideNavGestureListener; +HSPLorg/chromium/chrome/browser/gesturenav/NavigationHandler$SideNavGestureListener;-><init>(Lorg/chromium/chrome/browser/gesturenav/NavigationHandler;)V +Lorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay; +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;Landroid/view/ViewGroup;Lorg/chromium/base/CallbackController$CancelableRunnable;)V +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;->isSceneOverlayTreeShowing()Z +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;->onSizeChanged(FFFI)V +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;->shouldHideAndroidBrowserControls()Z +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollGlowOverlay;->updateOverlay(J)Z +Lorg/chromium/chrome/browser/gesturenav/OverscrollSceneLayer; +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollSceneLayer;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollSceneLayer;->destroy()V +HSPLorg/chromium/chrome/browser/gesturenav/OverscrollSceneLayer;->initializeNative()V +PLorg/chromium/chrome/browser/gsa/GSAAccountChangeListener;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/gsa/GSAHelper;)V +PLorg/chromium/chrome/browser/gsa/GSAAccountChangeListener$1;-><init>(Lorg/chromium/chrome/browser/gsa/GSAAccountChangeListener;Lorg/chromium/chrome/browser/gsa/GSAHelper;)V +PLorg/chromium/chrome/browser/gsa/GSAAccountChangeListener$2;-><init>(Lorg/chromium/chrome/browser/gsa/GSAAccountChangeListener;)V +PLorg/chromium/chrome/browser/gsa/GSAAccountChangeListener$AccountChangeBroadcastReceiver;-><init>()V +PLorg/chromium/chrome/browser/gsa/GSAHelper;-><init>()V +PLorg/chromium/chrome/browser/gsa/GSAServiceClient;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/gsa/GSAAccountChangeListener$2;Lorg/chromium/chrome/browser/gsa/GSAHelper;)V +PLorg/chromium/chrome/browser/gsa/GSAServiceClient;->connect()V +PLorg/chromium/chrome/browser/gsa/GSAServiceClient$GSAServiceConnection;-><init>(Lorg/chromium/chrome/browser/gsa/GSAServiceClient;)V +PLorg/chromium/chrome/browser/gsa/GSAServiceClient$GSAServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V +PLorg/chromium/chrome/browser/gsa/GSAServiceClient$IncomingHandler;-><init>(Lorg/chromium/chrome/browser/gsa/GSAServiceClient;)V +Lorg/chromium/chrome/browser/gsa/GSAState; +HSPLorg/chromium/chrome/browser/gsa/GSAState;-><init>()V +HSPLorg/chromium/chrome/browser/gsa/GSAState;->getInstance()Lorg/chromium/chrome/browser/gsa/GSAState; +PLorg/chromium/chrome/browser/gsa/GSAState;->isAgsaVersionBelowMinimum(Ljava/lang/String;Ljava/lang/String;)Z +HSPLorg/chromium/chrome/browser/gsa/GSAState;->isGsaAvailable()Z +Lorg/chromium/chrome/browser/history/HistoryDeletionBridge; +HSPLorg/chromium/chrome/browser/history/HistoryDeletionBridge;-><init>()V +Lorg/chromium/chrome/browser/history_clusters/HistoryClustersDelegate; +Lorg/chromium/chrome/browser/homepage/HomepageManager; +HSPLorg/chromium/chrome/browser/homepage/HomepageManager;-><init>()V +HSPLorg/chromium/chrome/browser/homepage/HomepageManager;->getDefaultHomepageUri()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/homepage/HomepageManager;->getHomepageUri()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/homepage/HomepageManager;->getInstance()Lorg/chromium/chrome/browser/homepage/HomepageManager; +HSPLorg/chromium/chrome/browser/homepage/HomepageManager;->isHomepageEnabled()Z +Lorg/chromium/chrome/browser/homepage/HomepagePolicyManager; +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager;-><init>()V +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager;->getInstance()Lorg/chromium/chrome/browser/homepage/HomepagePolicyManager; +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager;->isHomepageManagedByPolicy()Z +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager;->refresh()V +Lorg/chromium/chrome/browser/homepage/HomepagePolicyManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/homepage/HomepagePolicyManager;)V +HSPLorg/chromium/chrome/browser/homepage/HomepagePolicyManager$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController; +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->addObserver(Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider$ButtonDataObserver;)V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->destroy()V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/toolbar/ButtonDataImpl; +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->notifyObservers(Z)V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController;->removeObserver(Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider$ButtonDataObserver;)V +Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController;)V +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/identity_disc/IdentityDiscController$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController;)V +Lorg/chromium/chrome/browser/incognito/IncognitoNotificationManager; +HSPLorg/chromium/chrome/browser/incognito/IncognitoNotificationManager;->dismissIncognitoNotification()V +Lorg/chromium/chrome/browser/incognito/IncognitoNotificationPresenceController; +HSPLorg/chromium/chrome/browser/incognito/IncognitoNotificationPresenceController;-><init>()V +Lorg/chromium/chrome/browser/incognito/IncognitoProfileDestroyer; +HSPLorg/chromium/chrome/browser/incognito/IncognitoProfileDestroyer;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +Lorg/chromium/chrome/browser/incognito/IncognitoSnapshotController; +HSPLorg/chromium/chrome/browser/incognito/IncognitoSnapshotController;-><init>(Landroid/view/Window;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/incognito/IncognitoSnapshotController;->onChange()V +HSPLorg/chromium/chrome/browser/incognito/IncognitoSnapshotController;->updateIncognitoTabSnapshotState()V +Lorg/chromium/chrome/browser/incognito/IncognitoTabLauncher; +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabLauncher;->didCreateIntent(Landroid/content/Intent;)Z +PLorg/chromium/chrome/browser/incognito/IncognitoTabLauncher;->setComponentEnabled(Z)V +PLorg/chromium/chrome/browser/incognito/IncognitoTabLauncher$$ExternalSyntheticLambda0;-><init>(Z)V +PLorg/chromium/chrome/browser/incognito/IncognitoTabLauncher$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController; +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController;-><init>(Landroid/view/Window;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerChrome;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController;->onDestroy()V +Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda0;-><init>(ILorg/chromium/ui/util/AccessibilityUtil$Observer;)V +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$1; +HSPLorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController$1;-><init>(Lorg/chromium/chrome/browser/incognito/IncognitoTabbedSnapshotController;)V +Lorg/chromium/chrome/browser/incognito/IncognitoUtils; +HSPLorg/chromium/chrome/browser/incognito/IncognitoUtils;->getProfileFromWindowAndroid(Lorg/chromium/ui/base/WindowAndroid;Z)Lorg/chromium/chrome/browser/profiles/Profile; +Lorg/chromium/chrome/browser/incognito/reauth/IncognitoReauthManager; +HSPLorg/chromium/chrome/browser/incognito/reauth/IncognitoReauthManager;->isIncognitoReauthFeatureAvailable()Z +Lorg/chromium/chrome/browser/infobar/IPHBubbleDelegateImpl; +HSPLorg/chromium/chrome/browser/infobar/IPHBubbleDelegateImpl;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/infobar/IPHInfoBarSupport; +HSPLorg/chromium/chrome/browser/infobar/IPHInfoBarSupport;-><init>(Lorg/chromium/chrome/browser/infobar/IPHBubbleDelegateImpl;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->-$$Nest$mupdateWebContents(Lorg/chromium/chrome/browser/infobar/InfoBarContainer;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->destroy()V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->destroyContainerView()V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/infobar/InfoBarContainer; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->initializeContainerView(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer;->setHidden(Z)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$$ExternalSyntheticLambda0;->onAccessibilityModeChanged(Z)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$1; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$1;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainer;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$1;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$1;->onDidStartNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$2; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$2;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainer;I)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$2;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$2;->onViewDetachedFromWindow(Landroid/view/View;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$3; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$3;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainer;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$4; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$4;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainer;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$5$1; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainer$5$1;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainer$2;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainer$InfoBarContainerObserver; +Lorg/chromium/chrome/browser/infobar/InfoBarContainerView; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/infobar/InfoBarContainer$3;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Z)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView;->addToParentView()V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView;->runUpEventAnimation(Z)V +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView;->setTranslationY(F)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainerView$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainerView;)V +Lorg/chromium/chrome/browser/infobar/InfoBarContainerView$1; +HSPLorg/chromium/chrome/browser/infobar/InfoBarContainerView$1;-><init>(Lorg/chromium/chrome/browser/infobar/InfoBarContainerView;)V +Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl; +HSPLorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;->isActivityFinishingOrDestroyed()Z +HSPLorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;->register(Lorg/chromium/chrome/browser/lifecycle/LifecycleObserver;)V +HSPLorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;->unregister(Lorg/chromium/chrome/browser/lifecycle/LifecycleObserver;)V +Lorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/init/NativeInitializationController$1;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/init/NativeInitializationController$1;Lorg/chromium/base/library_loader/ProcessInitException;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitTaskRunner$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/init/AsyncInitializationActivity; +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;-><init>()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->applyOverrides(Landroid/content/Context;Landroid/content/res/Configuration;)Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->dispatchOnInflationComplete()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->finishNativeInitialization()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->getCurrentSmallestScreenWidth(Landroid/content/Context;)I +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->isActivityFinishingOrDestroyed()Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->isInstantStartEnabled()Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->maybePreconnect()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onCreate(Landroid/os/Bundle;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onDestroy()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onFirstDrawComplete()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onInitialLayoutInflationComplete()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onNewIntent(Landroid/content/Intent;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onPause()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onResume()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onStart()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onStop()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onStopWithNative()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->onWindowFocusChanged(Z)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->performPostInflationStartup()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->performPreInflationStartup()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->postInflationStartup()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->preInflationStartup()V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->requiresFirstRunToBeCompleted(Landroid/content/Intent;)Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->setContentViewAndLoadLibrary(Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda2;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->shouldAllocateChildConnection()Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->shouldPreferLightweightFre(Landroid/content/Intent;)Z +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity;->transformSavedInstanceStateForOnCreate(Landroid/os/Bundle;)Landroid/os/Bundle; +Lorg/chromium/chrome/browser/init/AsyncInitializationActivity$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/init/AsyncInitializationActivity;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/init/AsyncInitializationActivity$1; +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity$1;-><init>(Lorg/chromium/chrome/browser/init/AsyncInitializationActivity;Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/init/AsyncInitializationActivity$2; +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity$2;-><init>(Lorg/chromium/chrome/browser/init/AsyncInitializationActivity;)V +HSPLorg/chromium/chrome/browser/init/AsyncInitializationActivity$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/init/BrowserParts; +HSPLorg/chromium/chrome/browser/init/BrowserParts;->startMinimalBrowser()Z +Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate; +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;-><init>()V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;->getInstance()Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;->handlePostNativeStartup(ZLorg/chromium/chrome/browser/init/BrowserParts;)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;->handlePreNativeStartupAndLoadLibraries(Lorg/chromium/chrome/browser/init/BrowserParts;)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;->preInflationStartup()V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer;->runNowOrAfterFullBrowserStarted(Ljava/lang/Runnable;)V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda0;-><init>(I)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer;I)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer;Lorg/chromium/chrome/browser/init/BrowserParts;I)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/init/BrowserParts;I)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda3;->run()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda4;-><init>(I)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$$ExternalSyntheticLambda4;->run()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$2; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$2;-><init>(Lorg/chromium/chrome/browser/init/BrowserParts;Lorg/chromium/base/task/ChainedTasks;)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$2;->onSuccess()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$3; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$3;-><init>()V +Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer$4; +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$4;-><init>(Lorg/chromium/chrome/browser/init/ChromeBrowserInitializer;)V +HSPLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$4;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/init/ChromeLifetimeController; +HSPLorg/chromium/chrome/browser/init/ChromeLifetimeController;-><init>()V +Lorg/chromium/chrome/browser/init/ChromeLifetimeController$1; +HSPLorg/chromium/chrome/browser/init/ChromeLifetimeController$1;-><init>(Lorg/chromium/chrome/browser/init/ChromeLifetimeController;)V +Lorg/chromium/chrome/browser/init/NativeInitializationController; +HSPLorg/chromium/chrome/browser/init/NativeInitializationController;-><init>(Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate;)V +HSPLorg/chromium/chrome/browser/init/NativeInitializationController;->signalNativeLibraryLoadedIfReady()V +HSPLorg/chromium/chrome/browser/init/NativeInitializationController;->startBackgroundTasks(Z)V +HSPLorg/chromium/chrome/browser/init/NativeInitializationController;->startNowAndProcessPendingItems()V +Lorg/chromium/chrome/browser/init/NativeInitializationController$1; +HSPLorg/chromium/chrome/browser/init/NativeInitializationController$1;-><init>(Lorg/chromium/chrome/browser/init/NativeInitializationController;)V +HSPLorg/chromium/chrome/browser/init/NativeInitializationController$1;->tasksPossiblyComplete(Lorg/chromium/base/library_loader/ProcessInitException;)V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler;-><init>()V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler;->getInstance()Lorg/chromium/chrome/browser/init/ProcessInitializationHandler; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler;->handlePreNativeInitialization()V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler;->initializePreNative()V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler;->setProcessStateSummaryForAnrs(Z)V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda0;-><init>(I)V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorder;)V +PLorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$$ExternalSyntheticLambda2;-><init>(I)V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$1; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$1;-><init>()V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$10; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$10;-><init>()V +PLorg/chromium/chrome/browser/init/ProcessInitializationHandler$10;->run()V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$11; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$11;-><init>(Lorg/chromium/chrome/browser/init/ProcessInitializationHandler;)V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$11;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$11;->initCrashReporting()V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$11;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/init/ProcessInitializationHandler$2; +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$2;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/init/ProcessInitializationHandler$2;->run()V +Lorg/chromium/chrome/browser/init/SingleWindowKeyboardVisibilityDelegate; +HSPLorg/chromium/chrome/browser/init/SingleWindowKeyboardVisibilityDelegate;-><init>(Ljava/lang/ref/WeakReference;)V +HSPLorg/chromium/chrome/browser/init/SingleWindowKeyboardVisibilityDelegate;->isKeyboardShowing(Landroid/content/Context;Landroid/view/View;)Z +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingComponent$SoftKeyboardDelegate; +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentSupplier; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentSupplier;-><init>()V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator;-><init>()V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingCoordinator;->isFillingViewShown(Landroid/view/View;)Z +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;-><init>()V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->is(I)Z +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->isInitialized()Z +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->onLayoutChange(Landroid/view/View;IIIIIIII)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->pause()V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->refreshTabs()V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;->shouldHideOnBackPress()Z +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$1;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$2; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$2;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$3; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$3;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$4; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$4;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator$4;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingProperties; +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState$Observer; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState$Observer;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState$Observer;->wasHidden()V +Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache; +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache;-><init>()V +HSPLorg/chromium/chrome/browser/keyboard_accessory/ManualFillingStateCache;->getStateFor(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingState; +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;Lorg/chromium/ui/AsyncViewStub;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator;->skipClosingAnimationOnce()V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator;I)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$$ExternalSyntheticLambda1;-><init>(I)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$TabSwitchingDelegate; +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryCoordinator$VisibilityDelegate; +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator;Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator$1;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMediator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder$AccessoryBarObserver; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder$AccessoryBarObserver;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryMetricsRecorder$AccessoryBarObserver;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties; +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties$BarItem; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties$BarItem;-><init>(ILorg/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData$Action;)V +Lorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties$SheetOpenerBarItem; +HSPLorg/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryProperties$SheetOpenerBarItem;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator$1;)V +Lorg/chromium/chrome/browser/keyboard_accessory/data/KeyboardAccessoryData$Tab; +Lorg/chromium/chrome/browser/keyboard_accessory/data/Provider$Observer; +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator;-><init>(Lorg/chromium/ui/AsyncViewStub;)V +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetCoordinator$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator$1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator$1;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetMetricsRecorder$$ExternalSyntheticLambda0;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetProperties; +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryButtonGroupView$KeyboardAccessoryButtonGroupListener; +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator;-><init>()V +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator$1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator$1;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutCoordinator$AccessoryTabObserver; +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator; +HSPLorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;)V +HSPLorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator$1; +HSPLorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator$1;-><init>(Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutMediator;)V +Lorg/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutProperties; +Lorg/chromium/chrome/browser/language/AppLocaleUtils; +HSPLorg/chromium/chrome/browser/language/AppLocaleUtils;->getAppLanguagePref()Ljava/lang/String; +Lorg/chromium/chrome/browser/language/AppLocaleUtils$1; +HSPLorg/chromium/chrome/browser/language/AppLocaleUtils$1;-><init>()V +HSPLorg/chromium/chrome/browser/language/AppLocaleUtils$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +Lorg/chromium/chrome/browser/language/GlobalAppLocaleController; +HSPLorg/chromium/chrome/browser/language/GlobalAppLocaleController;-><init>()V +Lorg/chromium/chrome/browser/language/LanguageBridge; +HSPLorg/chromium/chrome/browser/language/LanguageBridge;->getULPLanguagesFromDevice(Ljava/lang/String;)[Ljava/lang/String; +Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor; +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder;Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$FrameRequestSupplier;)V +Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor;)V +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor;)V +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$$ExternalSyntheticLambda1;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$FrameRequestSupplier; +HSPLorg/chromium/chrome/browser/layouts/CompositorModelChangeProcessor$FrameRequestSupplier;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/layouts/EventFilter; +HSPLorg/chromium/chrome/browser/layouts/EventFilter;-><init>(Landroid/content/Context;Z)V +Lorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver; +HSPLorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver;-><init>(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;)V +HSPLorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver;->onFinishedShowing(I)V +HSPLorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver;->onStartedHiding(IZZ)V +HSPLorg/chromium/chrome/browser/layouts/FilterLayoutStateObserver;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/layouts/LayoutManagerProvider; +Lorg/chromium/chrome/browser/layouts/LayoutManagerProvider$Unowned; +Lorg/chromium/chrome/browser/layouts/LayoutStateProvider; +Lorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver; +HSPLorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;->onFinishedShowing(I)V +HSPLorg/chromium/chrome/browser/layouts/LayoutStateProvider$LayoutStateObserver;->onStartedHiding(IZZ)V +Lorg/chromium/chrome/browser/layouts/ManagedLayoutManager; +Lorg/chromium/chrome/browser/layouts/SceneOverlay; +Lorg/chromium/chrome/browser/layouts/animation/CompositorAnimationHandler; +HSPLorg/chromium/chrome/browser/layouts/animation/CompositorAnimationHandler;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/layouts/animation/CompositorAnimator; +Lorg/chromium/chrome/browser/layouts/animation/CompositorAnimator$AnimatorUpdateListener; +Lorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer; +HSPLorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;-><init>()V +HSPLorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;->getNativePtr()J +HSPLorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;->initializeNative()V +HSPLorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;->setNativePtr(J)V +Lorg/chromium/chrome/browser/layouts/scene_layer/SceneOverlayLayer; +HSPLorg/chromium/chrome/browser/layouts/scene_layer/SceneOverlayLayer;-><init>()V +Lorg/chromium/chrome/browser/lens/LensController; +HSPLorg/chromium/chrome/browser/lens/LensController;-><init>()V +Lorg/chromium/chrome/browser/lens/LensControllerDelegateImpl; +HSPLorg/chromium/chrome/browser/lens/LensControllerDelegateImpl;-><init>()V +Lorg/chromium/chrome/browser/lifecycle/ConfigurationChangedObserver; +Lorg/chromium/chrome/browser/lifecycle/DestroyObserver; +Lorg/chromium/chrome/browser/lifecycle/InflationObserver; +HSPLorg/chromium/chrome/browser/lifecycle/InflationObserver;->onInflationComplete()V +Lorg/chromium/chrome/browser/lifecycle/LifecycleObserver; +Lorg/chromium/chrome/browser/lifecycle/NativeInitObserver; +Lorg/chromium/chrome/browser/lifecycle/PauseResumeWithNativeObserver; +Lorg/chromium/chrome/browser/lifecycle/RecreateObserver; +Lorg/chromium/chrome/browser/lifecycle/SaveInstanceStateObserver; +Lorg/chromium/chrome/browser/lifecycle/StartStopWithNativeObserver; +Lorg/chromium/chrome/browser/lifecycle/WindowFocusChangedObserver; +Lorg/chromium/chrome/browser/locale/LocaleManager; +HSPLorg/chromium/chrome/browser/locale/LocaleManager;-><init>()V +HSPLorg/chromium/chrome/browser/locale/LocaleManager;->getInstance()Lorg/chromium/chrome/browser/locale/LocaleManager; +HSPLorg/chromium/chrome/browser/locale/LocaleManager;->showSearchEnginePromoIfNeeded(Landroid/app/Activity;Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/locale/LocaleManagerDelegate$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/locale/LocaleManagerDelegate$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/locale/LocaleManagerDelegateImpl;Landroid/app/Activity;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/locale/LocaleManagerDelegate$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/locale/LocaleManagerDelegate$1; +HSPLorg/chromium/chrome/browser/locale/LocaleManagerDelegate$1;-><init>(Lorg/chromium/chrome/browser/locale/LocaleManagerDelegateImpl;)V +Lorg/chromium/chrome/browser/locale/LocaleManagerDelegateImpl; +HSPLorg/chromium/chrome/browser/locale/LocaleManagerDelegateImpl;-><init>()V +Lorg/chromium/chrome/browser/logo/LogoCoordinator$VisibilityObserver; +Lorg/chromium/chrome/browser/logo/LogoView; +HSPLorg/chromium/chrome/browser/logo/LogoView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/chrome/browser/logo/LogoView$1; +HSPLorg/chromium/chrome/browser/logo/LogoView$1;-><init>(Lorg/chromium/chrome/browser/logo/LogoView;)V +Lorg/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl; +HSPLorg/chromium/chrome/browser/media/MediaCaptureNotificationServiceImpl;->updateMediaNotificationForTab(Landroid/content/Context;ILorg/chromium/content_public/browser/WebContents;Lorg/chromium/url/GURL;)V +PLorg/chromium/chrome/browser/media/MediaViewerUtils;->shouldEnableMediaLauncherActivity()Z +PLorg/chromium/chrome/browser/media/MediaViewerUtils$$ExternalSyntheticLambda0;-><init>()V +PLorg/chromium/chrome/browser/media/MediaViewerUtils$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/media/router/ChromeMediaRouterClient; +HSPLorg/chromium/chrome/browser/media/router/ChromeMediaRouterClient;-><init>()V +HSPLorg/chromium/chrome/browser/media/router/ChromeMediaRouterClient;->initialize()V +Lorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper; +HSPLorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper;->maybeCreateOrUpdateMediaSessionHelper()V +Lorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper$1; +HSPLorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper$1;-><init>(Lorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper;)V +HSPLorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper$1;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustBottomSheetCoordinator; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustBottomSheetCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Landroid/view/View;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;Lorg/chromium/ui/base/IntentRequestTrackerImpl;Lorg/chromium/base/supplier/ObservableSupplier;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustBottomSheetMediator; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustBottomSheetMediator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ui/favicon/FaviconHelper;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageScheduler;-><init>(Lorg/chromium/components/messages/MessageDispatcher;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMessageViewModel$MessageActionsHandler; +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;-><init>()V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;->finishRecordingMessageImpact()V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Landroid/view/View;Lorg/chromium/components/messages/MessageDispatcher;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;Lorg/chromium/ui/base/IntentRequestTrackerImpl;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator$OmniboxIconController; +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsDataProvider;-><init>()V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventStorage; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventStorage;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsEventStorage;->setNativePtr(J)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator$1; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator$1;-><init>(Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustMetrics;Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsCoordinator$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsMediator$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;)V +Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory;)V +HSPLorg/chromium/chrome/browser/merchant_viewer/MerchantTrustSignalsStorageFactory$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/merchant_viewer/PageInfoStoreInfoController$StoreInfoActionHandler; +Lorg/chromium/chrome/browser/messages/ChromeMessageAutodismissDurationProvider; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageAutodismissDurationProvider;-><init>()V +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/messages/MessageContainerCoordinator;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/components/messages/MessageDispatcherImpl;)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;->setLayoutStateProvider(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider;)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;->suspendQueue()I +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;I)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$1; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$1;-><init>(Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$1;->onFinishedShowing(I)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$1;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$2; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$2;-><init>(Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;)V +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$3; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$3;-><init>(Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;)V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$3;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$3;->onResumeWithNative()V +Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$BrowserControlsObserver; +HSPLorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator$BrowserControlsObserver;-><init>(Lorg/chromium/chrome/browser/messages/ChromeMessageQueueMediator;)V +Lorg/chromium/chrome/browser/messages/MessageContainerCoordinator; +HSPLorg/chromium/chrome/browser/messages/MessageContainerCoordinator;-><init>(Lorg/chromium/components/messages/MessageContainer;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;)V +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$1; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$1;-><init>(Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$2; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$2;-><init>(Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;)V +Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$PageLoadMetricsObserverImpl; +HSPLorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker$PageLoadMetricsObserverImpl;-><init>(Lorg/chromium/chrome/browser/metrics/ActivityTabStartupMetricsTracker;)V +Lorg/chromium/chrome/browser/metrics/LaunchMetrics; +Lorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics; +HSPLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics;-><init>()V +PLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics;->logLaunchBehavior(Z)V +Lorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics;)V +PLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda1;-><init>()V +HSPLorg/chromium/chrome/browser/metrics/MainIntentBehaviorMetrics$$ExternalSyntheticLambda1;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/metrics/PackageMetrics; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics;->recordPackageStats()V +Lorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m$1(Landroid/app/usage/StorageStats;)J +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m$2(Landroid/app/usage/StorageStats;)J +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m()Ljava/util/UUID; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/usage/StorageStats;)J +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/usage/StorageStatsManager;Ljava/util/UUID;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/app/usage/StorageStatsManager; +Lorg/chromium/chrome/browser/metrics/PackageMetrics$PackageMetricsData; +HSPLorg/chromium/chrome/browser/metrics/PackageMetrics$PackageMetricsData;-><init>()V +Lorg/chromium/chrome/browser/metrics/PageLoadMetrics; +Lorg/chromium/chrome/browser/metrics/PageLoadMetrics$Observer; +Lorg/chromium/chrome/browser/metrics/SimpleStartupForegroundSessionDetector; +Lorg/chromium/chrome/browser/metrics/UmaSessionStats; +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats;->hasVisibleActivity()Z +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats;->isMetricsServiceAvailable()Z +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats;->updateMetricsServiceState()V +Lorg/chromium/chrome/browser/metrics/UmaSessionStats$1; +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats$1;-><init>(Lorg/chromium/chrome/browser/metrics/UmaSessionStats;)V +Lorg/chromium/chrome/browser/metrics/UmaSessionStats$2; +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats$2;-><init>(Lorg/chromium/chrome/browser/metrics/UmaSessionStats;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/metrics/UmaSessionStats$2;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/metrics/UmaUtils; +HSPLorg/chromium/chrome/browser/metrics/UmaUtils;->getApplicationStartTime()J +HSPLorg/chromium/chrome/browser/metrics/UmaUtils;->getProcessStartTime()J +HSPLorg/chromium/chrome/browser/metrics/UmaUtils;->getStandbyBucket(Landroid/content/Context;)I +HSPLorg/chromium/chrome/browser/metrics/UmaUtils;->recordForegroundStartTimeWithNative()V +Lorg/chromium/chrome/browser/metrics/UmaUtils$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/metrics/UmaUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ActivityManager;)Z +HSPLorg/chromium/chrome/browser/metrics/UmaUtils$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/usage/UsageStatsManager;)I +Lorg/chromium/chrome/browser/metrics/VariationsSession; +HSPLorg/chromium/chrome/browser/metrics/VariationsSession;-><init>()V +Lorg/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter; +HSPLorg/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter$TabModalBrowserControlsVisibilityDelegate; +HSPLorg/chromium/chrome/browser/modaldialog/ChromeTabModalPresenter$TabModalBrowserControlsVisibilityDelegate;-><init>()V +Lorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler; +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/UnownedUserDataSupplier;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/back_press/BackPressManager;)V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;->handleTabChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;->onDestroy()V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;->updateSuspensionState()V +Lorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$1; +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$1;-><init>(Lorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;)V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$1;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$2; +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$2;-><init>(Lorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler$2;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/modules/ModuleInstallUi$FailureUiListener; +Lorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar; +HSPLorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar;->registerMojoInterfaces()V +Lorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar$ChromeWebContentsInterfaceRegistrar; +HSPLorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar$ChromeWebContentsInterfaceRegistrar;-><init>()V +HSPLorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar$ChromeWebContentsInterfaceRegistrar;-><init>(I)V +HSPLorg/chromium/chrome/browser/mojo/ChromeInterfaceRegistrar$ChromeWebContentsInterfaceRegistrar;-><init>(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/multiwindow/MultiInstanceChromeTabbedActivity; +Lorg/chromium/chrome/browser/multiwindow/MultiInstanceManager; +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;)V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->allocInstanceId(IIZ)I +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->initialize(II)V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->isTabModelMergingEnabled()Z +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->killOtherTask()V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->onDestroy()V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;->onResumeWithNative()V +Lorg/chromium/chrome/browser/multiwindow/MultiInstanceManager$1; +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceManager$1;-><init>(Lorg/chromium/chrome/browser/multiwindow/MultiInstanceManager;)V +Lorg/chromium/chrome/browser/multiwindow/MultiInstanceState$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/multiwindow/MultiInstanceState$$ExternalSyntheticApiModelOutline0;->m(Landroid/app/ActivityManager$RecentTaskInfo;)Landroid/content/ComponentName; +Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcher$MultiWindowModeObserver; +Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl; +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;-><init>(Landroid/app/Activity;)V +Lorg/chromium/chrome/browser/multiwindow/MultiWindowUtils; +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;-><init>()V +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->areMultipleChromeInstancesRunning(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->getActivityNameFromTask(Landroid/app/ActivityManager$AppTask;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->getMaxInstances()I +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->getOpenInOtherWindowActivity(Landroid/app/Activity;)Ljava/lang/Class; +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->isInMultiDisplayMode(Landroid/app/Activity;)Z +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->isInMultiWindowMode(Landroid/app/Activity;)Z +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->isMultiInstanceApi31Enabled()Z +HSPLorg/chromium/chrome/browser/multiwindow/MultiWindowUtils;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/native_page/NativePageAssassin; +HSPLorg/chromium/chrome/browser/native_page/NativePageAssassin;-><init>()V +Lorg/chromium/chrome/browser/native_page/NativePageFactory; +HSPLorg/chromium/chrome/browser/native_page/NativePageFactory;-><init>(Landroid/app/Activity;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/base/supplier/Supplier;Ljava/util/function/BooleanSupplier;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegate;)V +Lorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector; +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;-><init>(Lorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector$Observer;)V +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;->onConnectionTypeChanged(I)V +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;->performConnectivityCheck()V +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;->processConnectivityCheckResult()V +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;->setConnectionState(I)V +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector;->stopConnectivityCheck()V +Lorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector$DelegateImpl; +HSPLorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector$DelegateImpl;-><init>()V +Lorg/chromium/chrome/browser/net/connectivitydetector/ConnectivityDetector$Observer; +Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController; +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;-><init>(Lorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor;Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager;)V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->addObserver(Lorg/chromium/chrome/browser/night_mode/NightModeStateProvider$Observer;)V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->isInNightMode()Z +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->onApplicationStateChange(I)V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->removeObserver(Lorg/chromium/chrome/browser/night_mode/NightModeStateProvider$Observer;)V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->start()V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;->updateNightMode()V +Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;)V +Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController;)V +HSPLorg/chromium/chrome/browser/night_mode/GlobalNightModeStateController$$ExternalSyntheticLambda1;->onPreferenceChanged(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/night_mode/GlobalNightModeStateProviderHolder; +Lorg/chromium/chrome/browser/night_mode/NightModeStateProvider; +HSPLorg/chromium/chrome/browser/night_mode/NightModeStateProvider;->shouldOverrideConfiguration()Z +Lorg/chromium/chrome/browser/night_mode/NightModeStateProvider$Observer; +Lorg/chromium/chrome/browser/night_mode/NightModeUtils; +HSPLorg/chromium/chrome/browser/night_mode/NightModeUtils;->wrapContextWithNightModeConfig(ILandroid/content/Context;Z)Landroid/view/ContextThemeWrapper; +Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor; +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;-><init>()V +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;->updateAccordingToAppState()V +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;->updatePowerSaveMode()V +Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;)V +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor$$ExternalSyntheticLambda0;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor$1; +HSPLorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor$1;-><init>(Lorg/chromium/chrome/browser/night_mode/PowerSavingModeMonitor;)V +Lorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor; +HSPLorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor;-><init>()V +HSPLorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor;->getInstance()Lorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor; +Lorg/chromium/chrome/browser/night_mode/SystemNightModeMonitor$Observer; +Lorg/chromium/chrome/browser/notifications/NotificationPlatformBridge; +HSPLorg/chromium/chrome/browser/notifications/NotificationPlatformBridge;-><init>(J)V +HSPLorg/chromium/chrome/browser/notifications/NotificationPlatformBridge;->create(J)Lorg/chromium/chrome/browser/notifications/NotificationPlatformBridge; +Lorg/chromium/chrome/browser/notifications/NotificationSettingsBridge; +HSPLorg/chromium/chrome/browser/notifications/NotificationSettingsBridge;->getSiteChannels()[Lorg/chromium/chrome/browser/notifications/NotificationSettingsBridge$SiteChannel; +Lorg/chromium/chrome/browser/notifications/NotificationSettingsBridge$SiteChannel; +Lorg/chromium/chrome/browser/notifications/NotificationTriggerScheduler; +HSPLorg/chromium/chrome/browser/notifications/NotificationTriggerScheduler;-><init>(Lcom/google/android/datatransport/runtime/TransportImpl$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/notifications/NotificationTriggerScheduler;->getInstance()Lorg/chromium/chrome/browser/notifications/NotificationTriggerScheduler; +Lorg/chromium/chrome/browser/notifications/NotificationTriggerScheduler$LazyHolder; +Lorg/chromium/chrome/browser/notifications/channels/ChannelsUpdater; +HSPLorg/chromium/chrome/browser/notifications/channels/ChannelsUpdater;-><init>(ZLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;Lorg/chromium/components/browser_ui/notifications/channels/ChannelsInitializer;I)V +HSPLorg/chromium/chrome/browser/notifications/channels/ChannelsUpdater;->updateChannels()V +Lorg/chromium/chrome/browser/notifications/channels/ChannelsUpdater$LazyHolder; +Lorg/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions; +Lorg/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions$PredefinedChannelGroups; +Lorg/chromium/chrome/browser/notifications/channels/ChromeChannelDefinitions$PredefinedChannels; +Lorg/chromium/chrome/browser/notifications/channels/SiteChannelsManager; +HSPLorg/chromium/chrome/browser/notifications/channels/SiteChannelsManager;-><init>(Lorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;)V +HSPLorg/chromium/chrome/browser/notifications/channels/SiteChannelsManager;->getSiteChannels()[Lorg/chromium/chrome/browser/notifications/NotificationSettingsBridge$SiteChannel; +HSPLorg/chromium/chrome/browser/notifications/channels/SiteChannelsManager;->isValidSiteChannelId(Ljava/lang/String;)Z +Lorg/chromium/chrome/browser/notifications/channels/SiteChannelsManager$LazyHolder; +Lorg/chromium/chrome/browser/notifications/chime/ChimeFeatures; +Lorg/chromium/chrome/browser/notifications/permissions/NotificationPermissionController; +HSPLorg/chromium/chrome/browser/notifications/permissions/NotificationPermissionController;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/notifications/permissions/NotificationPermissionController;->requestPermissionIfNeeded()Z +Lorg/chromium/chrome/browser/ntp/FeedPositionUtils$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ntp/FeedPositionUtils$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/ntp/FeedPositionUtils$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ntp/IncognitoCookieControlsManager; +HSPLorg/chromium/chrome/browser/ntp/IncognitoCookieControlsManager;-><init>()V +Lorg/chromium/chrome/browser/ntp/IncognitoCookieControlsManager$Observer; +Lorg/chromium/chrome/browser/ntp/NewTabPage; +Lorg/chromium/chrome/browser/ntp/NewTabPageUtils; +HSPLorg/chromium/chrome/browser/ntp/NewTabPageUtils;->decodeOriginFromNtpUrl(Ljava/lang/String;)I +Lorg/chromium/chrome/browser/ntp/RecentlyClosedBridge; +HSPLorg/chromium/chrome/browser/ntp/RecentlyClosedBridge;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/ntp/search/SearchBoxContainerView; +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxContainerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/chrome/browser/ntp/search/SearchBoxCoordinator; +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxCoordinator;-><init>(Landroid/content/Context;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxCoordinator;->addLensButtonClickListener(Landroid/view/View$OnClickListener;)V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxCoordinator;->addVoiceSearchButtonClickListener(Landroid/view/View$OnClickListener;)V +Lorg/chromium/chrome/browser/ntp/search/SearchBoxMediator; +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxMediator;-><init>(Landroid/content/Context;Lorg/chromium/ui/modelutil/PropertyModel;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxMediator;->onAssistantVoiceSearchServiceChanged()V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxMediator;->onDestroy()V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxMediator;->onFinishNativeInitialization()V +Lorg/chromium/chrome/browser/ntp/search/SearchBoxMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxMediator$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/browser/ntp/search/SearchBoxProperties; +Lorg/chromium/chrome/browser/ntp/search/SearchBoxViewBinder; +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxViewBinder;-><init>()V +HSPLorg/chromium/chrome/browser/ntp/search/SearchBoxViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/offlinepages/AutoFetchNotifier; +HSPLorg/chromium/chrome/browser/offlinepages/AutoFetchNotifier;->autoFetchInProgressNotificationCanceled()Z +Lorg/chromium/chrome/browser/offlinepages/OfflinePageBridge; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageBridge;-><init>(J)V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageBridge;->create(J)Lorg/chromium/chrome/browser/offlinepages/OfflinePageBridge; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageBridge;->getForProfile(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/chrome/browser/offlinepages/OfflinePageBridge; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageBridge;->offlinePageModelLoaded()V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageBridge$SavePageCallback; +Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabData; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabData;-><init>()V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$3;)V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver;->maybeShowReloadSnackbar(Lorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$1; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$1;-><init>()V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$1;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$2; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$2;-><init>(Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$3; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageTabObserver$3;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils;->getInstance()Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$1; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils;->isOfflinePage(Lorg/chromium/chrome/browser/tab/Tab;)Z +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils;->isShowingTrustedOfflinePage(Lorg/chromium/content_public/browser/WebContents;)Z +Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$1; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$1;-><init>(I)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$3; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$3;-><init>()V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$3;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$RecentTabTracker; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$RecentTabTracker;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$RecentTabTracker;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +Lorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$TabRestoreTracker; +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$TabRestoreTracker;-><init>()V +HSPLorg/chromium/chrome/browser/offlinepages/OfflinePageUtils$TabRestoreTracker;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge; +HSPLorg/chromium/chrome/browser/offlinepages/downloads/OfflinePageDownloadBridge;-><init>()V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector;-><init>(Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector;->logToAdbConsoleNow(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector;->onApplicationStateChange(I)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector;->updateState()V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector;)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineDetector$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2;->onApplicationStateChanged(Z)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2;->updateStatusIndicator(Z)V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2;I)V +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerV2;I)V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorInProductHelpController; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorInProductHelpController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator;)V +Lorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorMetricsDelegate; +HSPLorg/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorMetricsDelegate;-><init>()V +PLorg/chromium/chrome/browser/omaha/ExponentialBackoffScheduler;-><init>()V +PLorg/chromium/chrome/browser/omaha/OmahaBase;-><init>(Lorg/chromium/chrome/browser/omaha/OmahaService$OmahaClientDelegate;)V +PLorg/chromium/chrome/browser/omaha/OmahaDelegateBase;-><init>()V +PLorg/chromium/chrome/browser/omaha/OmahaService;-><init>()V +PLorg/chromium/chrome/browser/omaha/OmahaService;->onStartTask(Landroid/content/Context;Lorg/chromium/components/background_task_scheduler/TaskParameters;Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService;)Z +PLorg/chromium/chrome/browser/omaha/OmahaService;->scheduleJobService(J)Z +PLorg/chromium/chrome/browser/omaha/OmahaService$1;-><init>(Lorg/chromium/chrome/browser/omaha/OmahaService;Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService;)V +PLorg/chromium/chrome/browser/omaha/OmahaService$1;->doInBackground()Ljava/lang/Object; +PLorg/chromium/chrome/browser/omaha/OmahaService$1;->onPostExecute(Ljava/lang/Object;)V +PLorg/chromium/chrome/browser/omaha/OmahaService$OmahaClientDelegate;-><init>()V +Lorg/chromium/chrome/browser/omaha/UpdateConfigs; +HSPLorg/chromium/chrome/browser/omaha/UpdateConfigs;->getStringParamValue(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper; +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;-><init>()V +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;->getInstance()Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper; +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;->handleStateChanged()V +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;->registerObserver(Ljava/lang/Runnable;)V +Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;)V +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper;Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/omaha/UpdateMenuItemHelper$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider; +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider;-><init>()V +Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider;)V +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$LazyHolder; +Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateQuery; +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateQuery;-><init>(Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateQuery;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateQuery;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateStatus; +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateStatus;-><init>()V +HSPLorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateStatus;-><init>(Lorg/chromium/chrome/browser/omaha/UpdateStatusProvider$UpdateStatus;)V +Lorg/chromium/chrome/browser/omaha/VersionNumber; +HSPLorg/chromium/chrome/browser/omaha/VersionNumber;->fromString(Ljava/lang/String;)Lorg/chromium/chrome/browser/omaha/VersionNumber; +Lorg/chromium/chrome/browser/omaha/VersionNumberGetter; +Lorg/chromium/chrome/browser/omaha/metrics/TrackingProvider; +HSPLorg/chromium/chrome/browser/omaha/metrics/TrackingProvider;-><init>()V +Lorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/base/Promise;Lorg/chromium/chrome/browser/omaha/metrics/UpdateProtos$Tracking;)V +HSPLorg/chromium/chrome/browser/omaha/metrics/TrackingProvider$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/omaha/metrics/UpdateProtos$Tracking; +Lorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics; +HSPLorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics;-><init>()V +Lorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics;I)V +HSPLorg/chromium/chrome/browser/omaha/metrics/UpdateSuccessMetrics$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/AutocompleteEditText; +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->onPreDraw()Z +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->onSelectionChanged(II)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->setOnKeyListener(Landroid/view/View$OnKeyListener;)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V +Lorg/chromium/chrome/browser/omnibox/AutocompleteEditText$1; +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText$1;-><init>(Lorg/chromium/chrome/browser/omnibox/AutocompleteEditText;)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText$1;->afterTextChanged(Landroid/text/Editable;)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText$1;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLorg/chromium/chrome/browser/omnibox/AutocompleteEditText$1;->onTextChanged(Ljava/lang/CharSequence;III)V +Lorg/chromium/chrome/browser/omnibox/AutocompleteEditTextModelBase$Delegate; +Lorg/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate; +Lorg/chromium/chrome/browser/omnibox/ChromeAutocompleteSchemeClassifier; +HSPLorg/chromium/chrome/browser/omnibox/ChromeAutocompleteSchemeClassifier;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/omnibox/ChromeAutocompleteSchemeClassifier;->destroy()V +Lorg/chromium/chrome/browser/omnibox/KeyboardHideHelper; +HSPLorg/chromium/chrome/browser/omnibox/KeyboardHideHelper;-><init>(Landroid/view/View;Lorg/chromium/chrome/browser/omnibox/UrlBar$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/omnibox/KeyboardHideHelper$1; +HSPLorg/chromium/chrome/browser/omnibox/KeyboardHideHelper$1;-><init>(Lorg/chromium/chrome/browser/omnibox/KeyboardHideHelper;)V +Lorg/chromium/chrome/browser/omnibox/LocationBar; +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;-><init>(Landroid/view/View;Landroid/view/View;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Landroid/view/ActionMode$Callback;Lorg/chromium/ui/base/WindowDelegate;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/omnibox/OverrideUrlLoadingDelegate;Lorg/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate;Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;Ljava/lang/Runnable;Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator$PageInfoAction;Lorg/chromium/base/Callback;Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$SaveOfflineButtonState;Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$OmniboxUma;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;Ljava/util/function/BooleanSupplier;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;Lorg/chromium/base/Callback;Lorg/chromium/chrome/browser/back_press/BackPressManager;Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownScrollListener;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->destroy()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->getOmniboxStub()Lorg/chromium/chrome/browser/omnibox/OmniboxStub; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->getSecurityIconView()Landroid/view/View; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->getVoiceRecognitionHandler()Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler; +PLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->onDeferredStartup()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;->updateVisualsForState()V +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omnibox/LocationBarMediator;I)V +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$1; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$1;-><init>(Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator$SubCoordinator; +Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinatorPhone; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinatorPhone;-><init>(Lorg/chromium/chrome/browser/omnibox/LocationBarPhone;Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarCoordinatorPhone;->destroy()V +Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider; +Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;->hintZeroSuggestRefresh()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;->onPrimaryColorChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;->onSecurityStateChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;->onTitleChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;->onUrlChanged()V +Lorg/chromium/chrome/browser/omnibox/LocationBarLayout; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->initialize(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->setUnfocusedWidth(I)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarLayout;->setUrlFocusChangePercent(F)V +Lorg/chromium/chrome/browser/omnibox/LocationBarMediator; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/LocationBarLayout;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/omnibox/OverrideUrlLoadingDelegate;Lorg/chromium/chrome/browser/locale/LocaleManager;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/chrome/browser/omnibox/BackKeyBehaviorDelegate;Lorg/chromium/ui/base/ActivityWindowAndroid;ZLorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;Lorg/chromium/chrome/browser/lens/LensController;Ljava/lang/Runnable;Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$SaveOfflineButtonState;Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$OmniboxUma;Ljava/util/function/BooleanSupplier;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->addUrlFocusChangeListener(Lorg/chromium/chrome/browser/omnibox/UrlFocusChangeListener;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->getVoiceRecognitionHandler()Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->hintZeroSuggestRefresh()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->isLensEnabled()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->onAssistantVoiceSearchServiceChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->onPrimaryColorChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->onUrlChanged()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->onVoiceAvailabilityImpacted()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->removeUrlFocusChangeListener(Lorg/chromium/chrome/browser/omnibox/UrlFocusChangeListener;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->setUrl(Ljava/lang/String;Lorg/chromium/chrome/browser/omnibox/UrlBarData;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->setUrlBarFocus(Ljava/lang/String;IZ)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->setUrlFocusChangeFraction(F)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->shouldShowDeleteButton()Z +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->shouldShowLensButton()Z +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->updateAssistantVoiceSearchDrawableAndColors()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->updateButtonVisibility()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator;->updateShouldAnimateIconChanges()V +Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/LocationBarMediator;I)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$2; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarMediator$2;-><init>(Lorg/chromium/chrome/browser/omnibox/LocationBarMediator;I)V +Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$OmniboxUma; +Lorg/chromium/chrome/browser/omnibox/LocationBarMediator$SaveOfflineButtonState; +Lorg/chromium/chrome/browser/omnibox/LocationBarPhone; +HSPLorg/chromium/chrome/browser/omnibox/LocationBarPhone;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarPhone;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLorg/chromium/chrome/browser/omnibox/LocationBarPhone;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarPhone;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/omnibox/LocationBarPhone;->onMeasure(II)V +Lorg/chromium/chrome/browser/omnibox/NewTabPageDelegate; +Lorg/chromium/chrome/browser/omnibox/NewTabPageDelegate$1; +HSPLorg/chromium/chrome/browser/omnibox/NewTabPageDelegate$1;-><init>()V +Lorg/chromium/chrome/browser/omnibox/OmniboxFeatures; +HSPLorg/chromium/chrome/browser/omnibox/OmniboxFeatures;->shouldMatchToolbarAndStatusBarColor()Z +HSPLorg/chromium/chrome/browser/omnibox/OmniboxFeatures;->shouldShowModernizeVisualUpdate(Landroid/content/Context;)Z +Lorg/chromium/chrome/browser/omnibox/OmniboxPrerender; +HSPLorg/chromium/chrome/browser/omnibox/OmniboxPrerender;-><init>()V +Lorg/chromium/chrome/browser/omnibox/OmniboxStub; +Lorg/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl; +HSPLorg/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/ui/base/WindowDelegate;Landroid/view/View;Lorg/chromium/chrome/browser/omnibox/LocationBarLayout;)V +HSPLorg/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl;->recalculateOmniboxAlignment()V +Lorg/chromium/chrome/browser/omnibox/OverrideUrlLoadingDelegate; +Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils; +HSPLorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;-><init>()V +HSPLorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;->getInstance()Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils; +Lorg/chromium/chrome/browser/omnibox/UrlBar; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->bringPointIntoView(I)Z +PLorg/chromium/chrome/browser/omnibox/UrlBar;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->getText()Landroid/text/Editable; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->getText()Ljava/lang/CharSequence; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->onDraw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->onWindowFocusChanged(Z)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->scrollDisplayTextInternal(I)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->setIgnoreTextChangesForAutocomplete(Z)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V +Lorg/chromium/chrome/browser/omnibox/UrlBar$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBar;I)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBar$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/omnibox/UrlBar$1; +HSPLorg/chromium/chrome/browser/omnibox/UrlBar$1;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBar;)V +Lorg/chromium/chrome/browser/omnibox/UrlBar$UrlBarDelegate; +Lorg/chromium/chrome/browser/omnibox/UrlBar$UrlBarTextContextMenuDelegate; +Lorg/chromium/chrome/browser/omnibox/UrlBar$UrlTextChangeListener; +Lorg/chromium/chrome/browser/omnibox/UrlBarApi26; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarApi26;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarApi26;->getAutofillType()I +Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBar;Lorg/chromium/ui/base/WindowDelegate;Landroid/view/ActionMode$Callback;Lorg/chromium/base/Callback;Lorg/chromium/chrome/browser/omnibox/UrlBar$UrlBarDelegate;Lorg/chromium/ui/KeyboardVisibilityDelegate;ZLorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;->getTextWithAutocomplete()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;->setUrlBarData(Lorg/chromium/chrome/browser/omnibox/UrlBarData;II)Z +Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;)V +Lorg/chromium/chrome/browser/omnibox/UrlBarData; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarData;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;IILjava/lang/String;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarData;->create(Ljava/lang/String;Ljava/lang/CharSequence;IILjava/lang/String;)Lorg/chromium/chrome/browser/omnibox/UrlBarData; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarData;->forNonUrlText(Ljava/lang/String;)Lorg/chromium/chrome/browser/omnibox/UrlBarData; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarData;->forUrlAndText(Ljava/lang/String;Landroid/text/SpannableStringBuilder;Ljava/lang/String;)Lorg/chromium/chrome/browser/omnibox/UrlBarData; +Lorg/chromium/chrome/browser/omnibox/UrlBarEditingTextStateProvider; +Lorg/chromium/chrome/browser/omnibox/UrlBarMediator; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/ui/modelutil/PropertyModel;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator;->afterTextChanged(Landroid/text/Editable;)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator;->beforeTextChanged(Ljava/lang/CharSequence;III)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator;->onTextChanged(Ljava/lang/CharSequence;III)V +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator;->pushTextToModel()V +Lorg/chromium/chrome/browser/omnibox/UrlBarMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/chrome/browser/omnibox/UrlBarMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBarMediator;)V +Lorg/chromium/chrome/browser/omnibox/UrlBarProperties; +Lorg/chromium/chrome/browser/omnibox/UrlBarProperties$UrlBarTextState; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarProperties$UrlBarTextState;-><init>(IIILjava/lang/CharSequence;Ljava/lang/CharSequence;)V +Lorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticApiModelOutline0;->m$1(Lorg/chromium/chrome/browser/omnibox/UrlBar;)Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticApiModelOutline0;->m$2(Lorg/chromium/chrome/browser/omnibox/UrlBar;)Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticApiModelOutline0;->m$3(Lorg/chromium/chrome/browser/omnibox/UrlBar;)Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticApiModelOutline0;->m(Lorg/chromium/chrome/browser/omnibox/UrlBar;)Landroid/graphics/drawable/Drawable; +Lorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/omnibox/UrlBarViewBinder$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/omnibox/UrlBar;Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/omnibox/UrlFocusChangeListener; +Lorg/chromium/chrome/browser/omnibox/status/PageInfoIPHController; +HSPLorg/chromium/chrome/browser/omnibox/status/PageInfoIPHController;-><init>(Landroid/app/Activity;Landroid/widget/ImageView;)V +Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;-><init>(ZLorg/chromium/chrome/browser/omnibox/status/StatusView;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator$PageInfoAction;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;->onSecurityStateChanged()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;->updateSecurityIcon()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusCoordinator;->updateVerboseStatusVisibility()V +Lorg/chromium/chrome/browser/omnibox/status/StatusCoordinator$PageInfoAction; +Lorg/chromium/chrome/browser/omnibox/status/StatusIconView; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusIconView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusIconView;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusIconView;->setVisibility(I)V +Lorg/chromium/chrome/browser/omnibox/status/StatusMediator; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Landroid/content/res/Resources;Landroid/content/Context;ZLorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/components/permissions/PermissionDialogController;Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/status/PageInfoIPHController;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->isNTPOrStartSurfaceVisible()Z +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->shouldDisplaySearchEngineIcon()Z +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->updateColorTheme()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->updateLocationBarIcon(I)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->updateStatusVisibility()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator;->updateVerbaseStatusTextVisibility()V +Lorg/chromium/chrome/browser/omnibox/status/StatusMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusMediator;I)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/status/StatusProperties; +Lorg/chromium/chrome/browser/omnibox/status/StatusProperties$StatusIconResource; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusProperties$StatusIconResource;-><init>(II)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusProperties$StatusIconResource;->equals(Ljava/lang/Object;)Z +HSPLorg/chromium/chrome/browser/omnibox/status/StatusProperties$StatusIconResource;->getDrawable(Landroid/content/Context;Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; +Lorg/chromium/chrome/browser/omnibox/status/StatusView; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;->allowBrowserControlsHide()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;->keepControlsShownForAnimation()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;->setStatusIconResources(Landroid/graphics/drawable/Drawable;ILjava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView;->updateTouchDelegate()V +Lorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusView;)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda0;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusView;I)V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/omnibox/status/StatusView$1; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$1;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusView;)V +Lorg/chromium/chrome/browser/omnibox/status/StatusView$2; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusView$2;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusView;)V +Lorg/chromium/chrome/browser/omnibox/status/StatusViewBinder; +HSPLorg/chromium/chrome/browser/omnibox/status/StatusViewBinder;-><init>()V +HSPLorg/chromium/chrome/browser/omnibox/status/StatusViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider; +HSPLorg/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider;->getBrandedColorScheme(ILandroid/content/Context;Z)I +HSPLorg/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider;->getUrlBarPrimaryTextColor(Landroid/content/Context;I)I +HSPLorg/chromium/chrome/browser/omnibox/styles/OmniboxResourceProvider;->getUrlBarSecondaryTextColor(Landroid/content/Context;I)I +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteController; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteController;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteController;->destroy()V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteController$OnSuggestionsReceivedListener; +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;-><init>()V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;->from(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;->get(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteController; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;->onDetachedFromHost()V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;->onProfileAdded(Lorg/chromium/chrome/browser/profiles/Profile;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;-><init>(Lorg/chromium/chrome/browser/omnibox/LocationBarLayout;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteDelegate;Lorg/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl;Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownScrollListener;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;->prefetchZeroSuggestResults()V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;->updateSuggestionListLayoutDirection()V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;I)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$$ExternalSyntheticLambda2;-><init>(I)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$1; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$1;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator;Landroid/content/Context;Lorg/chromium/ui/modelutil/MVCListAdapter$ModelList;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator$1;->whenLoaded(Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteDelegate; +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteControllerProvider;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteDelegate;Lorg/chromium/chrome/browser/omnibox/UrlBarCoordinator;Lorg/chromium/ui/modelutil/PropertyModel;Landroid/os/Handler;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;->cancelAutocompleteRequests()V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;->postAutocompleteRequest(Ljava/lang/Runnable;J)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;->runPendingAutocompleteRequests()V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;->stopAutocomplete(Z)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;I)V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;II)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$2; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$2;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Ljava/lang/Runnable;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator$2;->run()V +Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemProcessor;->onNativeInitialized()V +Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder;->registerSuggestionProcessor(Lorg/chromium/chrome/browser/omnibox/suggestions/SuggestionProcessor;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder;I)V +Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListManager;-><init>(Landroid/content/Context;Lorg/chromium/ui/modelutil/MVCListAdapter$ModelList;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalDelegate; +Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown$GestureObserver; +Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder$OmniboxAlignment; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder$OmniboxAlignment;-><init>(IIIII)V +Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownScrollListener; +Lorg/chromium/chrome/browser/omnibox/suggestions/SuggestionHost; +Lorg/chromium/chrome/browser/omnibox/suggestions/SuggestionListProperties; +Lorg/chromium/chrome/browser/omnibox/suggestions/SuggestionProcessor; +Lorg/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/UrlBarEditingTextStateProvider;Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/answer/AnswerSuggestionProcessor;->onNativeInitialized()V +Lorg/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/base/BaseSuggestionViewProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/UrlBarEditingTextStateProvider;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState; +Lorg/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/carousel/BaseCarouselSuggestionProcessor;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/clipboard/ClipboardSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/clipboard/ClipboardSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/editurl/EditUrlSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteDelegate;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/entity/EntitySuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/entity/EntitySuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/header/HeaderProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/header/HeaderProcessor;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/header/HeaderProcessor;->onNativeInitialized()V +Lorg/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;)V +HSPLorg/chromium/chrome/browser/omnibox/suggestions/mostvisited/MostVisitedTilesProcessor;->onNativeInitialized()V +Lorg/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/pedal/PedalSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;Lorg/chromium/chrome/browser/omnibox/UrlBarEditingTextStateProvider;Lorg/chromium/chrome/browser/omnibox/suggestions/FaviconFetcher;Lorg/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor$BookmarkState;Lorg/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalDelegate;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteDelegate;)V +Lorg/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionProcessor; +HSPLorg/chromium/chrome/browser/omnibox/suggestions/tail/TailSuggestionProcessor;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator;)V +Lorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService; +HSPLorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService;-><init>(Landroid/content/Context;Lorg/chromium/components/externalauth/ExternalAuthUtils;Lorg/chromium/components/search_engines/TemplateUrlService;Lorg/chromium/chrome/browser/gsa/GSAState;Lorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService$Observer;Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager;Lorg/chromium/components/signin/identitymanager/IdentityManager;Lorg/chromium/components/signin/AccountManagerFacade;)V +HSPLorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService;->isColorfulMicEnabled()Z +PLorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService;->isDeviceEligibleForAssistant(Ljava/util/ArrayList;Z)Z +PLorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService;->reportUserEligibility(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/omnibox/voice/AssistantVoiceSearchService$Observer; +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler; +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler;-><init>(Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$Delegate;Lorg/chromium/base/supplier/OneshotSupplierImpl;Ljava/lang/Runnable;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler;->isVoiceSearchEnabled()Z +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler;->notifyVoiceAvailabilityImpacted()V +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler;)V +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler;)V +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$$ExternalSyntheticLambda2;->onApplicationStateChange(I)V +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$Delegate; +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$Observer; +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$TranslateBridgeWrapper; +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionHandler$TranslateBridgeWrapper;-><init>()V +Lorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionUtil; +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionUtil;->isRecognitionIntentPresent(Z)Z +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionUtil;->isVoiceSearchEnabled(Lorg/chromium/ui/permissions/AndroidPermissionDelegate;)Z +HSPLorg/chromium/chrome/browser/omnibox/voice/VoiceRecognitionUtil;->isVoiceSearchPermittedByPolicy(Z)Z +PLorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridge;-><init>()V +PLorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridgeFactory;-><init>(Ljava/util/List;)V +PLorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridgeFactory;->create()Lorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridge; +PLorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridgeFactory$1;-><init>(Lorg/chromium/chrome/browser/optimization_guide/OptimizationGuideBridgeFactory;)V +Lorg/chromium/chrome/browser/optimization_guide/OptimizationGuidePushNotificationManager; +Lorg/chromium/chrome/browser/page_annotations/PageAnnotationsServiceConfig; +PLorg/chromium/chrome/browser/page_annotations/PageAnnotationsServiceFactory;-><init>()V +PLorg/chromium/chrome/browser/page_annotations/PageAnnotationsServiceFactory$1;-><init>()V +Lorg/chromium/chrome/browser/page_info/ChromePageInfo; +HSPLorg/chromium/chrome/browser/page_info/ChromePageInfo;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper; +HSPLorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;JLorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;ZLorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;)V +Lorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper$1; +HSPLorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/ui/base/ActivityWindowAndroid;)V +HSPLorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelper$1;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelperSupplier; +HSPLorg/chromium/chrome/browser/paint_preview/StartupPaintPreviewHelperSupplier;-><init>()V +Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview; +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;->destroy()V +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview; +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;->isShowing()Z +Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview$1; +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview$1;-><init>(Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;)V +Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview$TabbedPaintPreviewViewProvider; +HSPLorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview$TabbedPaintPreviewViewProvider;-><init>(Lorg/chromium/chrome/browser/paint_preview/TabbedPaintPreview;)V +Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService; +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService;-><init>(JJ)V +Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService;[I)V +Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService;)V +Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$CaptureTriggerListener; +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$CaptureTriggerListener;-><init>(Lorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$CaptureTriggerListener;->onApplicationStateChange(I)V +HSPLorg/chromium/chrome/browser/paint_preview/services/PaintPreviewTabService$CaptureTriggerListener;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmark; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmark;-><init>()V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottle; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottle;-><init>()V +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksFaviconThrottle;->commit()V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator;-><init>(Landroid/database/Cursor;)V +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator;->hasNext()Z +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;)V +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader;->shutDown()V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader;Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;)V +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$ReadBookmarksTask; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$ReadBookmarksTask;-><init>(Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader;)V +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$ReadBookmarksTask;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksReader$ReadBookmarksTask;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksShim; +Lorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl; +HSPLorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl;-><init>()V +HSPLorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl;->isValid()Z +Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;-><init>()V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->getHomePageUrl()Lorg/chromium/url/GURL; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->getInstance()Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->initializeAsync(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->isHomepageProviderAvailableAndEnabled()Z +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->isIncognitoDisabled()Z +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->refreshBookmarksEditingDisabled(Lorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl;)V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->refreshHomepage(Lorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl;)Z +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->refreshIncognitoModeDisabled(Lorg/chromium/chrome/browser/partnercustomizations/CustomizationProviderDelegateImpl;)V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;->setOnInitializeAsyncFinished(Ljava/lang/Runnable;)V +Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1;)V +PLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations;)V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1;->onFinalized()V +HSPLorg/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations$1;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/password_check/PasswordCheckUkmRecorder; +HSPLorg/chromium/chrome/browser/password_check/PasswordCheckUkmRecorder;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/password_check/PasswordCheckUkmRecorder;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/password_check/PasswordCheckUkmRecorder;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/password_manager/ConfirmationDialogHelper; +HSPLorg/chromium/chrome/browser/password_manager/ConfirmationDialogHelper;-><init>(Ljava/lang/ref/WeakReference;)V +Lorg/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper; +HSPLorg/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper;-><init>()V +HSPLorg/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper;->getInstance()Lorg/chromium/chrome/browser/password_manager/PasswordManagerLifecycleHelper; +Lorg/chromium/chrome/browser/password_manager/PasswordSettingsAccessorFactoryImpl; +HSPLorg/chromium/chrome/browser/password_manager/PasswordSettingsAccessorFactoryImpl;-><init>()V +Lorg/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterDispatcherBridge; +HSPLorg/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterDispatcherBridge;->canCreateAccessor()Z +Lorg/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendDispatcherBridgeImpl; +HSPLorg/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendDispatcherBridgeImpl;->canCreateBackend()Z +Lorg/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendFactoryImpl; +HSPLorg/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendFactoryImpl;-><init>()V +Lorg/chromium/chrome/browser/policy/CloudManagementSharedPreferences; +HSPLorg/chromium/chrome/browser/policy/CloudManagementSharedPreferences;->readDmToken()Ljava/lang/String; +Lorg/chromium/chrome/browser/policy/PolicyAuditorBridge; +HSPLorg/chromium/chrome/browser/policy/PolicyAuditorBridge;->getPolicyAuditor()Lorg/chromium/chrome/browser/policy/PolicyAuditor; +Lorg/chromium/chrome/browser/preferences/BaseChromePreferenceKeyChecker; +HSPLorg/chromium/chrome/browser/preferences/BaseChromePreferenceKeyChecker;-><init>()V +HSPLorg/chromium/chrome/browser/preferences/BaseChromePreferenceKeyChecker;->checkIsKeyInUse(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/preferences/ChromePreferenceKeys; +Lorg/chromium/chrome/browser/preferences/KeyPrefix; +HSPLorg/chromium/chrome/browser/preferences/KeyPrefix;-><init>(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/preferences/KeyPrefix;->createKey(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/chrome/browser/preferences/PrefChangeRegistrar; +HSPLorg/chromium/chrome/browser/preferences/PrefChangeRegistrar;-><init>()V +HSPLorg/chromium/chrome/browser/preferences/PrefChangeRegistrar;->addObserver(Ljava/lang/String;Lorg/chromium/chrome/browser/preferences/PrefChangeRegistrar$PrefObserver;)V +Lorg/chromium/chrome/browser/preferences/PrefChangeRegistrar$PrefObserver; +Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager; +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;-><init>()V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->addObserver(Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$Observer;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->contains(Ljava/lang/String;)Z +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->getInstance()Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager; +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->incrementInt(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readBoolean(Ljava/lang/String;Z)Z +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readInt(ILjava/lang/String;)I +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readLong(JLjava/lang/String;)J +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +PLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readStringSet(Ljava/lang/String;)Ljava/util/Set; +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->readStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set; +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->removeKey(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->removeObserver(Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$Observer;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->writeBoolean(Ljava/lang/String;Z)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->writeInt(ILjava/lang/String;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->writeLong(JLjava/lang/String;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager;->writeString(Ljava/lang/String;Ljava/lang/String;)V +Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$Observer;)V +HSPLorg/chromium/chrome/browser/preferences/SharedPreferencesManager$$ExternalSyntheticLambda0;->onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V +Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$LazyHolder; +Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager$Observer; +Lorg/chromium/chrome/browser/price_tracking/PriceTrackingButtonController; +HSPLorg/chromium/chrome/browser/price_tracking/PriceTrackingButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Landroid/graphics/drawable/Drawable;Lorg/chromium/base/supplier/ObservableSupplier;)V +Lorg/chromium/chrome/browser/price_tracking/PriceTrackingButtonController$1; +HSPLorg/chromium/chrome/browser/price_tracking/PriceTrackingButtonController$1;-><init>(Lorg/chromium/chrome/browser/price_tracking/PriceTrackingButtonController;)V +Lorg/chromium/chrome/browser/price_tracking/PriceTrackingFeatures; +HSPLorg/chromium/chrome/browser/price_tracking/PriceTrackingFeatures;->getPriceTrackingNotificationsEnabled()Z +HSPLorg/chromium/chrome/browser/price_tracking/PriceTrackingFeatures;->isPriceTrackingEligible()Z +HSPLorg/chromium/chrome/browser/price_tracking/PriceTrackingFeatures;->isPriceTrackingEnabled()Z +Lorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl; +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;->getInstance()Lorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl; +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;->isUploadEnabledForTests()Z +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;->isUsageAndCrashReportingPermittedByUser()Z +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;->syncUsageAndCrashReportingPermittedByPolicy()V +Lorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl$1; +HSPLorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl$1;-><init>(Lorg/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl;)V +Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/profiles/Profile;-><init>(J)V +HSPLorg/chromium/chrome/browser/profiles/Profile;->create(J)Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/profiles/Profile;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/profiles/Profile;->getLastUsedRegularProfile()Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/profiles/Profile;->getNativeBrowserContextPointer()J +HSPLorg/chromium/chrome/browser/profiles/Profile;->getNativePointer()J +HSPLorg/chromium/chrome/browser/profiles/Profile;->getProfileKey()Lorg/chromium/chrome/browser/profiles/ProfileKey; +HSPLorg/chromium/chrome/browser/profiles/Profile;->isOffTheRecord()Z +Lorg/chromium/chrome/browser/profiles/ProfileKey; +HSPLorg/chromium/chrome/browser/profiles/ProfileKey;-><init>(J)V +HSPLorg/chromium/chrome/browser/profiles/ProfileKey;->create(J)Lorg/chromium/chrome/browser/profiles/ProfileKey; +HSPLorg/chromium/chrome/browser/profiles/ProfileKey;->getLastUsedRegularProfileKey()Lorg/chromium/chrome/browser/profiles/ProfileKey; +HSPLorg/chromium/chrome/browser/profiles/ProfileKey;->getNativePointer()J +Lorg/chromium/chrome/browser/profiles/ProfileManager; +HSPLorg/chromium/chrome/browser/profiles/ProfileManager;->addObserver(Lorg/chromium/chrome/browser/profiles/ProfileManager$Observer;)V +HSPLorg/chromium/chrome/browser/profiles/ProfileManager;->onProfileAdded(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/profiles/ProfileManager;->removeObserver(Lorg/chromium/chrome/browser/profiles/ProfileManager$Observer;)V +Lorg/chromium/chrome/browser/profiles/ProfileManager$Observer; +Lorg/chromium/chrome/browser/profiles/ProfileResolver; +HSPLorg/chromium/chrome/browser/profiles/ProfileResolver;-><init>()V +Lorg/chromium/chrome/browser/provider/ChromeBrowserProvider; +HSPLorg/chromium/chrome/browser/provider/ChromeBrowserProvider;-><init>()V +PLorg/chromium/chrome/browser/query_tiles/QueryTileUtils;->isQueryTilesEnabledOnNTP()Z +Lorg/chromium/chrome/browser/query_tiles/QueryTileUtils$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/query_tiles/QueryTileUtils$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/query_tiles/QueryTileUtils$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider; +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider;-><init>()V +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider;->updateWidgets(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;[I)V +Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda2;-><init>()V +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderDino;Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderSearch;)V +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderDino; +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderDino;-><init>()V +Lorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderSearch; +HSPLorg/chromium/chrome/browser/quickactionsearchwidget/QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderSearch;-><init>()V +Lorg/chromium/chrome/browser/read_later/ReadLaterIPHController; +HSPLorg/chromium/chrome/browser/read_later/ReadLaterIPHController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/widget/ImageButton;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;)V +Lorg/chromium/chrome/browser/read_later/ReadLaterIPHController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/read_later/ReadLaterIPHController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/read_later/ReadLaterIPHController;I)V +Lorg/chromium/chrome/browser/rlz/RevenueStats; +HSPLorg/chromium/chrome/browser/rlz/RevenueStats;-><init>()V +Lorg/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory; +HSPLorg/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory;->get()Lorg/chromium/components/search_engines/TemplateUrlService; +HSPLorg/chromium/chrome/browser/search_engines/TemplateUrlServiceFactory;->getForProfile(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/components/search_engines/TemplateUrlService; +Lorg/chromium/chrome/browser/searchwidget/SearchActivity; +Lorg/chromium/chrome/browser/searchwidget/SearchActivity$2$1; +Lorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider; +HSPLorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider;->getDelegate()Lorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider$SearchWidgetProviderDelegate; +HSPLorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider;->performUpdate([ILorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;)V +Lorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider$SearchWidgetProviderDelegate; +HSPLorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider$SearchWidgetProviderDelegate;-><init>()V +HSPLorg/chromium/chrome/browser/searchwidget/SearchWidgetProvider$SearchWidgetProviderDelegate;->accept(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;->getValidActiveTab()Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;->maybeShowContextualPageAction()V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;->showDynamicAction(I)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$$ExternalSyntheticLambda3;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$1; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$1;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$1;->didFirstVisuallyNonEmptyPaint(Lorg/chromium/chrome/browser/tab/TabImpl;)V +Lorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$ActionProvider; +HSPLorg/chromium/chrome/browser/segmentation_platform/ContextualPageActionController$ActionProvider;->onActionShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider; +HSPLorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider;->getAction(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;)V +Lorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider;Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;Lorg/chromium/chrome/browser/bookmarks/BookmarkModel;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator; +HSPLorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;-><init>(Landroid/os/Handler;Lorg/chromium/chrome/browser/tab/Tab;Ljava/util/ArrayList;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;->proceedToNextStepIfReady()V +Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator;)V +HSPLorg/chromium/chrome/browser/segmentation_platform/SignalAccumulator$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/settings/SettingsLauncherImpl; +HSPLorg/chromium/chrome/browser/settings/SettingsLauncherImpl;-><init>()V +Lorg/chromium/chrome/browser/share/ShareButtonController; +HSPLorg/chromium/chrome/browser/share/ShareButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/graphics/drawable/Drawable;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/share/ShareUtils;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda2;)V +Lorg/chromium/chrome/browser/share/ShareDelegateImpl; +HSPLorg/chromium/chrome/browser/share/ShareDelegateImpl;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/share/ShareDelegateImpl$ShareSheetDelegate;Z)V +Lorg/chromium/chrome/browser/share/ShareDelegateImpl$ShareSheetDelegate; +HSPLorg/chromium/chrome/browser/share/ShareDelegateImpl$ShareSheetDelegate;-><init>()V +Lorg/chromium/chrome/browser/share/ShareDelegateSupplier; +HSPLorg/chromium/chrome/browser/share/ShareDelegateSupplier;-><init>()V +Lorg/chromium/chrome/browser/share/ShareUtils; +HSPLorg/chromium/chrome/browser/share/ShareUtils;-><init>()V +Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegate; +Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl; +HSPLorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl;-><init>()V +HSPLorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl;->isEnabledForSite(Lorg/chromium/url/GURL;Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/share/crow/CrowIphController; +HSPLorg/chromium/chrome/browser/share/crow/CrowIphController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Landroid/widget/ImageButton;)V +Lorg/chromium/chrome/browser/share/crow/CrowIphController$1; +HSPLorg/chromium/chrome/browser/share/crow/CrowIphController$1;-><init>(Lorg/chromium/chrome/browser/share/crow/CrowIphController;)V +HSPLorg/chromium/chrome/browser/share/crow/CrowIphController$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/share/crow/CrowIphController$1$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/share/crow/CrowIphController$1$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/share/crow/CrowIphController$1;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/share/crow/CrowIphController$1$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController; +HSPLorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/ObservableSupplier;)V +Lorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController$1; +HSPLorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController$1;-><init>(Lorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/share/link_to_text/LinkToTextIPHController$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/sharing/SharingServiceProxy; +HSPLorg/chromium/chrome/browser/sharing/SharingServiceProxy;->onProxyCreated(J)V +PLorg/chromium/chrome/browser/signin/SigninCheckerProvider;->get()Lorg/chromium/chrome/browser/signin/services/SigninChecker; +Lorg/chromium/chrome/browser/signin/SigninManagerImpl; +HSPLorg/chromium/chrome/browser/signin/SigninManagerImpl;-><init>(JLorg/chromium/components/signin/identitymanager/AccountTrackerService;Lorg/chromium/components/signin/identitymanager/IdentityManager;Lorg/chromium/components/signin/identitymanager/IdentityMutator;)V +HSPLorg/chromium/chrome/browser/signin/SigninManagerImpl;->create(JLorg/chromium/components/signin/identitymanager/AccountTrackerService;Lorg/chromium/components/signin/identitymanager/IdentityManager;Lorg/chromium/components/signin/identitymanager/IdentityMutator;)Lorg/chromium/chrome/browser/signin/services/SigninManager; +PLorg/chromium/chrome/browser/signin/SigninManagerImpl;->getIdentityManager()Lorg/chromium/components/signin/identitymanager/IdentityManager; +PLorg/chromium/chrome/browser/signin/SigninManagerImpl;->isForceSigninEnabled()Z +HSPLorg/chromium/chrome/browser/signin/SigninManagerImpl;->isSigninSupported()Z +HSPLorg/chromium/chrome/browser/signin/SigninManagerImpl;->isSyncOptInAllowed()Z +HSPLorg/chromium/chrome/browser/signin/SigninManagerImpl;->reloadAllAccountsFromSystem(Lorg/chromium/components/signin/base/CoreAccountId;)V +PLorg/chromium/chrome/browser/signin/SigninManagerImpl;->runAfterOperationInProgress(Ljava/lang/Runnable;)V +Lorg/chromium/chrome/browser/signin/services/FREMobileIdentityConsistencyFieldTrial; +HSPLorg/chromium/chrome/browser/signin/services/FREMobileIdentityConsistencyFieldTrial;->generateFirstRunTrialGroup(II)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/signin/services/FREMobileIdentityConsistencyFieldTrial;->getFirstRunTrialGroup()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/signin/services/FREMobileIdentityConsistencyFieldTrial;->getFirstRunTrialVariationId(II)I +Lorg/chromium/chrome/browser/signin/services/IdentityServicesProvider; +HSPLorg/chromium/chrome/browser/signin/services/IdentityServicesProvider;-><init>()V +HSPLorg/chromium/chrome/browser/signin/services/IdentityServicesProvider;->get()Lorg/chromium/chrome/browser/signin/services/IdentityServicesProvider; +HSPLorg/chromium/chrome/browser/signin/services/IdentityServicesProvider;->getIdentityManager(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/components/signin/identitymanager/IdentityManager; +HSPLorg/chromium/chrome/browser/signin/services/IdentityServicesProvider;->getSigninManager(Lorg/chromium/chrome/browser/profiles/Profile;)Lorg/chromium/chrome/browser/signin/services/SigninManager; +Lorg/chromium/chrome/browser/signin/services/ProfileDataCache$Observer; +PLorg/chromium/chrome/browser/signin/services/SigninChecker;-><init>(Lorg/chromium/chrome/browser/signin/services/SigninManager;Lorg/chromium/components/signin/identitymanager/AccountTrackerService;)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker;->validatePrimaryAccountExists(Ljava/util/List;Z)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/signin/services/SigninChecker;)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/signin/services/SigninChecker;Ljava/lang/Object;I)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda2;->run()V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/signin/services/SigninChecker;)V +PLorg/chromium/chrome/browser/signin/services/SigninChecker$$ExternalSyntheticLambda4;->onStatusReady(ZLandroid/accounts/Account;)V +Lorg/chromium/chrome/browser/signin/services/SigninManager; +Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator; +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/resources/ResourceManager;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda4;)V +Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator$StatusIndicatorObserver; +Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorMediator; +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorMediator;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer; +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;-><init>(Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;)V +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;->initializeNative()V +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;->isSceneOverlayTreeShowing()Z +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;->onSizeChanged(FFFI)V +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;->shouldHideAndroidBrowserControls()Z +HSPLorg/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer;->updateOverlay(J)Z +Lorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator; +HSPLorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator;->onWindowFocusChanged(Z)V +Lorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator;)V +HSPLorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator$1; +HSPLorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator$1;-><init>(Lorg/chromium/chrome/browser/stylus_handwriting/StylusWritingCoordinator;)V +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCarouselLayout; +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCarouselLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator; +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Landroid/view/View;Lorg/chromium/ui/base/WindowAndroid;ZZILorg/chromium/chrome/browser/ntp/NewTabPageLayout$$ExternalSyntheticLambda3;Lorg/chromium/chrome/browser/ntp/NewTabPageLayout$$ExternalSyntheticLambda3;)V +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator;->destroyMvtiles()V +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator$$ExternalSyntheticLambda1;-><init>()V +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator; +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator;-><init>(Landroid/content/res/Resources;Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;Landroid/view/ViewGroup;Landroid/view/ViewStub;Lorg/chromium/chrome/browser/suggestions/tile/TileRenderer;Lorg/chromium/ui/modelutil/PropertyModel;ZZZLorg/chromium/chrome/browser/ntp/NewTabPageLayout$$ExternalSyntheticLambda3;Lorg/chromium/chrome/browser/ntp/NewTabPageLayout$$ExternalSyntheticLambda3;)V +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator;->maybeSetPortraitIntervalPaddingsForCarousel()V +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesProperties; +Lorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesViewBinder$ViewHolder; +HSPLorg/chromium/chrome/browser/suggestions/tile/MostVisitedTilesViewBinder$ViewHolder;-><init>(Landroid/view/View;Landroid/view/ViewGroup;)V +Lorg/chromium/chrome/browser/suggestions/tile/TileRenderer; +HSPLorg/chromium/chrome/browser/suggestions/tile/TileRenderer;-><init>(Landroid/content/Context;ILorg/chromium/chrome/browser/suggestions/ImageFetcher;)V +PLorg/chromium/chrome/browser/sync/SyncErrorNotifier;-><init>()V +Lorg/chromium/chrome/browser/sync/SyncService; +HSPLorg/chromium/chrome/browser/sync/SyncService;-><init>()V +HSPLorg/chromium/chrome/browser/sync/SyncService;->get()Lorg/chromium/chrome/browser/sync/SyncService; +Lorg/chromium/chrome/browser/sync/SyncService$SyncStateChangedListener; +Lorg/chromium/chrome/browser/sync/SyncServiceImpl; +HSPLorg/chromium/chrome/browser/sync/SyncServiceImpl;-><init>()V +PLorg/chromium/chrome/browser/sync/SyncServiceImpl;->addSyncStateChangedListener(Lorg/chromium/chrome/browser/sync/SyncService$SyncStateChangedListener;)V +PLorg/chromium/chrome/browser/sync/SyncServiceImpl;->isEngineInitialized()Z +HSPLorg/chromium/chrome/browser/sync/SyncServiceImpl;->isSyncRequested()Z +Lorg/chromium/chrome/browser/sync/TrustedVaultClient; +HSPLorg/chromium/chrome/browser/sync/TrustedVaultClient;-><init>(Lorg/chromium/chrome/browser/sync/TrustedVaultClient$EmptyBackend;)V +HSPLorg/chromium/chrome/browser/sync/TrustedVaultClient;->get()Lorg/chromium/chrome/browser/sync/TrustedVaultClient; +HSPLorg/chromium/chrome/browser/sync/TrustedVaultClient;->registerNative(J)V +Lorg/chromium/chrome/browser/sync/TrustedVaultClient$EmptyBackend; +HSPLorg/chromium/chrome/browser/sync/TrustedVaultClient$EmptyBackend;-><init>()V +Lorg/chromium/chrome/browser/sync/settings/SyncSettingsUtils; +HSPLorg/chromium/chrome/browser/sync/settings/SyncSettingsUtils;->getSyncError()I +Lorg/chromium/chrome/browser/sync/ui/SyncErrorMessage; +HSPLorg/chromium/chrome/browser/sync/ui/SyncErrorMessage;->getMessageType(I)I +HSPLorg/chromium/chrome/browser/sync/ui/SyncErrorMessage;->maybeShowMessageUi(Lorg/chromium/ui/base/ActivityWindowAndroid;)V +Lorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler; +HSPLorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler;-><init>(Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;)V +HSPLorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler;->onDestroy()V +Lorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler$1; +HSPLorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler$1;-><init>(Lorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;)V +HSPLorg/chromium/chrome/browser/tab/AccessibilityVisibilityHandler$1;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController; +HSPLorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController;->onDestroy()V +Lorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController$1; +HSPLorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController$1;-><init>(Lorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;)V +HSPLorg/chromium/chrome/browser/tab/AutofillSessionLifetimeController$1;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/tab/CurrentTabObserver; +HSPLorg/chromium/chrome/browser/tab/CurrentTabObserver;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/tab/EmptyTabObserver;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/tab/CurrentTabObserver;->destroy()V +Lorg/chromium/chrome/browser/tab/CurrentTabObserver$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/CurrentTabObserver$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/CurrentTabObserver;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/tab/CurrentTabObserver$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tab/EmptyTabObserver; +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;-><init>()V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->didFirstVisuallyNonEmptyPaint(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onBackgroundColorChanged(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onBrowserControlsOffsetChanged(Lorg/chromium/chrome/browser/tab/TabImpl;IIIII)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onDidStartNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onInitialized(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onInteractabilityChanged(Lorg/chromium/chrome/browser/tab/Tab;Z)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onLoadProgressChanged(Lorg/chromium/chrome/browser/tab/Tab;F)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onLoadStarted(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onLoadStopped(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onLoadUrl(ILorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/content_public/browser/LoadUrlParams;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onPageLoadStarted(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onSSLStateUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onTitleUpdated(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onUpdateUrl(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/EmptyTabObserver;->onUrlUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +Lorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl; +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl;->getOrCreateRedirectHandler()Lorg/chromium/components/external_intents/RedirectHandler; +Lorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl$1; +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl$1;-><init>(Lorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl;)V +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl$1;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/tab/InterceptNavigationDelegateTabHelper; +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateTabHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/InterceptNavigationDelegateTabHelper;->destroy()V +Lorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper; +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;->destroy()V +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;->getOrCreateHandlerFor(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/components/external_intents/RedirectHandler; +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/RedirectHandlerTabHelper;->updateIntentInTab(Lorg/chromium/chrome/browser/tab/Tab;Landroid/content/Intent;)V +Lorg/chromium/chrome/browser/tab/RequestDesktopUtils; +HSPLorg/chromium/chrome/browser/tab/RequestDesktopUtils;->maybeShowDefaultEnableGlobalSettingMessage(Lorg/chromium/chrome/browser/profiles/Profile;Lorg/chromium/components/messages/ManagedMessageDispatcher;Landroidx/appcompat/app/AppCompatActivity;)Z +Lorg/chromium/chrome/browser/tab/SadTab; +HSPLorg/chromium/chrome/browser/tab/SadTab;->isShowing(Lorg/chromium/chrome/browser/tab/Tab;)Z +Lorg/chromium/chrome/browser/tab/Tab; +Lorg/chromium/chrome/browser/tab/TabAssociatedApp; +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabAssociatedApp; +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/tab/TabAssociatedApp$1; +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp$1;-><init>(Lorg/chromium/chrome/browser/tab/TabAssociatedApp;)V +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp$1;->onInitialized(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/tab/TabAssociatedApp$1;->onLoadUrl(ILorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/content_public/browser/LoadUrlParams;)V +Lorg/chromium/chrome/browser/tab/TabAttributes; +HSPLorg/chromium/chrome/browser/tab/TabAttributes;-><init>()V +HSPLorg/chromium/chrome/browser/tab/TabAttributes;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabAttributes; +HSPLorg/chromium/chrome/browser/tab/TabAttributes;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/tab/TabAttributes;->set(Ljava/lang/Object;Ljava/lang/String;)V +Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->destroy()V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->getConstraints()I +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->update(IZ)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->updateEnabledState()V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;->updateVisibilityDelegate()V +Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$1; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$1;-><init>(Lorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper$1;->onInitialized(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper;->destroy()V +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper; +HSPLorg/chromium/chrome/browser/tab/TabBrowserControlsOffsetHelper;->notifyControlsOffsetChanged()V +Lorg/chromium/chrome/browser/tab/TabBuilder; +HSPLorg/chromium/chrome/browser/tab/TabBuilder;-><init>()V +HSPLorg/chromium/chrome/browser/tab/TabBuilder;->build()Lorg/chromium/chrome/browser/tab/TabImpl; +HSPLorg/chromium/chrome/browser/tab/TabBuilder;->setLaunchType(I)V +Lorg/chromium/chrome/browser/tab/TabContextMenuItemDelegate; +HSPLorg/chromium/chrome/browser/tab/TabContextMenuItemDelegate;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/Supplier;Ljava/lang/Runnable;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/tab/TabContextMenuPopulatorFactory; +HSPLorg/chromium/chrome/browser/tab/TabContextMenuPopulatorFactory;-><init>(Lorg/chromium/chrome/browser/contextmenu/ContextMenuPopulatorFactory;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabContextMenuPopulatorFactory;->onDestroy()V +Lorg/chromium/chrome/browser/tab/TabDelegateFactory; +Lorg/chromium/chrome/browser/tab/TabFavicon; +HSPLorg/chromium/chrome/browser/tab/TabFavicon;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabFavicon;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabFavicon;->destroyInternal()V +HSPLorg/chromium/chrome/browser/tab/TabFavicon;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/tab/TabGestureStateListener; +HSPLorg/chromium/chrome/browser/tab/TabGestureStateListener;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabGestureStateListener;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabGestureStateListener;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/tab/TabGestureStateListener$1; +HSPLorg/chromium/chrome/browser/tab/TabGestureStateListener$1;-><init>(Lorg/chromium/chrome/browser/tab/TabGestureStateListener;Lorg/chromium/content/browser/GestureListenerManagerImpl;)V +Lorg/chromium/chrome/browser/tab/TabHelpers; +HSPLorg/chromium/chrome/browser/tab/TabHelpers;->initTabHelpers(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabHelpers;->initWebContentsHelpers(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tab/TabIdManager; +HSPLorg/chromium/chrome/browser/tab/TabIdManager;-><init>()V +HSPLorg/chromium/chrome/browser/tab/TabIdManager;->getInstance()Lorg/chromium/chrome/browser/tab/TabIdManager; +Lorg/chromium/chrome/browser/tab/TabImpl; +HSPLorg/chromium/chrome/browser/tab/TabImpl;-><init>(IZLjava/lang/Integer;Lorg/chromium/chrome/browser/tab/state/SerializedCriticalPersistedTabData;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->addObserver(Lorg/chromium/chrome/browser/tab/EmptyTabObserver;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->calculateUserAgentOverrideOption(Lorg/chromium/url/GURL;)I +HSPLorg/chromium/chrome/browser/tab/TabImpl;->canGoBack()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->canGoForward()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->clearNativePtr()V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->destroy()V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->destroyWebContents(Z)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->didFinishPageLoad(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->didStartPageLoad(Lorg/chromium/url/GURL;)V +PLorg/chromium/chrome/browser/tab/TabImpl;->freezeNativePage()V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getActivity()Lorg/chromium/chrome/browser/app/ChromeActivity; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getContentView$1()Lorg/chromium/components/embedder_support/view/ContentView; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getContext()Landroid/content/Context; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getId()I +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getLaunchType()I +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getNativePage()Lorg/chromium/chrome/browser/ui/native_page/NativePage; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getNativePtr()J +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getPendingLoadParams()Lorg/chromium/content_public/browser/LoadUrlParams; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getProgress()F +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getTabObservers()Lorg/chromium/base/ObserverList$ObserverListIterator; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getTabViewManager()Lorg/chromium/chrome/browser/tab/TabViewManagerImpl; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getThemeColor()I +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getUrl()Lorg/chromium/url/GURL; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getUserDataHost()Lorg/chromium/base/UserDataHost; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getView()Landroid/view/View; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->getWindowAndroid()Lorg/chromium/ui/base/WindowAndroid; +HSPLorg/chromium/chrome/browser/tab/TabImpl;->hide(I)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->hideNativePage(Ljava/lang/Runnable;Z)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isBeingRestored()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isClosing()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isCustomTab()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isDestroyed()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isDetached(Lorg/chromium/chrome/browser/tab/Tab;)Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isFrozen()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isHidden()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isIncognito()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isInitialized()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isLoading()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isNativePage()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isShowingCustomView()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isShowingErrorPage()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isThemingAllowed()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->isUserInteractable()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->loadIfNeeded(I)Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->loadUrl(Lorg/chromium/content_public/browser/LoadUrlParams;)I +HSPLorg/chromium/chrome/browser/tab/TabImpl;->maybeShowNativePage(Ljava/lang/String;Z)Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->needsReload()Z +HSPLorg/chromium/chrome/browser/tab/TabImpl;->notifyContentChanged()V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->removeObserver(Lorg/chromium/chrome/browser/tab/EmptyTabObserver;)V +PLorg/chromium/chrome/browser/tab/TabImpl;->restoreFieldsFromState(Lorg/chromium/chrome/browser/tab/TabState;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->setIsTabSaveEnabled(Z)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->setNativePtr(J)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->show(II)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->switchUserAgentIfNeeded(I)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->updateInteractableState()V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->updateThemeColor(I)V +HSPLorg/chromium/chrome/browser/tab/TabImpl;->updateTitle()V +Lorg/chromium/chrome/browser/tab/TabImpl$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/tab/TabImpl$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tab/TabImpl$1; +HSPLorg/chromium/chrome/browser/tab/TabImpl$1;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl$1;->onViewAttachedToWindow(Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/tab/TabImpl$1;->onViewDetachedFromWindow(Landroid/view/View;)V +Lorg/chromium/chrome/browser/tab/TabImportanceManager; +HSPLorg/chromium/chrome/browser/tab/TabImportanceManager;->tabShown(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tab/TabObscuringHandler; +HSPLorg/chromium/chrome/browser/tab/TabObscuringHandler;-><init>()V +HSPLorg/chromium/chrome/browser/tab/TabObscuringHandler;->addObserver(Lorg/chromium/chrome/browser/tab/TabObscuringHandler$Observer;)V +HSPLorg/chromium/chrome/browser/tab/TabObscuringHandler;->removeObserver(Lorg/chromium/chrome/browser/tab/TabObscuringHandler$Observer;)V +Lorg/chromium/chrome/browser/tab/TabObscuringHandler$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/TabObscuringHandler$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/TabObscuringHandler;I)V +Lorg/chromium/chrome/browser/tab/TabObscuringHandler$Observer; +Lorg/chromium/chrome/browser/tab/TabObscuringHandlerSupplier; +HSPLorg/chromium/chrome/browser/tab/TabObscuringHandlerSupplier;-><init>()V +Lorg/chromium/chrome/browser/tab/TabState; +HSPLorg/chromium/chrome/browser/tab/TabState;-><init>()V +Lorg/chromium/chrome/browser/tab/TabStateAttributes; +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;Ljava/lang/Integer;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;->destroyInternal()V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabStateAttributes; +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes;->updateIsDirty(I)V +Lorg/chromium/chrome/browser/tab/TabStateAttributes$1; +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$1;-><init>(Lorg/chromium/chrome/browser/tab/TabStateAttributes;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$1;->onLoadStopped(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$1;->onTitleUpdated(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tab/TabStateAttributes$2; +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$2;-><init>(Lorg/chromium/chrome/browser/tab/TabStateAttributes;)V +Lorg/chromium/chrome/browser/tab/TabStateAttributes$3; +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$3;-><init>(Lorg/chromium/chrome/browser/tab/TabStateAttributes;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$3;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabStateAttributes$3;->navigationEntriesChanged()V +Lorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate; +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate;->calculateVisibilityConstraints()I +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate;->updateVisibilityConstraints()V +Lorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1; +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;-><init>(Lorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onPageLoadStarted(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onSSLStateUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1$1; +HSPLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1$1;-><init>(Lorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1;)V +PLorg/chromium/chrome/browser/tab/TabStateBrowserControlsVisibilityDelegate$1$1;->handleMessage(Landroid/os/Message;)V +Lorg/chromium/chrome/browser/tab/TabStateExtractor; +HSPLorg/chromium/chrome/browser/tab/TabStateExtractor;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabState; +Lorg/chromium/chrome/browser/tab/TabThemeColorHelper; +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;->onSSLStateUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;->onUrlUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabThemeColorHelper;->updateIfNeeded(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +Lorg/chromium/chrome/browser/tab/TabUma; +HSPLorg/chromium/chrome/browser/tab/TabUma;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;I)V +HSPLorg/chromium/chrome/browser/tab/TabUma;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabUma;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/TabUma;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabUma;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/TabUma;->updateTabState(I)V +Lorg/chromium/chrome/browser/tab/TabUtils; +HSPLorg/chromium/chrome/browser/tab/TabUtils;->getActivity(Lorg/chromium/chrome/browser/tab/Tab;)Landroid/app/Activity; +HSPLorg/chromium/chrome/browser/tab/TabUtils;->getTabThumbnailAspectRatio(Landroid/content/Context;)F +Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate; +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/components/embedder_support/view/ContentView;)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;->getViewportInsetBottom()I +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;->onBackgroundColorChanged(I)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;->onBottomControlsChanged(II)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;->onTopControlsChanged(III)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;->updateInsetViewportBottom()V +Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$1; +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$1;-><init>(Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate;Lorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$1;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/tab/TabViewAndroidDelegate$1;->onShown(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tab/TabViewManagerImpl; +HSPLorg/chromium/chrome/browser/tab/TabViewManagerImpl;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/tab/TabViewManagerImpl;->isShowing(Lorg/chromium/chrome/browser/tab/TabViewProvider;)Z +Lorg/chromium/chrome/browser/tab/TabViewProvider; +Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid;-><init>()V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid;->canShowAppBanners()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid;->getManifestScope()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid;->shouldEnableEmbeddedMediaExperience()Z +Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;-><init>(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroid;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->canShowAppBanners()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->controlsResizeView()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getBottomControlsHeight()I +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getBottomControlsMinHeight()I +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getDisplayMode()I +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getManifestScope()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getTopControlsHeight()I +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->getTopControlsMinHeight()I +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isCustomTab()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isForceDarkWebContentEnabled()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isFullscreenForTabOrPending()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isModalContextMenu()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isNightModeEnabled()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->isPictureInPictureEnabled()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->loadingStateChanged(Z)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->navigationStateChanged(I)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->onUpdateUrl(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->shouldAnimateBrowserControlsHeightChanges()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->shouldEnableEmbeddedMediaExperience()Z +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;->visibleSSLStateChanged()V +Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/TabWebContentsDelegateAndroidImpl;)V +Lorg/chromium/chrome/browser/tab/TabWebContentsObserver; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver;->destroyInternal()V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/TabWebContentsObserver; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;-><init>(Lorg/chromium/chrome/browser/tab/TabWebContentsObserver;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->destroy()V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->didFinishLoadInPrimaryMainFrame(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;Lorg/chromium/url/GURL;ZI)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->didFirstVisuallyNonEmptyPaint()V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->didStartNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsObserver$Observer;->loadProgressChanged(F)V +Lorg/chromium/chrome/browser/tab/TabWebContentsUserData; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData;->destroy()V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData;->destroyInternal()V +Lorg/chromium/chrome/browser/tab/TabWebContentsUserData$1; +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData$1;-><init>(Lorg/chromium/chrome/browser/tab/TabWebContentsUserData;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData$1;->onContentChanged(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TabWebContentsUserData$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tab/TrustedCdn; +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;-><init>(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;->cleanupWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;->destroyInternal()V +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;->getPublisherUrl(Lorg/chromium/chrome/browser/tab/Tab;)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;->initWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/chrome/browser/tab/TrustedCdn;->setPublisherUrl(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/tab/TrustedCdn$PublisherUrlVisibility; +Lorg/chromium/chrome/browser/tab/WebContentsState; +HSPLorg/chromium/chrome/browser/tab/WebContentsState;-><init>(Ljava/nio/ByteBuffer;)V +Lorg/chromium/chrome/browser/tab/state/CouponPersistedTabData; +Lorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData; +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Ljava/lang/String;Ljava/lang/String;IIJLorg/chromium/chrome/browser/tab/WebContentsState;ILjava/lang/String;ILjava/lang/Integer;I)V +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->destroy()V +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->from(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData; +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->save()V +PLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->setRootId(I)V +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->setTimestampMillis(J)V +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->setUrl(Lorg/chromium/url/GURL;)V +PLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->setUserAgent(I)V +PLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData;->setWebContentsState(Lorg/chromium/chrome/browser/tab/WebContentsState;)V +Lorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData$1; +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabData$1;-><init>()V +Lorg/chromium/chrome/browser/tab/state/CriticalPersistedTabDataObserver; +HSPLorg/chromium/chrome/browser/tab/state/CriticalPersistedTabDataObserver;->onTimestampChanged(Lorg/chromium/chrome/browser/tab/Tab;J)V +Lorg/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage; +HSPLorg/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage;-><init>()V +Lorg/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage$1; +HSPLorg/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage$1;-><init>()V +Lorg/chromium/chrome/browser/tab/state/LevelDBPersistedTabDataStorageFactory; +HSPLorg/chromium/chrome/browser/tab/state/LevelDBPersistedTabDataStorageFactory;-><init>()V +Lorg/chromium/chrome/browser/tab/state/LevelDBPersistedTabDataStorageFactory$1; +HSPLorg/chromium/chrome/browser/tab/state/LevelDBPersistedTabDataStorageFactory$1;-><init>()V +Lorg/chromium/chrome/browser/tab/state/MockPersistedTabData; +Lorg/chromium/chrome/browser/tab/state/PersistedTabData; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabData;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/chrome/browser/tab/state/PersistedTabDataStorage;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabData;->from(Lorg/chromium/chrome/browser/tab/Tab;Ljava/lang/Class;)Lorg/chromium/chrome/browser/tab/state/PersistedTabData; +Lorg/chromium/chrome/browser/tab/state/PersistedTabData$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabData$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tab/state/PersistedTabData;)V +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabData$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration;-><init>(ILjava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration;->get(Ljava/lang/Class;Z)Lorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration;->getFilePersistedTabDataStorage()Lorg/chromium/chrome/browser/tab/state/FilePersistedTabDataStorage; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration;->getStorage()Lorg/chromium/chrome/browser/tab/state/PersistedTabDataStorage; +Lorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration$$ExternalSyntheticLambda0;-><init>(I)V +HSPLorg/chromium/chrome/browser/tab/state/PersistedTabDataConfiguration$$ExternalSyntheticLambda0;->create()Lorg/chromium/chrome/browser/tab/state/PersistedTabDataStorage; +Lorg/chromium/chrome/browser/tab/state/PersistedTabDataStorage; +Lorg/chromium/chrome/browser/tab/state/PersistedTabDataStorageFactory; +Lorg/chromium/chrome/browser/tab/state/ShoppingPersistedTabData; +PLorg/chromium/chrome/browser/tab/state/ShoppingPersistedTabData;->isPriceTrackingWithOptimizationGuideEnabled()Z +Lorg/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver; +HSPLorg/chromium/chrome/browser/tab/tab_restore/HistoricalTabModelObserver;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModel;)V +Lorg/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaver; +Lorg/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl; +HSPLorg/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModel;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Landroid/view/View;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda19;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/base/supplier/OneshotSupplierImpl;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;-><init>(Landroid/view/Window;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;->updateNavigationBarColor()V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$1; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$1;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$2; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$2;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$3; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController$3;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedNavigationBarColorController;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda11;Lorg/chromium/chrome/browser/share/ShareDelegateSupplier;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/jank_tracker/JankTrackerImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuBlocker;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda14;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManagerSupplier;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate;Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$StatusBarColorProvider;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/ui/base/IntentRequestTrackerImpl;Lorg/chromium/components/browser_ui/widget/InsetObserverViewSupplier;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda15;Lorg/chromium/base/supplier/OneshotSupplierImpl;ZLorg/chromium/chrome/browser/back_press/BackPressManager;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->buildScrimWidget()Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->onDestroy()V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->onLayoutManagerAvailable(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->onPostInflationStartup()V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;->setLayoutStateProvider(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/lifecycle/DestroyObserver;I)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;I)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;I)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda3;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$$ExternalSyntheticLambda4;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$2; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$2;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$3; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$3;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$3;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$6; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$6;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$7; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$7;-><init>(Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$RootUiTabObserver; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$RootUiTabObserver;-><init>(Lorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$RootUiTabObserver;->destroy()V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$RootUiTabObserver;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator$RootUiTabObserver;->swapToTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabbed_mode/TabbedSystemUiCoordinator; +HSPLorg/chromium/chrome/browser/tabbed_mode/TabbedSystemUiCoordinator;-><init>(Landroid/view/Window;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;)V +Lorg/chromium/chrome/browser/tabmodel/AsyncTabParams; +Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl; +HSPLorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;->hasParamsWithTabToReparent()Z +HSPLorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;->remove(I)Lorg/chromium/chrome/browser/tabmodel/AsyncTabParams; +Lorg/chromium/chrome/browser/tabmodel/ChromeTabCreator; +HSPLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;-><init>(Landroid/app/Activity;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/base/supplier/Supplier;ZLorg/chromium/chrome/browser/ChromeTabbedActivity$7;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;->createDefaultTabDelegateFactory()Lorg/chromium/chrome/browser/tab/TabDelegateFactory; +PLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;->createFrozenTab(Lorg/chromium/chrome/browser/tab/TabState;Lorg/chromium/chrome/browser/tab/state/SerializedCriticalPersistedTabData;IZI)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;->createNewTab(Lorg/chromium/content_public/browser/LoadUrlParams;ILorg/chromium/chrome/browser/tab/Tab;ILandroid/content/Intent;)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;->createNewTab(Lorg/chromium/content_public/browser/LoadUrlParams;ILorg/chromium/chrome/browser/tab/Tab;Landroid/content/Intent;)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;->tabLaunchTypeToHistogramKey(Ljava/lang/Integer;)Ljava/lang/String; +PLorg/chromium/chrome/browser/tabmodel/ChromeTabCreator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/tabmodel/EmptyTabModel; +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->addObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->getComprehensiveModel()Lorg/chromium/chrome/browser/tabmodel/TabList; +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->getCount()I +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->index()I +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->removeObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/EmptyTabModel;->setActive(Z)V +Lorg/chromium/chrome/browser/tabmodel/EmptyTabModel$LazyHolder; +Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;->addIncognitoStateObserverAndTrigger(Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider$IncognitoStateObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;->isIncognitoSelected()Z +Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider$1; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;)V +Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider$IncognitoStateObserver; +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabHost; +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabHostRegistry; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabHostRegistry;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabHostRegistry;->getInstance()Lorg/chromium/chrome/browser/tabmodel/IncognitoTabHostRegistry; +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabHostUtils; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabHostUtils;->doIncognitoTabsExist()Z +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModel; +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;-><init>(Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImplCreator;)V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->addObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->commitAllTabClosures()V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->destroyIncognitoIfNecessary()V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->getComprehensiveModel()Lorg/chromium/chrome/browser/tabmodel/TabList; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->getCount()I +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->index()I +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->isIncognito()Z +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->removeObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl;->setActive(Z)V +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl$IncognitoTabModelDelegate; +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImplCreator; +HSPLorg/chromium/chrome/browser/tabmodel/IncognitoTabModelImplCreator;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;Lorg/chromium/chrome/browser/tabmodel/ChromeTabCreator;Lorg/chromium/chrome/browser/tabmodel/TabModelOrderControllerImpl;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/tabmodel/NextTabPolicy$NextTabPolicySupplier;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;ILorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;)V +Lorg/chromium/chrome/browser/tabmodel/IncognitoTabModelObserver; +Lorg/chromium/chrome/browser/tabmodel/NextTabPolicy$NextTabPolicySupplier; +Lorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager; +HSPLorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabList;Lorg/chromium/chrome/browser/tabmodel/TabModelImpl$1;)V +HSPLorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager;->resetState()V +Lorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager$RewoundList; +HSPLorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager$RewoundList;-><init>(Lorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager;)V +HSPLorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager$RewoundList;->getCount()I +HSPLorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager$RewoundList;->getTabAt(I)Lorg/chromium/chrome/browser/tab/Tab; +Lorg/chromium/chrome/browser/tabmodel/PendingTabClosureManager$TabClosureEvent; +Lorg/chromium/chrome/browser/tabmodel/TabCreator; +HSPLorg/chromium/chrome/browser/tabmodel/TabCreator;-><init>()V +Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager; +Lorg/chromium/chrome/browser/tabmodel/TabCreatorManagerSupplier; +HSPLorg/chromium/chrome/browser/tabmodel/TabCreatorManagerSupplier;-><init>()V +Lorg/chromium/chrome/browser/tabmodel/TabList; +Lorg/chromium/chrome/browser/tabmodel/TabModel; +Lorg/chromium/chrome/browser/tabmodel/TabModelDelegate; +Lorg/chromium/chrome/browser/tabmodel/TabModelFilter; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModel;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;->allTabsClosureCommitted(Z)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;->restoreCompleted()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilter;->willAddTab(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;->addTabModelFilterObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;->getCurrentTabModelFilter()Lorg/chromium/chrome/browser/tabmodel/TabModelFilter; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;->getTabModelFilter(Z)Lorg/chromium/chrome/browser/tabmodel/TabModelFilter; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;->onTabStateInitialized()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelFilterProvider;->removeTabModelFilterObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelImpl; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;ILorg/chromium/chrome/browser/tabmodel/TabCreator;Lorg/chromium/chrome/browser/tabmodel/TabCreator;Lorg/chromium/chrome/browser/tabmodel/TabModelOrderController;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/tabmodel/NextTabPolicy$NextTabPolicySupplier;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelDelegate;Z)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->addObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->addTab(Lorg/chromium/chrome/browser/tab/Tab;III)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->commitAllTabClosures()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->getComprehensiveModel()Lorg/chromium/chrome/browser/tabmodel/TabList; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->getCount()I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->getTabAt(I)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->hasValidTab()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->index()I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->indexOf(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->isActiveModel()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->removeObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->setIndex(IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl;->supportsPendingClosures()Z +Lorg/chromium/chrome/browser/tabmodel/TabModelImpl$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelImpl$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelImpl;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelInitializer; +Lorg/chromium/chrome/browser/tabmodel/TabModelJniBridge; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelJniBridge;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;I)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelJniBridge;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelJniBridge;->getProfile()Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelJniBridge;->hasOtherRelatedTabs(Lorg/chromium/chrome/browser/tab/Tab;)Z +HSPLorg/chromium/chrome/browser/tabmodel/TabModelJniBridge;->isIncognito()Z +Lorg/chromium/chrome/browser/tabmodel/TabModelObserver; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserver;->allTabsClosureCommitted(Z)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserver;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserver;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserver;->restoreCompleted()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserver;->willAddTab(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;-><init>(JLorg/chromium/chrome/browser/tabmodel/TabModel;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->allTabsClosureCommitted(Z)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->create(JLorg/chromium/chrome/browser/tabmodel/TabModel;)Lorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->detachFromTabModel()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelObserverJniBridge;->willAddTab(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tabmodel/TabModelOrderController; +Lorg/chromium/chrome/browser/tabmodel/TabModelOrderControllerImpl; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelOrderControllerImpl;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelOrderControllerImpl;->determineInsertionIndex(IILorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelOrderControllerImpl;->willOpenInForeground(IZ)Z +Lorg/chromium/chrome/browser/tabmodel/TabModelSelector; +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/app/tabmodel/ChromeTabModelFilterFactory;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->addObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getCurrentModel()Lorg/chromium/chrome/browser/tabmodel/TabModel; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getCurrentTab()Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getCurrentTabId()I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getModel(Z)Lorg/chromium/chrome/browser/tabmodel/TabModel; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getModelForTabId(I)Lorg/chromium/chrome/browser/tabmodel/TabModel; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getModelIndex(Z)I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getTabById(I)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->getTotalTabCount()I +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->isIncognitoSelected()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->notifyChanged()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;->removeObserver(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase$1;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase$1;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;-><init>(Lorg/chromium/chrome/browser/customtabs/content/CustomTabActivityTabFactory$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/app/tabmodel/ChromeTabModelFilterFactory;Lorg/chromium/chrome/browser/tabmodel/NextTabPolicy$NextTabPolicySupplier;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;ZI)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;->commitAllTabClosures()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;->markTabStateInitialized()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;->requestToShowTab(Lorg/chromium/chrome/browser/tab/Tab;I)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$1;->onNewTabCreated(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$2; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$2;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorImpl$2;->onUrlUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;->onChange()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;->onNewTabCreated(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;->onTabHidden()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorObserver;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;->onChange()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;->onNewTabCreated(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;->onTabHidden()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;-><init>()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;->from(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/base/supplier/ObservableSupplier; +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver;->onRegistrationComplete()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver;->registerModelObservers()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabModelObserver$1;->onChange()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;->onTabRegistered(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;->onTabUnregistered(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$1;->onTabRegistered(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabObserver$1;->onTabUnregistered(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;->-$$Nest$monTabRegistered(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;->addObserverAndNotifyExistingTabRegistration(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$Observer;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;->onTabUnregistered(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$1;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$1;->onRegistrationComplete()V +Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorTabRegistrationObserver$Observer; +Lorg/chromium/chrome/browser/tabmodel/TabModelUtils; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelUtils;->getCurrentTab(Lorg/chromium/chrome/browser/tabmodel/TabList;)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelUtils;->getTabById(Lorg/chromium/chrome/browser/tabmodel/TabList;I)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabModelUtils;->getTabIndexById(Lorg/chromium/chrome/browser/tabmodel/TabList;I)I +Lorg/chromium/chrome/browser/tabmodel/TabPersistencePolicy; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistencePolicy;->setTaskRunner(Lorg/chromium/base/task/SequencedTaskRunner;)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore; +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->-$$Nest$mcompleteLoad(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;Lorg/chromium/chrome/browser/tab/TabState;Lorg/chromium/chrome/browser/tab/state/SerializedCriticalPersistedTabData;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistencePolicy;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->addTabToSaveQueueIfApplicable(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->checkAndUpdateMaxTabId()V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->getStateDirectory()Ljava/io/File; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->isCriticalPersistedTabDataSaveAndRestoreEnabled()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->isCriticalPersistedTabDataSaveOnlyEnabled()Z +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->isIncognitoTabBeingRestored(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;Lorg/chromium/chrome/browser/tab/TabState;Lorg/chromium/chrome/browser/tab/state/SerializedCriticalPersistedTabData;)Z +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->loadNextTab()V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->onStateLoaded()V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->readSavedStateFile(Ljava/io/DataInputStream;Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$OnTabStateReadCallback;Landroid/util/SparseBooleanArray;)I +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->restoreTab(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;Lorg/chromium/chrome/browser/tab/TabState;Lorg/chromium/chrome/browser/tab/state/SerializedCriticalPersistedTabData;Z)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->saveListToFile([B)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->saveNextTab()V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->saveTabListAsynchronously()V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore;->serializeTabMetadata()Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabModelSelectorMetadata; +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/app/tabmodel/TabModelOrchestrator$1;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$12;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;I)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$12;->doInBackground()Ljava/lang/Object; +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$2; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$2;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$1;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$2;->onTabRegistered(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$2;->onTabUnregistered(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$3; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$3;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$5;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;ZZ)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$5;->onDetailsRead(IILjava/lang/Boolean;Ljava/lang/String;ZZ)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$7; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$7;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$7;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$9; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$9;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Ljava/lang/String;I)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$9;->doInBackground()Ljava/lang/Object; +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$LoadTabTask;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$LoadTabTask;->doInBackground()Ljava/lang/Object; +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$LoadTabTask;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveListTask; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveListTask;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveListTask;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveListTask;->onPostExecute(Ljava/lang/Object;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveListTask;->onPreExecute()V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveTabTask; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveTabTask;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveTabTask;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveTabTask;->onPostExecute(Ljava/lang/Object;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$SaveTabTask;->onPreExecute()V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabLoader; +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabLoader;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore;Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;)V +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabLoader;->loadTabState()V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabModelSelectorMetadata; +HSPLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabModelSelectorMetadata;-><init>([B)V +Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails; +PLorg/chromium/chrome/browser/tabmodel/TabPersistentStore$TabRestoreDetails;-><init>(IILjava/lang/Boolean;Ljava/lang/String;Ljava/lang/Boolean;)V +Lorg/chromium/chrome/browser/tabmodel/TabSwitchMetrics; +Lorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl; +HSPLorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl;-><init>(Lorg/chromium/chrome/browser/app/tabmodel/DefaultTabModelSelectorFactory;Lorg/chromium/chrome/browser/tabmodel/AsyncTabParamsManagerImpl;I)V +HSPLorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl;->getIndexForWindow(Landroid/app/Activity;)I +HSPLorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl;->getTabById(I)Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/tabmodel/TabWindowManagerImpl;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;-><init>(IIZZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->cancelCleanupInProgress()V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->cleanupUnusedFiles(Lorg/chromium/chrome/browser/tabmodel/TabPersistentStore$7;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->destroy()V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->getOrCreateStateDirectory()Ljava/io/File; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->getOtherTabsId(I)Landroid/util/SparseBooleanArray; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->getStateFileName()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->getStateFileName(I)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->getStateToBeMergedFileNames()Ljava/util/List; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->isMergeInProgress()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->notifyStateLoaded(I)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->performInitialization(Lorg/chromium/base/task/SequencedTaskRunner;)Z +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->setTabContentManager(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->shouldMergeOnStartup()Z +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;->waitForInitializationToFinish()V +Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$1; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$1;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;ZZ)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$1;->doInBackground()Ljava/lang/Object; +Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$CleanUpTabStateDataTask; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$CleanUpTabStateDataTask;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$CleanUpTabStateDataTask;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/chrome/browser/tabmodel/TabbedModeTabPersistencePolicy$CleanUpTabStateDataTask;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tabpersistence/TabStateDirectory; +HSPLorg/chromium/chrome/browser/tabpersistence/TabStateDirectory;->getOrCreateTabbedModeStateDirectory()Ljava/io/File; +Lorg/chromium/chrome/browser/tabpersistence/TabStateDirectory$BaseStateDirectoryHolder; +Lorg/chromium/chrome/browser/tabpersistence/TabStateFileManager; +HSPLorg/chromium/chrome/browser/tabpersistence/TabStateFileManager;->getTabStateFilename(IZ)Ljava/lang/String; +HSPLorg/chromium/chrome/browser/tabpersistence/TabStateFileManager;->parseInfoFromFilename(Ljava/lang/String;)Landroid/util/Pair; +PLorg/chromium/chrome/browser/tabpersistence/TabStateFileManager;->readState(Ljava/io/FileInputStream;Z)Lorg/chromium/chrome/browser/tab/TabState; +PLorg/chromium/chrome/browser/tabpersistence/TabStateFileManager;->restoreTabState(Ljava/io/File;I)Lorg/chromium/chrome/browser/tab/TabState; +HSPLorg/chromium/chrome/browser/tabpersistence/TabStateFileManager;->saveState(Ljava/io/File;Lorg/chromium/chrome/browser/tab/TabState;Z)V +Lorg/chromium/chrome/browser/tasks/ReturnToChromeUtil; +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->isStartSurfaceEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->isStartSurfaceRefactorEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->shouldHideStartSurfaceWithAccessibilityOn(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->shouldImproveStartWhenFeedIsDisabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->shouldShowStartSurfaceAsTheHomePage(Landroidx/appcompat/app/AppCompatActivity;)Z +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil;->updateFeedVisibility()V +Lorg/chromium/chrome/browser/tasks/ReturnToChromeUtil$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/ReturnToChromeUtil$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/chrome/browser/tasks/TasksUma; +HSPLorg/chromium/chrome/browser/tasks/TasksUma;->getTabsInOneGroupCount(Ljava/util/HashMap;I)I +Lorg/chromium/chrome/browser/tasks/pseudotab/PseudoTab; +HSPLorg/chromium/chrome/browser/tasks/pseudotab/PseudoTab;->getListOfPseudoTab(Ljava/util/List;)Ljava/util/ArrayList; +Lorg/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver;-><init>()V +Lorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModel;Z)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->addTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->addTabGroupObserver(Lorg/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getCount()I +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getParentId(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getRelatedTabList(I)Ljava/util/List; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getRelatedTabList(Ljava/util/List;)Ljava/util/List; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getRootId(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->getValidPosition(Lorg/chromium/chrome/browser/tab/Tab;I)I +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->hasOtherRelatedTabs(Lorg/chromium/chrome/browser/tab/Tab;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->isIncognito()Z +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->markTabStateInitialized()V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->recordSessionsCount(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->removeTabGroupObserver(Lorg/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->reorder()V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->reorderGroup(I)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->selectTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;->shouldNotifyObserversOnSetIndex()Z +Lorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter$TabGroup; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter$TabGroup;-><init>(Lorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter;I)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter$TabGroup;->addTab(I)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter$TabGroup;->getTabIdList()Ljava/util/List; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter$TabGroup;->size()I +Lorg/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils; +Lorg/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils$2; +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils$2;-><init>(Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;)V +HSPLorg/chromium/chrome/browser/tasks/tab_groups/TabGroupUtils$2;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +Lorg/chromium/chrome/browser/tasks/tab_management/CouponCardView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/CouponCardView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/CouponCardView;->onFinishInflate()V +Lorg/chromium/chrome/browser/tasks/tab_management/PriceCardView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/PriceCardView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/PriceCardView;->onFinishInflate()V +Lorg/chromium/chrome/browser/tasks/tab_management/PriceMessageService$PriceWelcomeMessageProvider; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$ResetHandler;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator$$ExternalSyntheticLambda5;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;->destroy()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;->initWithNative(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$9;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;->isVisible()Z +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda2;-><init>()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda2;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda3;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$ResetHandler;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator$$ExternalSyntheticLambda5;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;->hideDialog(Z)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;->initWithNative(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$9;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;->updateColorProperties(Landroid/content/Context;Z)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$1;->allTabsClosureCommitted(Z)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$1;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$1;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$3;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;->onDetachedFromWindow()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;->updateDialogWithOrientation(I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$$ExternalSyntheticLambda0;->onGlobalLayout()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;F)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView$VisibilityListener; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$6;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$3;Ljava/lang/String;ZILorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback$OnLongPressTabItemEventListener;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback$OnLongPressTabItemEventListener; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridPanelProperties; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridPanelViewBinder$ViewHolder; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridPanelViewBinder$ViewHolder;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView;Landroidx/recyclerview/widget/RecyclerView;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogView;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGridThumbnailView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGridThumbnailView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUi; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda14;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/OneshotSupplier;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->getHandleBackPressChangedSupplier()Lorg/chromium/base/supplier/ObservableSupplier; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->recordSessionCount()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->recordTabGroupCount()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;->resetStripWithListOfTabs(Ljava/util/List;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;)V +PLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator$1;->restoreCompleted()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;-><init>(Landroid/app/Activity;Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;->getHandleBackPressChangedSupplier()Lorg/chromium/base/supplier/ObservableSupplier; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;->getTabsToShowForId(I)Ljava/util/List; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;->resetTabStripWithRelatedTabsForId(I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;I)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda1;->onIncognitoStateChanged(Z)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$1;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$1;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +PLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$1;->restoreCompleted()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$2;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$2;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$3;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$4; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$4;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$5; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$5;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator$ResetHandler; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiProperties; +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView;->onFinishInflate()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiViewBinder$ViewHolder; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiViewBinder$ViewHolder;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiToolbarView;Landroidx/recyclerview/widget/RecyclerView;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;-><init>(ILandroid/content/Context;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$ThumbnailProvider;Lorg/chromium/chrome/browser/tasks/pseudotab/PseudoTab$TitleProvider;ZLorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$3;ILorg/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$PriceWelcomeMessageController;Landroid/view/ViewGroup;ZLjava/lang/String;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback$OnLongPressTabItemEventListener;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;->initWithNative(Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;->onDestroy()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;->resetWithListOfTabs$1(Ljava/util/List;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;->resetWithListOfTabs(Ljava/util/ArrayList;ZZ)Z +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda0;-><init>(ILandroid/content/Context;Landroid/view/ViewGroup;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda3;-><init>(I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator;Landroid/content/Context;Landroid/view/ViewGroup;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda5; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$$ExternalSyntheticLambda5;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListCoordinator$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;-><init>(Landroid/content/Context;Z)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->colorFaviconWithTheme(Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$ResourceTabFavicon;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->createChromeOwnedResourceTabFavicon(Landroid/graphics/Bitmap;III)Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$ResourceTabFavicon; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->getFaviconForUrlAsync(Lorg/chromium/url/GURL;ZLorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->getResizedBitmapFromDrawable(ILandroid/graphics/drawable/Drawable;)Landroid/graphics/Bitmap; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->getRoundedGlobeFavicon(Z)Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$ResourceTabFavicon; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->initWithNative(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->processBitmap(Landroid/graphics/Bitmap;Z)Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;->processBitmapMaybeColor(Landroid/graphics/Bitmap;ZI)Landroid/graphics/drawable/Drawable; +Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;ZLorg/chromium/url/GURL;Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda1;->onFaviconAvailable(Landroid/graphics/Bitmap;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$ResourceTabFavicon; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$ResourceTabFavicon;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;ZI)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$TabFavicon; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider$TabFavicon;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Z)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel;ILorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$ThumbnailProvider;Lorg/chromium/chrome/browser/tasks/pseudotab/PseudoTab$TitleProvider;Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;ZLorg/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator;Lorg/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator$3;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$PriceWelcomeMessageController;Ljava/lang/String;ILorg/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallback$OnLongPressTabItemEventListener;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;->initWithNative()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;->onTabAdded(Lorg/chromium/chrome/browser/tab/Tab;Z)I +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;->selectTab(II)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;->updateSpanCount(Landroidx/recyclerview/widget/GridLayoutManager;II)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$$ExternalSyntheticLambda1;-><init>()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$10; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$10;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;Landroidx/recyclerview/widget/GridLayoutManager;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$11; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$11;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;Landroidx/recyclerview/widget/GridLayoutManager;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$4; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$4;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$5; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$5;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$5;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$5;->didSelectTab(IILorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$6; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$6;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$8; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$8;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$TabActionListener; +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$TabGridAccessibilityHelper; +Lorg/chromium/chrome/browser/tasks/tab_management/TabListMediator$ThumbnailProvider; +Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListModel;-><init>()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListModel;->indexFromId(I)I +Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel$CardProperties; +Lorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;->onDetachedFromWindow()V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;->onLayout(ZIIII)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;Landroid/view/View;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView$TabListOnScrollListener; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView$TabListOnScrollListener;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl;-><init>()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabManagementFieldTrial; +Lorg/chromium/chrome/browser/tasks/tab_management/TabManagementModule; +Lorg/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider;->getDelegate()Lorg/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl; +Lorg/chromium/chrome/browser/tasks/tab_management/TabProperties; +Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel;Landroidx/recyclerview/widget/RecyclerView;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter;)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$TabStripSnapshotToken; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$TabStripSnapshotToken;-><init>(Lorg/chromium/ui/modelutil/MVCListAdapter$ModelList;I)V +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$Controller; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$OnTabSelectingListener; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$TabListDelegate; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$TabSwitcherViewObserver; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator;->isShowingTabsInMRUOrder(I)Z +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$MessageItemsController; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$PriceWelcomeMessageController; +Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator$ResetHandler; +Lorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isGridTabSwitcherEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isLaunchPolishEnabled()Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabGroupsAndroidContinuationEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabGroupsAndroidEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabSelectionEditorV2Enabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabToGtsAnimationEnabled()Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabletGridTabSwitcherEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->isTabletGridTabSwitcherPolishEnabled(Landroid/content/Context;)Z +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities;->supportInstantStart(Landroid/content/Context;Z)Z +Lorg/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider; +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider;->getTabGridDialogUngroupBarBackgroundColor(Landroid/content/Context;ZZ)I +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider;->getTabGridDialogUngroupBarTextColor(Landroid/content/Context;ZZ)I +HSPLorg/chromium/chrome/browser/tasks/tab_management/TabUiThemeProvider;->getTitleTextColor(Landroid/content/Context;ZZ)I +Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController; +HSPLorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;)V +Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$1; +HSPLorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$1;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController;)V +Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$2; +HSPLorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$2;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController;)V +Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$3; +HSPLorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$3;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/browser/tasks/tab_management/UndoGroupSnackbarController$3;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +Lorg/chromium/chrome/browser/theme/ThemeColorProvider; +HSPLorg/chromium/chrome/browser/theme/ThemeColorProvider;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/theme/ThemeColorProvider;->updatePrimaryColor(IZ)V +HSPLorg/chromium/chrome/browser/theme/ThemeColorProvider;->updateTint(Landroid/content/res/ColorStateList;I)V +Lorg/chromium/chrome/browser/theme/ThemeColorProvider$ThemeColorObserver; +Lorg/chromium/chrome/browser/theme/ThemeColorProvider$TintObserver; +Lorg/chromium/chrome/browser/theme/ThemeUtils; +HSPLorg/chromium/chrome/browser/theme/ThemeUtils;->getTextBoxColorForToolbarBackground(Landroid/content/Context;Lorg/chromium/chrome/browser/tab/Tab;I)I +HSPLorg/chromium/chrome/browser/theme/ThemeUtils;->getTextBoxColorForToolbarBackgroundInNonNativePage(ILandroid/content/Context;Z)I +HSPLorg/chromium/chrome/browser/theme/ThemeUtils;->getThemedToolbarIconTint(Landroid/content/Context;I)Landroid/content/res/ColorStateList; +HSPLorg/chromium/chrome/browser/theme/ThemeUtils;->getThemedToolbarIconTintRes(I)I +HSPLorg/chromium/chrome/browser/theme/ThemeUtils;->isUsingDefaultToolbarColor(ILandroid/content/Context;Z)Z +Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider; +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/Supplier;ZZZ)V +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->calculateColor(Lorg/chromium/chrome/browser/tab/Tab;I)I +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->destroy()V +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->getBackgroundColor(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->getSceneLayerBackground(Lorg/chromium/chrome/browser/tab/Tab;)I +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->getTextBoxBackgroundAlpha(Lorg/chromium/chrome/browser/tab/Tab;)F +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->isThemingAllowed(Lorg/chromium/chrome/browser/tab/Tab;)Z +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;->updateColor(ILorg/chromium/chrome/browser/tab/Tab;Z)V +Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider$1; +HSPLorg/chromium/chrome/browser/theme/TopUiThemeColorProvider$1;-><init>(Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +Lorg/chromium/chrome/browser/toolbar/AppThemeColorProvider; +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;->onIncognitoStateChanged(Z)V +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;->updateTheme()V +Lorg/chromium/chrome/browser/toolbar/AppThemeColorProvider$1; +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider$1;-><init>(Lorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider$1;->onStartedHiding(IZZ)V +HSPLorg/chromium/chrome/browser/toolbar/AppThemeColorProvider$1;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider; +HSPLorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/ui/modaldialog/ModalDialogManager;Landroid/graphics/drawable/Drawable;Ljava/lang/String;II)V +HSPLorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;->notifyObservers(Z)V +HSPLorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;->shouldShowButton(Lorg/chromium/chrome/browser/tab/Tab;)Z +Lorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider$1; +HSPLorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider$1;-><init>(Lorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;)V +Lorg/chromium/chrome/browser/toolbar/ButtonData$ButtonSpec; +HSPLorg/chromium/chrome/browser/toolbar/ButtonData$ButtonSpec;-><init>(Landroid/graphics/drawable/Drawable;Landroid/view/View$OnClickListener;Landroid/view/View$OnLongClickListener;Ljava/lang/String;ZLorg/chromium/chrome/browser/user_education/IPHCommandBuilder;II)V +Lorg/chromium/chrome/browser/toolbar/ButtonDataImpl; +HSPLorg/chromium/chrome/browser/toolbar/ButtonDataImpl;-><init>()V +HSPLorg/chromium/chrome/browser/toolbar/ButtonDataImpl;-><init>(Landroid/graphics/drawable/Drawable;Landroid/view/View$OnClickListener;Ljava/lang/String;IZLorg/chromium/chrome/browser/user_education/IPHCommandBuilder;I)V +Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider; +Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider$ButtonDataObserver; +Lorg/chromium/chrome/browser/toolbar/ConstraintsChecker; +HSPLorg/chromium/chrome/browser/toolbar/ConstraintsChecker;-><init>(Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$ConstraintsProxy;Landroid/os/Looper;)V +Lorg/chromium/chrome/browser/toolbar/ControlContainer; +Lorg/chromium/chrome/browser/toolbar/HomeButton; +HSPLorg/chromium/chrome/browser/toolbar/HomeButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/HomeButton;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/toolbar/HomeButton;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/toolbar/HomeButton;->updateContextMenuListener()V +Lorg/chromium/chrome/browser/toolbar/HomeButton$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/HomeButton$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/HomeButton;)V +HSPLorg/chromium/chrome/browser/toolbar/HomeButton$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/HomeButton$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/HomeButton$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/HomeButton;)V +Lorg/chromium/chrome/browser/toolbar/KeyboardNavigationListener; +HSPLorg/chromium/chrome/browser/toolbar/KeyboardNavigationListener;-><init>()V +Lorg/chromium/chrome/browser/toolbar/LocationBarFocusScrimHandler; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarFocusScrimHandler;-><init>(Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$12;Landroid/content/Context;Lorg/chromium/chrome/browser/toolbar/LocationBarModel;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda13;Landroid/view/View;)V +Lorg/chromium/chrome/browser/toolbar/LocationBarModel; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/omnibox/NewTabPageDelegate;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$1;Lorg/chromium/chrome/browser/omnibox/SearchEngineLogoUtils;)V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->addObserver(Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;)V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->buildUrlBarData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/chromium/chrome/browser/omnibox/UrlBarData; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getActiveWebContents()Lorg/chromium/content_public/browser/WebContents; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getCurrentGurl()Lorg/chromium/url/GURL; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getCurrentUrl()Ljava/lang/String; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getNewTabPageDelegate()Lorg/chromium/chrome/browser/omnibox/NewTabPageDelegate; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getPageClassification(ZZ)I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getPrimaryColor()I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getProfile()Lorg/chromium/chrome/browser/profiles/Profile; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getSecurityIconColorStateList()I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getSecurityIconContentDescriptionResourceId()I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getSecurityIconResource(Z)I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getSecurityLevel()I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getSecurityLevel(Lorg/chromium/chrome/browser/tab/Tab;Z)I +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getTab()Lorg/chromium/chrome/browser/tab/Tab; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->getUrlBarData()Lorg/chromium/chrome/browser/omnibox/UrlBarData; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->hasTab()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->isInOverviewAndShowingOmnibox()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->isIncognito()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->isOfflinePage()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->isPaintPreview()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->isUsingBrandColor()Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->notifyPrimaryColorChanged()V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->notifySecurityStateChanged()V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->notifyTitleChanged()V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->notifyUrlChanged()V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->removeObserver(Lorg/chromium/chrome/browser/omnibox/LocationBarDataProvider$Observer;)V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel;->updateUsingBrandColor()V +Lorg/chromium/chrome/browser/toolbar/LocationBarModel$SpannableDisplayTextCacheKey; +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel$SpannableDisplayTextCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;IIIII)V +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel$SpannableDisplayTextCacheKey;->equals(Ljava/lang/Object;)Z +HSPLorg/chromium/chrome/browser/toolbar/LocationBarModel$SpannableDisplayTextCacheKey;->hashCode()I +Lorg/chromium/chrome/browser/toolbar/ProgressAnimationSmooth; +HSPLorg/chromium/chrome/browser/toolbar/ProgressAnimationSmooth;-><init>()V +Lorg/chromium/chrome/browser/toolbar/SettableThemeColorProvider; +HSPLorg/chromium/chrome/browser/toolbar/SettableThemeColorProvider;-><init>(Landroid/content/Context;)V +Lorg/chromium/chrome/browser/toolbar/TabCountProvider; +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider;-><init>()V +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider;->addObserverAndTrigger(Lorg/chromium/chrome/browser/toolbar/TabCountProvider$TabCountObserver;)V +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider;->updateTabCount()V +Lorg/chromium/chrome/browser/toolbar/TabCountProvider$1; +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider$1;-><init>(Lorg/chromium/chrome/browser/toolbar/TabCountProvider;)V +PLorg/chromium/chrome/browser/toolbar/TabCountProvider$1;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/toolbar/TabCountProvider$2; +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider$2;-><init>(Lorg/chromium/chrome/browser/toolbar/TabCountProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/TabCountProvider$2;->didAddTab(Lorg/chromium/chrome/browser/tab/Tab;IIZ)V +PLorg/chromium/chrome/browser/toolbar/TabCountProvider$2;->restoreCompleted()V +Lorg/chromium/chrome/browser/toolbar/TabCountProvider$TabCountObserver; +Lorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable; +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;-><init>(Landroid/content/Context;ILandroid/graphics/Bitmap;)V +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;->createTabSwitcherDrawable(Landroid/content/Context;I)Lorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable; +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;->onStateChange([I)Z +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;->setTint(Landroid/content/res/ColorStateList;)V +HSPLorg/chromium/chrome/browser/toolbar/TabSwitcherDrawable;->updateForTabCount(IZ)V +Lorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuCoordinatorImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/Supplier;Landroid/widget/ImageButton;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;->onPauseWithNative()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;->onResumeWithNative()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;->showDownloadPageTextBubble(Lorg/chromium/chrome/browser/tab/Tab;Ljava/lang/String;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$1;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$1;->handleIPHForSuccessfulPageLoad(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarDataProvider; +Lorg/chromium/chrome/browser/toolbar/ToolbarFeatures; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarFeatures;->shouldBlockCapturesForAblation()Z +HSPLorg/chromium/chrome/browser/toolbar/ToolbarFeatures;->shouldSuppressCaptures()Z +Lorg/chromium/chrome/browser/toolbar/ToolbarIntentMetadata; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarIntentMetadata;-><init>(Z)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController;Ljava/util/List;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/chrome/browser/toolbar/top/ToolbarActionModeCallback;Lorg/chromium/chrome/browser/findinpage/FindToolbarManager;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/base/supplier/OneshotSupplierImpl;ZLorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/chrome/browser/app/omnibox/OmniboxPedalDelegateImpl;Lorg/chromium/base/supplier/Supplier;ZLorg/chromium/chrome/browser/back_press/BackPressManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->checkIfNtpLoaded()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->getMenuButtonView()Landroid/widget/ImageButton; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->getNewTabPageForCurrentTab()Lorg/chromium/chrome/browser/ntp/NewTabPage; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->initializeWithNative(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;Lorg/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->isUrlBarFocused()Z +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->maybeShowCursorInLocationBar()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->onAccessibilityModeChanged(Z)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->onBackPressStateChanged()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->onTabOrModelChanged()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->onThemeColorChanged(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->onTintChanged(Landroid/content/res/ColorStateList;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->refreshSelectedTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->setUrlBarFocus(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->updateBookmarkButtonStatus()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->updateButtonStatus()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->updateForLayout(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager;->updateTabLoadingState(Z)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/tabmodel/IncognitoStateProvider;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda1;->getAsBoolean()Z +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda10; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda10;-><init>(I)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda11; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda11;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda11;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda13; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda13;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda13;->run()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda14; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda14;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda14;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/chrome/browser/identity_disc/IdentityDiscController;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda16; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda16;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda16;->getAsBoolean()Z +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda17; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda17;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda17;->onHomepageStateUpdated()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda18; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda18;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda19; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda19;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;-><init>(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;-><init>(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;->getAsBoolean()Z +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda4;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;-><init>()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda6; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda6;-><init>()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda7; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda7;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;I)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda8; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda8;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda9; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda9;-><init>(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$1;-><init>()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$10; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$10;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$10;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$10;->onFinishedShowing(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$10;->onStartedHiding(IZZ)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$10;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$11; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$11;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$12; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$12;-><init>(Lorg/chromium/chrome/browser/tab/TabObscuringHandler;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$12;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/base/supplier/ObservableSupplier;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$12;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$13; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$13;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$13;->setSearchBoxScrollListener(Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$15; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$15;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$15;->onViewDetachedFromWindow(Landroid/view/View;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$16; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$16;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$2; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$2;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$4; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->maybeTriggerCacheRefreshForZeroSuggest(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onDidFinishNavigationInPrimaryMainFrame(Lorg/chromium/chrome/browser/tab/TabImpl;Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onLoadStopped(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onSSLStateUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onTitleUpdated(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$4;->onUrlUpdated(Lorg/chromium/chrome/browser/tab/TabImpl;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$5; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$5;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +PLorg/chromium/chrome/browser/toolbar/ToolbarManager$5;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$6; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$6;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$6;->bookmarkModelChanged()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$7; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$7;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$8; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$8;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$9; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$9;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$ConstraintsProxy; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ConstraintsProxy;-><init>()V +Lorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;->isCurrentlyVisible()Z +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;->isLocationBarShown()Z +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;->setSearchBoxScrollListener(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;->setUrlFocusChangeAnimationPercent(F)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarManager$ToolbarNtpDelegate;->wasShowingNtp()Z +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;-><init>(ILandroid/content/Context;Landroid/view/View;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->animateAlphaTo(F)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->finish(Z)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->getAccessibilityClassName()Ljava/lang/CharSequence; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->initializeAnimation()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->onDetachedFromWindow()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->onSizeChanged(IIII)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->setAlpha(F)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->setForegroundColor(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->setProgress(F)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->setVisibility(I)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->start()V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;->updateTopMargin()V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda0;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$1;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$2; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBar$2;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView;-><init>(Landroid/content/Context;Landroid/widget/FrameLayout$LayoutParams;)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView;->updateAnimation(Landroid/animation/ValueAnimator;F)V +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView;->updateAnimationDuration()V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView$1; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView$1;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView$ProgressBarUpdateListener; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView$ProgressBarUpdateListener;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBarAnimatingView;)V +Lorg/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl; +HSPLorg/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl;-><init>(Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda12;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda13;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/chrome/browser/toolbar/VoiceToolbarButtonController; +HSPLorg/chromium/chrome/browser/toolbar/VoiceToolbarButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/graphics/drawable/Drawable;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$4;)V +HSPLorg/chromium/chrome/browser/toolbar/VoiceToolbarButtonController;->shouldShowButton(Lorg/chromium/chrome/browser/tab/Tab;)Z +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator;-><init>()V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator;Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda1;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarBridge; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarBridge;->createResult(ZI)Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarBridge$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarBridge$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarBridge$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/settings/SettingsLauncherImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveButtonActionMenuCoordinator;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/preferences/SharedPreferencesManager;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->addButtonVariant(ILorg/chromium/chrome/browser/toolbar/BaseButtonDataProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->addObserver(Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider$ButtonDataObserver;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->get(Lorg/chromium/chrome/browser/tab/Tab;)Lorg/chromium/chrome/browser/toolbar/ButtonDataImpl; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->notifyObservers(Z)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->onPreferenceChanged(Ljava/lang/String;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->removeObserver(Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider$ButtonDataObserver;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;->setSingleProvider(I)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;I)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$$ExternalSyntheticLambda1;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/settings/SettingsLauncherImpl;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$1; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController$1;-><init>(Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures;->getSegmentationDefault()I +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures;->isCustomizationEnabled()Z +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures;->isReaderModePageActionEnabled()Z +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor;-><init>(Lorg/chromium/ui/permissions/AndroidPermissionDelegate;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor;->isValidSegment(I)Z +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor;->recomputeUiState(Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor;ZIIZLorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$UiState; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor$UiState;-><init>(IIIZ)V +Lorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats$$ExternalSyntheticLambda1;-><init>()V +HSPLorg/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStats$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/OptionalNewTabButtonController; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/OptionalNewTabButtonController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/graphics/drawable/Drawable;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;)V +Lorg/chromium/chrome/browser/toolbar/adaptive/OptionalNewTabButtonController$Delegate; +HSPLorg/chromium/chrome/browser/toolbar/adaptive/OptionalNewTabButtonController$Delegate;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;Lorg/chromium/ui/resources/ResourceManager;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsSizer;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;Lorg/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$ConstraintsProxy;)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator;->getHandleBackPressChangedSupplier()Lorg/chromium/base/supplier/ObservableSupplier; +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda0;-><init>(I)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;)V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsCoordinator$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;-><init>(Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsSizer;Lorg/chromium/chrome/browser/fullscreen/FullscreenManager;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;ILorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;->isCompositedViewVisible()Z +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;->onStartedShowing(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;->updateAndroidViewVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;->updateCompositedViewVisibility()V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator;)V +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsProperties; +Lorg/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder$ViewHolder; +HSPLorg/chromium/chrome/browser/toolbar/bottom/BottomControlsViewBinder$ViewHolder;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;)V +Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout; +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;->createResourceAdapter()Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter; +Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout$1; +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout$1;-><init>(Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewResourceFrameLayout;Landroid/view/View;)V +Lorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer; +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;-><init>(Lorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout;I)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;->initializeNative()V +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;->isSceneOverlayTreeShowing()Z +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;->onSizeChanged(FFFI)V +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;->shouldHideAndroidBrowserControls()Z +HSPLorg/chromium/chrome/browser/toolbar/bottom/ScrollingBottomViewSceneLayer;->updateOverlay(J)Z +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/toolbar/ToolbarProgressBar;Z)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressViewBinder;)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;-><init>(Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/ui/modelutil/PropertyModel;Z)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;->finishLoadProgress(Z)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;->onNewTabObserved(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;->updateLoadProgress(F)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$1; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$1;->onLoadProgressChanged(Lorg/chromium/chrome/browser/tab/Tab;F)V +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressMediator$1;->onLoadStopped(Lorg/chromium/chrome/browser/tab/TabImpl;Z)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressProperties; +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressSimulator; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressSimulator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressSimulator$1; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressSimulator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressSimulator;Landroid/os/Looper;)V +Lorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressViewBinder; +HSPLorg/chromium/chrome/browser/toolbar/load_progress/LoadProgressViewBinder;-><init>()V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButton; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->onTintChanged(Landroid/content/res/ColorStateList;I)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->setOnKeyListener(Landroid/view/View$OnKeyListener;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->updateImageResources()V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;->updateMenuButtonHighlightDrawable()V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;-><init>(Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda7;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0;ZLorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/theme/ThemeColorProvider;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda6;I)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;->destroy()V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$SetFocusFunction; +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;ZLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/theme/ThemeColorProvider;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda7;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda6;)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda0;->onTintChanged(Landroid/content/res/ColorStateList;I)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonMediator$$ExternalSyntheticLambda2;-><init>()V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties; +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties$ShowBadgeProperty; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties$ShowBadgeProperty;-><init>(ZZ)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties$ThemeProperty; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonProperties$ThemeProperty;-><init>(Landroid/content/res/ColorStateList;I)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonState; +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder;-><init>()V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButton;Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)V +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/menu_button/MenuUiState; +HSPLorg/chromium/chrome/browser/toolbar/menu_button/MenuUiState;-><init>()V +Lorg/chromium/chrome/browser/toolbar/optional_button/OptionalButtonCoordinator; +Lorg/chromium/chrome/browser/toolbar/top/ActionModeController; +HSPLorg/chromium/chrome/browser/toolbar/top/ActionModeController;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/toolbar/top/ViewShiftingActionBarDelegate;Lorg/chromium/chrome/browser/toolbar/top/ToolbarActionModeCallback;)V +Lorg/chromium/chrome/browser/toolbar/top/ActionModeController$1; +HSPLorg/chromium/chrome/browser/toolbar/top/ActionModeController$1;-><init>()V +Lorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult; +HSPLorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult;-><init>(IIIZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult;->logCaptureReasonFromResult(Lorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult;)V +HSPLorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult;->notReady(I)Lorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult; +Lorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Landroid/view/View;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda1;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator;->handlePageLoadFinished(Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator$1; +HSPLorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/HomeButtonCoordinator$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController; +HSPLorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController;-><init>(Ljava/util/List;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController;->showHighestPrecedenceOptionalButton()V +Lorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController;Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/top/OptionalBrowsingModeButtonController$$ExternalSyntheticLambda0;->buttonDataChanged(Z)V +Lorg/chromium/chrome/browser/toolbar/top/PhoneCaptureStateToken; +HSPLorg/chromium/chrome/browser/toolbar/top/PhoneCaptureStateToken;-><init>(IILorg/chromium/chrome/browser/toolbar/ButtonDataImpl;ILorg/chromium/chrome/browser/toolbar/top/VisibleUrlText;ILandroid/content/res/ColorStateList;ZZI)V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceTabSwitcherActionMenuCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceTabSwitcherActionMenuCoordinator;-><init>()V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator;-><init>(Landroid/view/ViewStub;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider;Lorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15;ZZZLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;Lorg/chromium/base/CallbackController$CancelableCallback;ZZLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/top/ToolbarColorObserverManager;)V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;)V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator;)V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;-><init>(Landroid/content/Context;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarCoordinator$$ExternalSyntheticLambda0;ZLorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15;ZZZLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;Lorg/chromium/base/CallbackController$CancelableCallback;ZZZLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda2;Lorg/chromium/chrome/browser/toolbar/top/ToolbarColorObserverManager;)V +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;->buttonDataChanged(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;->isOnGridTabSwitcher()Z +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;->updateIdentityDisc(Lorg/chromium/chrome/browser/toolbar/ButtonDataImpl;)V +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;->updateNewTabViewTextVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;->updateNewTabViewVisibility()V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator$1; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;)V +PLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator$1;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator$2; +HSPLorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator$2;-><init>(Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarMediator;)V +Lorg/chromium/chrome/browser/toolbar/top/StartSurfaceToolbarProperties; +Lorg/chromium/chrome/browser/toolbar/top/TabSwitcherActionMenuCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/TabSwitcherActionMenuCoordinator;-><init>()V +Lorg/chromium/chrome/browser/toolbar/top/TabSwitcherActionMenuCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/top/TabSwitcherActionMenuCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TabSwitcherActionMenuCoordinator;Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;->onTabCountChanged(IZ)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButton;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda1;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator;I)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$1; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$1;->onPageLoadFinished(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$2; +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$2;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$2;->onStartedHiding(IZZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToggleTabStackButtonCoordinator$2;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/toolbar/top/Toolbar; +Lorg/chromium/chrome/browser/toolbar/top/ToolbarActionModeCallback; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarActionModeCallback;-><init>()V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarColorObserverManager; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarColorObserverManager;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarColorObserverManager;->notifyToolbarColorChanged()V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;->initWithToolbar(I)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$SwipeGestureListenerImpl; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$SwipeGestureListenerImpl;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;Landroid/content/Context;Lorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener$SwipeHandler;)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;-><init>(Landroid/view/View;Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;->createNativeResource()J +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;->isDirty()Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;->onCaptureEnd()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;->onCaptureStart(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceAdapter;)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceFrameLayout; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceFrameLayout;->createResourceAdapter()Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer$ToolbarViewResourceFrameLayout;->isReadyForCapture()Z +Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->draw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->getTabStripHeight()I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->initialize(Lorg/chromium/chrome/browser/toolbar/LocationBarModel;Lorg/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl;Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda16;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->isIncognito()Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onDraw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onLayout(ZIIII)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onNativeLibraryReady$1()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onNavigatedToDifferentPage()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->onThemeColorChanged(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->setBookmarkClickHandler(Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->setCustomTabCloseClickHandler(Lorg/chromium/chrome/browser/customtabs/features/toolbar/CustomTabToolbarCoordinator$$ExternalSyntheticLambda2;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->setVisibility(I)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->updateBackButtonVisibility(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->updateBookmarkButton(ZZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->updateForwardButtonVisibility(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;->updateReloadButtonVisibility(Z)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$1; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$1;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$2; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarLayout$2;-><init>()V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->draw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->drawLocationBar(Landroid/graphics/Canvas;J)Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->finishAnimations()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->generateToolbarSnapshotState()Lorg/chromium/chrome/browser/toolbar/top/PhoneCaptureStateToken; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getBoundsAfterAccountingForLeftButton()I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getBoundsAfterAccountingForRightButtons()I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getHomeButton()Lorg/chromium/chrome/browser/toolbar/HomeButton; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getLocationBar()Lorg/chromium/chrome/browser/omnibox/LocationBar; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getLocationBarColorForToolbarColor(I)I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getLocationBarContentRect(Landroid/graphics/Rect;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getLocationBarDefaultColorForToolbarColor(I)I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getToolbarColorForVisualState(I)I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getToolbarDefaultColor()I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getViewBoundsLeftOfLocationBar(I)I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->getViewBoundsRightOfLocationBar(I)I +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->hideOptionalButton()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->isLocationBarShownInNTP()Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->isReadyForTextureCapture()Lorg/chromium/chrome/browser/toolbar/top/CaptureReadinessResult; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->layoutLocationBarWithoutAnimationExpansion(I)Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onAttachedToWindow()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onFinishInflate()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onHomeButtonUpdate(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onMeasure(II)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onNativeLibraryReady$1()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onPrimaryColorChanged(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onSizeChanged(IIII)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onStateRestored()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onTabCountChanged(IZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onTabOrModelChanged()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onTintChanged(Landroid/content/res/ColorStateList;I)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->onWindowVisibilityChanged(I)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->resetNtpAnimationValues()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setBrowserControlsVisibilityDelegate(Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setContentAttached()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setForceTextureCapture(Z)Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setLayoutUpdater(Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setLocationBarCoordinator(Lorg/chromium/chrome/browser/omnibox/LocationBarCoordinator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setOnTabSwitcherClickHandler(Landroid/view/View$OnClickListener;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setOnTabSwitcherLongClickHandler(Landroid/view/View$OnLongClickListener;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setTabCountProvider(Lorg/chromium/chrome/browser/toolbar/TabCountProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->setTextureCaptureMode(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateButtonVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateLocationBarBackgroundBounds(ILandroid/graphics/Rect;)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateLocationBarLayoutForExpansionAnimation()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateModernLocationBarColor(I)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateNtpAnimationState()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateProgressBarVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateShadowVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateToolbarBackground(I)V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateUnfocusedLocationBarLayoutParams()Z +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateUrlExpansionAnimation()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateUrlExpansionFraction()V +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;->updateVisualsForLocationBarState()V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;I)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$1; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$2; +HSPLorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$2;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone;I)V +Lorg/chromium/chrome/browser/toolbar/top/ToolbarPhone$NtpSearchBoxDrawable; +Lorg/chromium/chrome/browser/toolbar/top/ToolbarTablet; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;-><init>(Lorg/chromium/chrome/browser/toolbar/top/ToolbarControlContainer;Landroid/view/ViewStub;Lorg/chromium/chrome/browser/toolbar/top/ToolbarLayout;Lorg/chromium/chrome/browser/toolbar/LocationBarModel;Lorg/chromium/chrome/browser/toolbar/ToolbarTabControllerImpl;Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Ljava/util/List;Lorg/chromium/chrome/browser/theme/ThemeColorProvider;Lorg/chromium/chrome/browser/toolbar/AppThemeColorProvider;Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;Lorg/chromium/chrome/browser/toolbar/menu_button/MenuButtonCoordinator;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/toolbar/ButtonDataProvider;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda15;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda14;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda3;ZZZZZLorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda16;Lorg/chromium/chrome/browser/toolbar/ToolbarManager$$ExternalSyntheticLambda5;ZLorg/chromium/base/CallbackController$CancelableCallback;ZLorg/chromium/chrome/browser/toolbar/ToolbarManager$ConstraintsProxy;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserStateBrowserControlsVisibilityDelegate;Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;->finishAnimations()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;->setTabCountProvider(Lorg/chromium/chrome/browser/toolbar/TabCountProvider;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;->updateButtonVisibility()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;->updateReloadButtonVisibility(Z)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/toolbar/LocationBarModel;I)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator;I)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$ToolbarColorObserver; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarCoordinator$UrlExpansionObserver; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager$Delegate;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarInteractabilityManager$Delegate; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/layouts/LayoutManagerProvider$Unowned;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsSizer;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;IZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->getUpdatedSceneOverlayTree(Landroid/graphics/RectF;Lorg/chromium/ui/resources/ResourceManager;F)Lorg/chromium/chrome/browser/layouts/scene_layer/SceneOverlayLayer; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->isSceneOverlayTreeShowing()Z +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->onSizeChanged(FFFI)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->setManualVisibility(Z)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->shouldHideAndroidBrowserControls()Z +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator;->updateOverlay(J)Z +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Landroid/content/Context;Lorg/chromium/chrome/browser/layouts/LayoutStateProvider;Lorg/chromium/base/Callback;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsSizer;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;IZ)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;->updateProgress()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;->updateShadowState()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;->updateThemeColor(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;->updateVisibility()V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$1; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$1;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;I)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$1;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$2; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$2;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$2;->onLoadProgressChanged(Lorg/chromium/chrome/browser/tab/Tab;F)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$3; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator$3;-><init>(Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayMediator;)V +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarOverlayProperties; +Lorg/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer; +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer;-><init>(Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer;->destroy()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer;->initializeNative()V +HSPLorg/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer;->setContentTree(Lorg/chromium/chrome/browser/layouts/scene_layer/SceneLayer;)V +Lorg/chromium/chrome/browser/toolbar/top/ViewShiftingActionBarDelegate; +HSPLorg/chromium/chrome/browser/toolbar/top/ViewShiftingActionBarDelegate;-><init>(Landroidx/appcompat/app/ActionBar;Landroid/view/View;Landroid/view/View;)V +Lorg/chromium/chrome/browser/toolbar/top/VisibleUrlText; +HSPLorg/chromium/chrome/browser/toolbar/top/VisibleUrlText;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V +Lorg/chromium/chrome/browser/translate/TranslateUtils; +HSPLorg/chromium/chrome/browser/translate/TranslateUtils;->canTranslateCurrentTab(Lorg/chromium/chrome/browser/tab/Tab;Z)Z +Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker; +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker;-><init>(Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlockerFactory;)V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker;->recordBlockDrawForInitialTabHistograms(ZZ)V +Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$1; +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$1;-><init>(Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$1;->onPostInflationStartup()V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$1;->onPreInflationStartup()V +Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$2; +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$2;-><init>(Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$2;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$2;->onStopWithNative()V +Lorg/chromium/chrome/browser/ui/BottomContainer; +HSPLorg/chromium/chrome/browser/ui/BottomContainer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/browser/ui/BottomContainer;->setTranslationY(F)V +Lorg/chromium/chrome/browser/ui/BottomContainer$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/BottomContainer$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ui/BottomContainer;)V +HSPLorg/chromium/chrome/browser/ui/BottomContainer$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/tab/TabObscuringHandler;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/base/supplier/OneshotSupplier;Lorg/chromium/base/supplier/OneshotSupplier;Z)V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager;->onDestroy()V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager;->setActivityTab(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager;->updateSuppressionForTabSwitcher(Lorg/chromium/chrome/browser/tab/Tab;Ljava/lang/Integer;Ljava/lang/Integer;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ui/BottomSheetManager;I)V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager$1; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$1;-><init>(Lorg/chromium/chrome/browser/ui/BottomSheetManager;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;)V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager$2; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$2;-><init>(Lorg/chromium/chrome/browser/ui/BottomSheetManager;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager$3; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$3;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;)V +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$3;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/BottomSheetManager$4; +HSPLorg/chromium/chrome/browser/ui/BottomSheetManager$4;-><init>(Lorg/chromium/chrome/browser/ui/BottomSheetManager;Lorg/chromium/chrome/features/start_surface/StartSurface;)V +Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker; +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;->-$$Nest$mmaybeUnblockDraw(Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ui/AppLaunchDrawBlocker$$ExternalSyntheticLambda0;)V +Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$1; +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$1;-><init>(Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$1;->onFinishNativeInitialization()V +Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$2; +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$2;-><init>(Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker;)V +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlocker$2;->onTabStateInitialized()V +Lorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlockerFactory; +HSPLorg/chromium/chrome/browser/ui/IncognitoRestoreAppLaunchDrawBlockerFactory;-><init>(Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;)V +Lorg/chromium/chrome/browser/ui/MediaCaptureOverlayController; +HSPLorg/chromium/chrome/browser/ui/MediaCaptureOverlayController;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;Landroid/view/View;)V +Lorg/chromium/chrome/browser/ui/MediaCaptureOverlayController$CaptureOverlayTabObserver; +HSPLorg/chromium/chrome/browser/ui/MediaCaptureOverlayController$CaptureOverlayTabObserver;-><init>(Lorg/chromium/chrome/browser/ui/MediaCaptureOverlayController;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda11;Lorg/chromium/chrome/browser/share/ShareDelegateSupplier;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorSupplier;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/base/jank_tracker/JankTracker;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuBlocker;Ljava/util/function/BooleanSupplier;Ljava/util/function/BooleanSupplier;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManagerSupplier;Lorg/chromium/chrome/browser/fullscreen/FullscreenHtmlApiHandler;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/base/supplier/Supplier;ILorg/chromium/base/supplier/Supplier;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate;Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$StatusBarColorProvider;Lorg/chromium/ui/base/IntentRequestTrackerImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/Supplier;ZLorg/chromium/chrome/browser/back_press/BackPressManager;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->getPrimaryDisplaySizeInInches()D +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->initializeToolbar()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onDestroy()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onInflationComplete()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onLayoutManagerAvailable(Lorg/chromium/chrome/browser/compositor/layouts/LayoutManagerImpl;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onPostInflationStartup()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->onPreInflationStartup()V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->setLayoutStateProvider(Lorg/chromium/chrome/browser/layouts/LayoutStateProvider;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->shouldAllowBrightThemeColors()Z +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator;->shouldAllowThemingInNightMode()Z +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda2;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda3;-><init>(Lorg/chromium/chrome/browser/toolbar/VoiceToolbarButtonController;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda3;->onVoiceAvailabilityImpacted()V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda4; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda4;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda5; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda5;-><init>(I)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$1; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$1;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$10; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$10;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$11; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$11;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$12; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$12;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$2; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$2;-><init>(Landroid/view/ViewGroup;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$3; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$3;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$4; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$4;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$5; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$5;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$8; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$8;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$8;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$8;->onFinishedShowing(I)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$8;->onStartedHiding(IZZ)V +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$8;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/ui/RootUiCoordinator$9; +HSPLorg/chromium/chrome/browser/ui/RootUiCoordinator$9;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator;)V +Lorg/chromium/chrome/browser/ui/appmenu/AppMenu; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuBlocker; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuButtonHelper; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuButtonHelperImpl; +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuButtonHelperImpl;-><init>(Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;)V +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuClickHandler; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuCoordinatorImpl; +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuCoordinatorImpl;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/toolbar/ToolbarManager;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate;Landroid/view/View;Landroid/view/View;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;)V +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandler; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl; +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuPropertiesDelegate;Lorg/chromium/chrome/browser/ui/appmenu/AppMenuDelegate;Landroid/view/View;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Landroid/view/View;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;->hideAppMenu()V +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;->onStartWithNative()V +HSPLorg/chromium/chrome/browser/ui/appmenu/AppMenuHandlerImpl;->onStopWithNative()V +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuObserver; +Lorg/chromium/chrome/browser/ui/appmenu/AppMenuPropertiesDelegate; +Lorg/chromium/chrome/browser/ui/appmenu/MenuButtonDelegate; +Lorg/chromium/chrome/browser/ui/favicon/FaviconHelper; +HSPLorg/chromium/chrome/browser/ui/favicon/FaviconHelper;-><init>()V +HSPLorg/chromium/chrome/browser/ui/favicon/FaviconHelper;->getLocalFaviconImageForURL(Lorg/chromium/chrome/browser/profiles/Profile;Ljava/lang/String;ILorg/chromium/chrome/browser/ui/favicon/FaviconHelper$FaviconImageCallback;)Z +Lorg/chromium/chrome/browser/ui/favicon/FaviconHelper$FaviconImageCallback; +Lorg/chromium/chrome/browser/ui/favicon/FaviconUtils; +HSPLorg/chromium/chrome/browser/ui/favicon/FaviconUtils;->createCircularIconGenerator(Landroid/content/Context;)Lorg/chromium/components/browser_ui/widget/RoundedIconGenerator; +HSPLorg/chromium/chrome/browser/ui/favicon/FaviconUtils;->createRoundedBitmapDrawable(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)Landroidx/core/graphics/drawable/RoundedBitmapDrawable21; +Lorg/chromium/chrome/browser/ui/messages/snackbar/Snackbar; +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection; +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection;-><init>()V +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection;->getCurrent()Lorg/chromium/chrome/browser/ui/messages/snackbar/Snackbar; +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarCollection;->removeSnackbarFromList(Ljava/util/LinkedList;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$SnackbarController;)Z +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager; +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;-><init>(Landroid/app/Activity;Landroid/view/ViewGroup;Lorg/chromium/ui/base/ActivityWindowAndroid;)V +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;->dismissSnackbars(Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$SnackbarController;)V +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;->updateView()V +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$1; +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$1;-><init>(Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;)V +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$SnackbarController; +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager$SnackbarManageable; +Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManagerProvider; +HSPLorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManagerProvider;->from(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager; +Lorg/chromium/chrome/browser/ui/native_page/NativePage; +HSPLorg/chromium/chrome/browser/ui/native_page/NativePage;->isNativePageUrl(Lorg/chromium/url/GURL;Z)Z +HSPLorg/chromium/chrome/browser/ui/native_page/NativePage;->nativePageType(Ljava/lang/String;Lorg/chromium/chrome/browser/ui/native_page/NativePage;Z)I +Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager; +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;-><init>()V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->get()Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager; +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->initializeFromCache()V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->onTemplateURLServiceChanged()V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->onTemplateUrlServiceLoaded()V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->setCurrentlyLoadedPreferences(Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;Z)V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;->updateDefaultSearchEngineInfo()V +Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$$ExternalSyntheticLambda0;-><init>(ZLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager;)V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences; +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;-><init>(Ljava/lang/String;Ljava/lang/String;ZZZ)V +HSPLorg/chromium/chrome/browser/ui/searchactivityutils/SearchActivityPreferencesManager$SearchActivityPreferences;->equals(Ljava/lang/Object;)Z +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController; +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;-><init>(Landroid/view/Window;ZLandroidx/appcompat/app/AppCompatActivity;Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$StatusBarColorProvider;Lorg/chromium/base/supplier/ObservableSupplierImpl;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/theme/TopUiThemeColorProvider;)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->calculateDefaultStatusBarColor()I +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->isStandardNTP()Z +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->onDestroy()V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->onToolbarColorChanged(I)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->setStatusBarColor(Landroid/view/Window;I)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController;->updateStatusBarColor()V +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$1; +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$1;-><init>(Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;Lorg/chromium/chrome/browser/ActivityTabProvider;)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$1;->onDestroyed(Lorg/chromium/chrome/browser/tab/Tab;)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$1;->onObservingDifferentTab(Lorg/chromium/chrome/browser/tab/Tab;)V +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$2; +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$2;-><init>(Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;)V +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$3; +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$3;-><init>(Lorg/chromium/chrome/browser/ui/system/StatusBarColorController;)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$3;->onFinishedHiding(I)V +HSPLorg/chromium/chrome/browser/ui/system/StatusBarColorController$3;->onStartedShowing(IZ)V +Lorg/chromium/chrome/browser/ui/system/StatusBarColorController$StatusBarColorProvider; +Lorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController; +HSPLorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda8;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;)V +Lorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController$1; +HSPLorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController$1;-><init>(Lorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda4;Landroid/content/Context;)V +HSPLorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController$1;->allTabsClosureCommitted(Z)V +HSPLorg/chromium/chrome/browser/undo_tab_close_snackbar/UndoBarController$1;->disableUndo(Z)Z +Lorg/chromium/chrome/browser/usage_stats/DigitalWellbeingClient; +HSPLorg/chromium/chrome/browser/usage_stats/DigitalWellbeingClient;-><init>()V +Lorg/chromium/chrome/browser/usage_stats/EventTracker; +HSPLorg/chromium/chrome/browser/usage_stats/EventTracker;-><init>(Lorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;)V +Lorg/chromium/chrome/browser/usage_stats/EventTracker$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/usage_stats/EventTracker$$ExternalSyntheticLambda1;-><init>(I)V +Lorg/chromium/chrome/browser/usage_stats/EventTracker$$ExternalSyntheticLambda2; +HSPLorg/chromium/chrome/browser/usage_stats/EventTracker$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/chrome/browser/usage_stats/EventTracker;)V +HSPLorg/chromium/chrome/browser/usage_stats/EventTracker$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usage_stats/NotificationSuspender; +HSPLorg/chromium/chrome/browser/usage_stats/NotificationSuspender;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;)V +Lorg/chromium/chrome/browser/usage_stats/PageViewObserver; +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;-><init>(Landroid/app/Activity;Lorg/chromium/base/supplier/ObservableSupplier;Lorg/chromium/chrome/browser/usage_stats/EventTracker;Lorg/chromium/chrome/browser/usage_stats/TokenTracker;Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;->checkSuspendedTabState(Ljava/lang/String;Z)Z +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;->didFirstVisuallyNonEmptyPaint(Lorg/chromium/chrome/browser/tab/TabImpl;)V +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;->onHidden(Lorg/chromium/chrome/browser/tab/Tab;I)V +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;->onUpdateUrl(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver;->updateUrl(Lorg/chromium/url/GURL;)V +Lorg/chromium/chrome/browser/usage_stats/PageViewObserver$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/usage_stats/PageViewObserver;)V +HSPLorg/chromium/chrome/browser/usage_stats/PageViewObserver$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usage_stats/SuspendedTab; +HSPLorg/chromium/chrome/browser/usage_stats/SuspendedTab;-><init>(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/chrome/browser/usage_stats/SuspendedTab;->destroy()V +HSPLorg/chromium/chrome/browser/usage_stats/SuspendedTab;->from(Lorg/chromium/chrome/browser/tab/Tab;Lorg/chromium/base/supplier/Supplier;)Lorg/chromium/chrome/browser/usage_stats/SuspendedTab; +Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker; +HSPLorg/chromium/chrome/browser/usage_stats/SuspensionTracker;-><init>(Lorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;Lorg/chromium/chrome/browser/usage_stats/NotificationSuspender;)V +Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker;)V +HSPLorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda1;-><init>()V +HSPLorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object; +Lorg/chromium/chrome/browser/usage_stats/TokenTracker; +HSPLorg/chromium/chrome/browser/usage_stats/TokenTracker;-><init>(Lorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;)V +Lorg/chromium/chrome/browser/usage_stats/TokenTracker$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/usage_stats/TokenTracker$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/usage_stats/TokenTracker;)V +HSPLorg/chromium/chrome/browser/usage_stats/TokenTracker$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usage_stats/TokenTracker$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/usage_stats/TokenTracker$$ExternalSyntheticLambda1;-><init>(I)V +Lorg/chromium/chrome/browser/usage_stats/UsageStatsBridge; +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;Lorg/chromium/chrome/browser/usage_stats/UsageStatsService;)V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;->createEventListAndRunCallback([[BLorg/chromium/base/Callback;)V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsBridge;->createMapAndRunCallback([Ljava/lang/String;[Ljava/lang/String;Lorg/chromium/base/Callback;)V +Lorg/chromium/chrome/browser/usage_stats/UsageStatsBridge$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsBridge$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/usage_stats/SuspensionTracker$$ExternalSyntheticLambda0;)V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsBridge$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usage_stats/UsageStatsService; +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService;-><init>()V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService;->createPageViewObserverIfEnabled(Landroid/app/Activity;Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/base/supplier/ObservableSupplierImpl;)V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService;->getInstance()Lorg/chromium/chrome/browser/usage_stats/UsageStatsService; +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService;->notifyObserversOfSuspensions(Ljava/util/List;Z)V +Lorg/chromium/chrome/browser/usage_stats/UsageStatsService$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/browser/usage_stats/UsageStatsService;I)V +HSPLorg/chromium/chrome/browser/usage_stats/UsageStatsService$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/usb/UsbNotificationManager; +HSPLorg/chromium/chrome/browser/usb/UsbNotificationManager;->updateUsbNotificationForTab(Landroid/content/Context;ILorg/chromium/content_public/browser/WebContents;Lorg/chromium/url/GURL;Z)V +Lorg/chromium/chrome/browser/user_education/IPHCommand; +HSPLorg/chromium/chrome/browser/user_education/IPHCommand;-><init>(Landroid/content/res/Resources;Ljava/lang/String;I[Ljava/lang/Object;I[Ljava/lang/Object;ZLandroid/view/View;Ljava/lang/Runnable;Ljava/lang/Runnable;Ljava/lang/Runnable;JLorg/chromium/ui/widget/ViewRectProvider;Lorg/chromium/components/browser_ui/widget/highlight/ViewHighlighter$HighlightParams;Landroid/graphics/Rect;ZI)V +Lorg/chromium/chrome/browser/user_education/IPHCommandBuilder; +HSPLorg/chromium/chrome/browser/user_education/IPHCommandBuilder;-><init>(Landroid/content/res/Resources;Ljava/lang/String;II)V +HSPLorg/chromium/chrome/browser/user_education/IPHCommandBuilder;->build()Lorg/chromium/chrome/browser/user_education/IPHCommand; +Lorg/chromium/chrome/browser/user_education/UserEducationHelper; +HSPLorg/chromium/chrome/browser/user_education/UserEducationHelper;-><init>(Landroid/app/Activity;Landroid/os/Handler;)V +HSPLorg/chromium/chrome/browser/user_education/UserEducationHelper;->requestShowIPH(Lorg/chromium/chrome/browser/user_education/IPHCommand;)V +Lorg/chromium/chrome/browser/user_education/UserEducationHelper$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/user_education/UserEducationHelper$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/user_education/UserEducationHelper;Lorg/chromium/components/feature_engagement/Tracker;Lorg/chromium/chrome/browser/user_education/IPHCommand;)V +HSPLorg/chromium/chrome/browser/user_education/UserEducationHelper$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/browser/util/AndroidTaskUtils; +HSPLorg/chromium/chrome/browser/util/AndroidTaskUtils;->getTaskInfoFromTask(Landroid/app/ActivityManager$AppTask;)Landroid/app/ActivityManager$RecentTaskInfo; +Lorg/chromium/chrome/browser/util/ChromeAccessibilityUtil; +HSPLorg/chromium/chrome/browser/util/ChromeAccessibilityUtil;-><init>()V +HSPLorg/chromium/chrome/browser/util/ChromeAccessibilityUtil;->get()Lorg/chromium/chrome/browser/util/ChromeAccessibilityUtil; +HSPLorg/chromium/chrome/browser/util/ChromeAccessibilityUtil;->isAccessibilityEnabled()Z +Lorg/chromium/chrome/browser/util/ChromeAccessibilityUtil$ActivityStateListenerImpl; +HSPLorg/chromium/chrome/browser/util/ChromeAccessibilityUtil$ActivityStateListenerImpl;-><init>(Lorg/chromium/chrome/browser/util/ChromeAccessibilityUtil;)V +HSPLorg/chromium/chrome/browser/util/ChromeAccessibilityUtil$ActivityStateListenerImpl;->onActivityStateChange(Landroid/app/Activity;I)V +Lorg/chromium/chrome/browser/util/ChromeFileProvider; +HSPLorg/chromium/chrome/browser/util/ChromeFileProvider;-><init>()V +Lorg/chromium/chrome/browser/video_tutorials/VideoTutorialServiceFactory$LazyHolder; +Lorg/chromium/chrome/browser/video_tutorials/iph/TryNowTrackerImpl; +HSPLorg/chromium/chrome/browser/video_tutorials/iph/TryNowTrackerImpl;-><init>()V +Lorg/chromium/chrome/browser/vr/VrDelegate; +HSPLorg/chromium/chrome/browser/vr/VrDelegate;-><init>()V +Lorg/chromium/chrome/browser/vr/VrDelegateFallback; +HSPLorg/chromium/chrome/browser/vr/VrDelegateFallback;-><init>()V +Lorg/chromium/chrome/browser/vr/VrDelegateProviderFallback; +HSPLorg/chromium/chrome/browser/vr/VrDelegateProviderFallback;-><init>()V +Lorg/chromium/chrome/browser/vr/VrModule; +Lorg/chromium/chrome/browser/vr/VrModuleProvider; +HSPLorg/chromium/chrome/browser/vr/VrModuleProvider;->getDelegate()Lorg/chromium/chrome/browser/vr/VrDelegateFallback; +Lorg/chromium/chrome/browser/webapps/AddToHomescreenIPHController; +HSPLorg/chromium/chrome/browser/webapps/AddToHomescreenIPHController;-><init>(Landroidx/appcompat/app/AppCompatActivity;Lorg/chromium/ui/base/ActivityWindowAndroid;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/components/messages/MessageDispatcher;)V +Lorg/chromium/chrome/browser/webapps/AddToHomescreenMostVisitedTileClickObserver; +HSPLorg/chromium/chrome/browser/webapps/AddToHomescreenMostVisitedTileClickObserver;-><init>(Lorg/chromium/chrome/browser/ActivityTabProvider;Lorg/chromium/chrome/browser/webapps/AddToHomescreenIPHController;)V +Lorg/chromium/chrome/browser/webapps/ChromeWebApkHost; +HSPLorg/chromium/chrome/browser/webapps/ChromeWebApkHost;->init()V +Lorg/chromium/chrome/browser/webapps/WebappRegistry; +HSPLorg/chromium/chrome/browser/webapps/WebappRegistry;-><init>()V +HSPLorg/chromium/chrome/browser/webapps/WebappRegistry;->getOriginsWithWebApk()Ljava/util/HashSet; +HSPLorg/chromium/chrome/browser/webapps/WebappRegistry;->initStorages(Ljava/lang/String;)V +Lorg/chromium/chrome/browser/webapps/WebappRegistry$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/browser/webapps/WebappRegistry$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/browser/webapps/WebappRegistry;Ljava/util/ArrayList;Z)V +HSPLorg/chromium/chrome/browser/webapps/WebappRegistry$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/chrome/browser/webapps/WebappRegistry$Holder; +Lorg/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider; +HSPLorg/chromium/chrome/browser/webauthn/CableAuthenticatorModuleProvider;->canDeviceSupportCable()Z +Lorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinator; +Lorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinatorFactory; +HSPLorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinatorFactory;-><init>(Landroid/app/Activity;Landroid/view/ViewGroup;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$ScrollableContainerDelegateImpl;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/base/supplier/Supplier;JLorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegate;)V +Lorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinatorFactory$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinatorFactory$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/features/start_surface/ExploreSurfaceCoordinatorFactory$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/features/start_surface/StartSurface; +Lorg/chromium/chrome/features/start_surface/StartSurface$OnTabSelectingListener; +Lorg/chromium/chrome/features/start_surface/StartSurface$StateObserver; +Lorg/chromium/chrome/features/start_surface/StartSurfaceConfiguration; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceConfiguration;->isBehaviouralTargetingEnabled()Z +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceConfiguration;->isStartSurfaceFlagEnabled()Z +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceConfiguration;->recordHistogram(JLjava/lang/String;Z)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;-><init>(Landroid/app/Activity;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/base/supplier/ObservableSupplierImpl;ZLorg/chromium/ui/base/ActivityWindowAndroid;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda16;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/chrome/browser/fullscreen/BrowserControlsManager;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/chrome/browser/share/ShareDelegateSupplier;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/init/ChromeActivityNativeDelegate;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Lorg/chromium/base/jank_tracker/JankTrackerImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda18;Lorg/chromium/chrome/browser/share/crow/CrowButtonDelegateImpl;Lorg/chromium/chrome/browser/back_press/BackPressManager;Lorg/chromium/base/supplier/OneshotSupplierImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;)V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->addHeaderOffsetChangeListener(Lcom/google/android/material/appbar/AppBarLayout$OnOffsetChangedListener;)V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->createSwipeRefreshLayout()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->createTasksSurface(Landroid/app/Activity;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/ui/modelutil/PropertyModel;ILorg/chromium/base/supplier/Supplier;ZZLorg/chromium/ui/base/WindowAndroid;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Landroid/view/ViewGroup;Lorg/chromium/base/supplier/OneshotSupplier;)Lorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->getPixelSize(I)I +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->initWithNative()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->initializeOffsetChangedListener()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->onHide()V +PLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->onOverviewShownAtLaunch(JZ)V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;->setOnTabSelectingListener(Lorg/chromium/chrome/features/start_surface/StartSurface$OnTabSelectingListener;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda3; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda3;-><init>(I)V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda3;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda6; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda6;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;IIIIIIIII)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$ScrollableContainerDelegateImpl; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$ScrollableContainerDelegateImpl;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$Controller;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher;Lorg/chromium/chrome/browser/tabmodel/TabModelSelectorBase;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda1;ZLandroid/content/Context;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda1;ZLorg/chromium/base/supplier/OneshotSupplierImpl;ZLorg/chromium/base/jank_tracker/JankTrackerImpl;Lorg/chromium/chrome/features/start_surface/StartSurfaceCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/base/supplier/ObservableSupplierImpl;Landroid/view/View;Lorg/chromium/chrome/browser/back_press/BackPressManager;Landroid/view/ViewGroup;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/ChromeTabbedActivity$$ExternalSyntheticLambda13;)V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->getFeedReliabilityLogger()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->isHomepageShown()Z +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->mayRecordHomepageSessionBegin()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->mayRecordHomepageSessionEnd()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->onHide()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->onPauseWithNative()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->onResumeWithNative()V +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator;->setStartSurfaceState(II)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator$1; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator$1;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator$2; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator$2;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator$4; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator$4;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator$5; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceMediator$5;-><init>(Lorg/chromium/chrome/features/start_surface/StartSurfaceMediator;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceProperties; +Lorg/chromium/chrome/features/start_surface/StartSurfaceUserData; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceUserData;-><init>()V +Lorg/chromium/chrome/features/start_surface/StartSurfaceUserData$LazyHolder; +Lorg/chromium/chrome/features/start_surface/StartSurfaceWithParentViewBinder; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceWithParentViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/features/start_surface/StartSurfaceWithParentViewBinder$ViewHolder;Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)V +Lorg/chromium/chrome/features/start_surface/StartSurfaceWithParentViewBinder$ViewHolder; +HSPLorg/chromium/chrome/features/start_surface/StartSurfaceWithParentViewBinder$ViewHolder;-><init>(Landroid/view/ViewGroup;Lorg/chromium/chrome/features/tasks/TasksView;Lorg/chromium/chrome/browser/feed/FeedSwipeRefreshLayout;)V +Lorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout; +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/compositor/layouts/LayoutUpdateHost;Lorg/chromium/chrome/browser/compositor/CompositorViewHolder;Lorg/chromium/chrome/features/start_surface/StartSurface;Lorg/chromium/base/jank_tracker/JankTracker;Landroid/view/ViewGroup;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;)V +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;->destroy()V +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;->onFinishNativeInitialization()V +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;->setTabModelSelector(Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;)V +Lorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;)V +Lorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout$1; +HSPLorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout$1;-><init>(Lorg/chromium/chrome/features/start_surface/TabSwitcherAndStartSurfaceLayout;Landroid/content/Context;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator;-><init>(Landroid/app/Activity;Landroid/widget/FrameLayout;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;)V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator;->getController()Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$Controller; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator;->getTabListDelegate()Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$TabListDelegate; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator;->initWithNative()V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator;->setOnTabSelectingListener(Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$OnTabSelectingListener;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$1; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$1;-><init>()V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherCoordinator$1;->postHiding()V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;-><init>(Landroid/content/Context;Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/tasks/tab_management/TabListFaviconProvider;)V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;->addTabSwitcherViewObserver(Lorg/chromium/chrome/browser/tasks/tab_management/TabSwitcher$TabSwitcherViewObserver;)V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;->overviewVisible()Z +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;I)V +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$1; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$1;-><init>(Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;)V +Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$2; +HSPLorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator$2;-><init>(Lorg/chromium/chrome/features/tasks/SingleTabSwitcherMediator;)V +Lorg/chromium/chrome/features/tasks/SingleTabView; +HSPLorg/chromium/chrome/features/tasks/SingleTabView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/features/tasks/SingleTabView;->onFinishInflate()V +Lorg/chromium/chrome/features/tasks/SingleTabViewProperties; +Lorg/chromium/chrome/features/tasks/TasksSurface; +Lorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator;-><init>(Landroid/app/Activity;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Lorg/chromium/ui/modelutil/PropertyModel;ILorg/chromium/base/supplier/Supplier;ZZLorg/chromium/ui/base/WindowAndroid;Lorg/chromium/chrome/browser/init/ActivityLifecycleDispatcherImpl;Lorg/chromium/chrome/browser/tabmodel/TabModelSelector;Lorg/chromium/chrome/browser/ui/messages/snackbar/SnackbarManager;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/compositor/layouts/content/TabContentManager;Lorg/chromium/ui/modaldialog/ModalDialogManager;Lorg/chromium/chrome/browser/browser_controls/BrowserControlsVisibilityManager;Lorg/chromium/chrome/browser/tabmodel/TabCreatorManager;Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController;Lorg/chromium/base/supplier/Supplier;Lorg/chromium/chrome/browser/multiwindow/MultiWindowModeStateDispatcherImpl;Landroid/view/ViewGroup;Lorg/chromium/base/supplier/OneshotSupplier;)V +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator;->onFinishNativeInitialization(Lorg/chromium/chrome/browser/omnibox/OmniboxStub;)V +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator;->onHide()V +Lorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda0;->bind(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda1;-><init>(Landroid/app/Activity;)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/features/tasks/TasksSurfaceCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/ntp/IncognitoCookieControlsManager;Z)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator$1; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceMediator$1;-><init>(Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator;I)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator$2; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceMediator$2;-><init>(Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator;)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator$3; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceMediator$3;-><init>(Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator;)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator$5; +HSPLorg/chromium/chrome/features/tasks/TasksSurfaceMediator$5;-><init>(Lorg/chromium/chrome/features/tasks/TasksSurfaceMediator;)V +Lorg/chromium/chrome/features/tasks/TasksSurfaceProperties; +Lorg/chromium/chrome/features/tasks/TasksView; +HSPLorg/chromium/chrome/features/tasks/TasksView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/chrome/features/tasks/TasksView;->addHeaderOffsetChangeListener(Lcom/google/android/material/appbar/AppBarLayout$OnOffsetChangedListener;)V +HSPLorg/chromium/chrome/features/tasks/TasksView;->onFinishInflate()V +Lorg/chromium/chrome/features/tasks/TasksView$1; +HSPLorg/chromium/chrome/features/tasks/TasksView$1;-><init>()V +Lorg/chromium/chrome/features/tasks/TasksViewBinder; +HSPLorg/chromium/chrome/features/tasks/TasksViewBinder;->bind(Lorg/chromium/ui/modelutil/PropertyModel;Lorg/chromium/chrome/features/tasks/TasksView;Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)V +Lorg/chromium/components/background_task_scheduler/BackgroundTaskSchedulerExternalUma; +HSPLorg/chromium/components/background_task_scheduler/BackgroundTaskSchedulerExternalUma;-><init>()V +HSPLorg/chromium/components/background_task_scheduler/BackgroundTaskSchedulerExternalUma;->toUmaEnumValueFromTaskId(I)I +PLorg/chromium/components/background_task_scheduler/TaskInfo;-><init>(Lorg/chromium/components/background_task_scheduler/TaskInfo$Builder;)V +PLorg/chromium/components/background_task_scheduler/TaskInfo;->createOneOffTask(IJJ)Lorg/chromium/components/background_task_scheduler/TaskInfo$Builder; +PLorg/chromium/components/background_task_scheduler/TaskInfo$Builder;-><init>(I)V +PLorg/chromium/components/background_task_scheduler/TaskInfo$Builder;->build()Lorg/chromium/components/background_task_scheduler/TaskInfo; +PLorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;-><init>(I)V +PLorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;-><init>(Lorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;)V +PLorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;-><init>(Lorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;I)V +PLorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;->accept(Lorg/chromium/components/background_task_scheduler/TaskInfo$TimingInfoVisitor;)V +PLorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;->expiresAfterWindowEndTime()Z +PLorg/chromium/components/background_task_scheduler/TaskParameters;-><init>(Lorg/chromium/components/background_task_scheduler/TaskParameters$Builder;)V +PLorg/chromium/components/background_task_scheduler/TaskParameters$Builder;-><init>(I)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService;-><init>()V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService;->onStartJob(Landroid/app/job/JobParameters;)Z +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$$ExternalSyntheticLambda0;-><init>()V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService;-><init>(Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService;Lorg/chromium/components/background_task_scheduler/BackgroundTask;Landroid/app/job/JobParameters;)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService;->taskFinished(Z)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService$1;-><init>(Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService;Z)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService$TaskFinishedCallbackJobService$1;->run()V +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerDelegate; +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal;->getScheduler()Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl; +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl;-><init>(Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService;)V +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl;->cancel(Landroid/content/Context;I)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl;->schedule(Landroid/content/Context;Lorg/chromium/components/background_task_scheduler/TaskInfo;)Z +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl$MetricsVisitor;-><init>(I)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl$MetricsVisitor;->visit(Lorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl$SchedulingVisitor;-><init>(Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl;Landroid/content/Context;Lorg/chromium/components/background_task_scheduler/TaskInfo;)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl$SchedulingVisitor;->visit(Lorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;)V +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService;-><init>()V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService;->getTaskParametersFromJobParameters(Landroid/app/job/JobParameters;)Lorg/chromium/components/background_task_scheduler/TaskParameters; +HPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService;->schedule(Landroid/content/Context;Lorg/chromium/components/background_task_scheduler/TaskInfo;)Z +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService$JobInfoBuilderVisitor;-><init>(Landroid/app/job/JobInfo$Builder;Landroid/os/PersistableBundle;)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService$JobInfoBuilderVisitor;->visit(Lorg/chromium/components/background_task_scheduler/TaskInfo$OneOffInfo;)V +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma;-><init>()V +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma;->cacheEvent(ILjava/lang/String;)V +PLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma;->flushStats()V +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma;->getInstance()Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma; +Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma$CachedUmaEntry; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma$CachedUmaEntry;-><init>(IILjava/lang/String;)V +HPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma$CachedUmaEntry;->parseEntry(Ljava/lang/String;)Lorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma$CachedUmaEntry; +HSPLorg/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerUma$CachedUmaEntry;->toString()Ljava/lang/String; +Lorg/chromium/components/bookmarks/BookmarkId; +Lorg/chromium/components/browser_ui/accessibility/FontSizePrefs; +HSPLorg/chromium/components/browser_ui/accessibility/FontSizePrefs;-><init>(Lorg/chromium/chrome/browser/profiles/Profile;)V +HSPLorg/chromium/components/browser_ui/accessibility/FontSizePrefs;->getUserFontScaleFactor()F +HSPLorg/chromium/components/browser_ui/accessibility/FontSizePrefs;->onFontScaleFactorChanged(F)V +HSPLorg/chromium/components/browser_ui/accessibility/FontSizePrefs;->setFontScaleFactor(F)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator;-><init>(Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda4;)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator;)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/browser_ui/accessibility/PageZoomCoordinator;)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomMediator; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomMediator;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomMediator$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomMediator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/browser_ui/accessibility/PageZoomMediator;I)V +Lorg/chromium/components/browser_ui/accessibility/PageZoomProperties; +Lorg/chromium/components/browser_ui/accessibility/PageZoomUtils; +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomUtils;->convertZoomFactorToSeekBarValue(D)I +HSPLorg/chromium/components/browser_ui/accessibility/PageZoomUtils;->shouldShowZoomMenuItem()Z +Lorg/chromium/components/browser_ui/banners/SwipableOverlayView; +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;-><init>(Landroid/content/Context;Z)V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->cancelCurrentAnimation()Z +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->createVerticalSnapAnimation(Z)Landroid/animation/ObjectAnimator; +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->onAttachedToWindow()V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->onDetachedFromWindow()V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->onLayout(ZIIII)V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->onWindowFocusChanged(Z)V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->removeFromParentView()Z +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView;->setWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/components/browser_ui/banners/SwipableOverlayView$2; +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView$2;-><init>(Lorg/chromium/components/browser_ui/banners/SwipableOverlayView;)V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V +Lorg/chromium/components/browser_ui/banners/SwipableOverlayView$3; +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView$3;-><init>(Lorg/chromium/components/browser_ui/banners/SwipableOverlayView;)V +HSPLorg/chromium/components/browser_ui/banners/SwipableOverlayView$3;->onAnimationEnd(Landroid/animation/Animator;)V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheet; +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController; +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerFactory; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerFactory;->setExceptionReporter(Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda5;)V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;-><init>(Lorg/chromium/base/supplier/Supplier;Lorg/chromium/base/Callback;Landroid/view/Window;Lorg/chromium/ui/KeyboardVisibilityDelegate;Lorg/chromium/base/supplier/Supplier;)V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->addObserver(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetObserver;)V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->clearRequestsAndHide()V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->destroy()V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->isSheetOpen()Z +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->removeObserver(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetObserver;)V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->suppressSheet(I)I +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;->updateBackPressStateChangedSupplier()V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;I)V +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$$ExternalSyntheticLambda2; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;Lorg/chromium/base/Callback;Landroid/view/Window;Lorg/chromium/ui/KeyboardVisibilityDelegate;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$1; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl$1;-><init>(Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerImpl;)V +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerProvider; +HSPLorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerProvider;->from(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetController; +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetControllerProvider$Unowned; +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetObserver; +Lorg/chromium/components/browser_ui/bottomsheet/BottomSheetSwipeDetector$SwipeableBottomSheet; +Lorg/chromium/components/browser_ui/bottomsheet/EmptyBottomSheetObserver; +HSPLorg/chromium/components/browser_ui/bottomsheet/EmptyBottomSheetObserver;-><init>()V +Lorg/chromium/components/browser_ui/media/MediaImageCallback; +Lorg/chromium/components/browser_ui/media/MediaImageManager; +HSPLorg/chromium/components/browser_ui/media/MediaImageManager;-><init>(I)V +Lorg/chromium/components/browser_ui/media/MediaNotificationController; +Lorg/chromium/components/browser_ui/media/MediaNotificationImageUtils; +HSPLorg/chromium/components/browser_ui/media/MediaNotificationImageUtils;->downscaleIconToIdealSize(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap; +Lorg/chromium/components/browser_ui/media/MediaNotificationListener; +Lorg/chromium/components/browser_ui/media/MediaNotificationManager; +Lorg/chromium/components/browser_ui/media/MediaSessionHelper; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->-$$Nest$mupdateNotificationMetadata(Lorg/chromium/components/browser_ui/media/MediaSessionHelper;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;-><init>(Lorg/chromium/content_public/browser/WebContents;Lorg/chromium/chrome/browser/media/ui/MediaSessionTabHelper;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->cleanupMediaSessionObserver()V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->getActivity()Landroid/app/Activity; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->getMetadata()Lorg/chromium/services/media_session/MediaMetadata; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->hideNotificationInternal()V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->isNotificationHidingOrHidden()Z +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper;->setWebContents(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/components/browser_ui/media/MediaSessionHelper$1; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$1;-><init>(Lorg/chromium/components/browser_ui/media/MediaSessionHelper;)V +Lorg/chromium/components/browser_ui/media/MediaSessionHelper$2; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$2;-><init>(Lorg/chromium/components/browser_ui/media/MediaSessionHelper;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$2;->run()V +Lorg/chromium/components/browser_ui/media/MediaSessionHelper$3; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;-><init>(Lorg/chromium/components/browser_ui/media/MediaSessionHelper;Lorg/chromium/content/browser/MediaSessionImpl;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;->mediaSessionActionsChanged(Ljava/util/HashSet;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;->mediaSessionArtworkChanged(Ljava/util/List;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;->mediaSessionMetadataChanged(Lorg/chromium/services/media_session/MediaMetadata;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;->mediaSessionPositionChanged(Lorg/chromium/services/media_session/MediaPosition;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$3;->mediaSessionStateChanged(ZZ)V +Lorg/chromium/components/browser_ui/media/MediaSessionHelper$4; +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$4;-><init>(Lorg/chromium/components/browser_ui/media/MediaSessionHelper;Lorg/chromium/content_public/browser/WebContents;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$4;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/components/browser_ui/media/MediaSessionHelper$4;->wasShown()V +Lorg/chromium/components/browser_ui/modaldialog/AppModalPresenter; +HSPLorg/chromium/components/browser_ui/modaldialog/AppModalPresenter;-><init>(Landroid/content/Context;)V +Lorg/chromium/components/browser_ui/modaldialog/TabModalPresenter; +HSPLorg/chromium/components/browser_ui/modaldialog/TabModalPresenter;-><init>(Landroid/content/Context;)V +Lorg/chromium/components/browser_ui/notifications/NotificationManagerProxy; +Lorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl; +HSPLorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;->createNotificationChannel(Landroid/app/NotificationChannel;)V +HSPLorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;->createNotificationChannelGroup(Landroid/app/NotificationChannelGroup;)V +HSPLorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;->deleteNotificationChannel(Ljava/lang/String;)V +HSPLorg/chromium/components/browser_ui/notifications/NotificationManagerProxyImpl;->getNotificationChannels()Ljava/util/List; +Lorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions; +Lorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannel; +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannel;-><init>(Ljava/lang/String;IIZZ)V +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannel;->create(IILjava/lang/String;)Lorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannel; +Lorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannelGroup; +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannelGroup;-><init>(ILjava/lang/String;)V +Lorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannelGroup$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannelGroup$$ExternalSyntheticApiModelOutline0;->m()V +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelDefinitions$PredefinedChannelGroup$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup; +Lorg/chromium/components/browser_ui/notifications/channels/ChannelsInitializer; +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelsInitializer;-><init>(Lorg/chromium/components/browser_ui/notifications/NotificationManagerProxy;Landroid/content/res/Resources;)V +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelsInitializer;->ensureInitializedWithEnabledState(Ljava/util/Collection;Ljava/util/Collection;)V +HSPLorg/chromium/components/browser_ui/notifications/channels/ChannelsInitializer;->initializeStartupChannels()V +Lorg/chromium/components/browser_ui/photo_picker/DecodeVideoTask$VideoDecodingCallback; +Lorg/chromium/components/browser_ui/photo_picker/DecoderServiceHost; +Lorg/chromium/components/browser_ui/photo_picker/IDecoderServiceCallback; +Lorg/chromium/components/browser_ui/photo_picker/IDecoderServiceCallback$Stub; +Lorg/chromium/components/browser_ui/photo_picker/PhotoPickerDelegateBase; +HSPLorg/chromium/components/browser_ui/photo_picker/PhotoPickerDelegateBase;-><init>()V +Lorg/chromium/components/browser_ui/settings/SettingsLauncher; +Lorg/chromium/components/browser_ui/share/ClipboardImageFileProvider; +HSPLorg/chromium/components/browser_ui/share/ClipboardImageFileProvider;-><init>()V +HSPLorg/chromium/components/browser_ui/share/ClipboardImageFileProvider;->getLastCopiedImageMetadata()Lorg/chromium/ui/base/Clipboard$ImageFileProvider$ClipboardFileMetadata; +Lorg/chromium/components/browser_ui/share/ShareImageFileUtils; +HSPLorg/chromium/components/browser_ui/share/ShareImageFileUtils;->getSharedFilesDirectory()Ljava/io/File; +Lorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticApiModelOutline0;->m()Landroid/net/Uri; +Lorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticLambda3; +HSPLorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticLambda3;-><init>()V +HSPLorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticLambda3;->run()V +Lorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticLambda6; +HSPLorg/chromium/components/browser_ui/share/ShareImageFileUtils$$ExternalSyntheticLambda6;-><init>(Ljava/lang/String;)V +Lorg/chromium/components/browser_ui/share/ShareParams$TargetChosenCallback; +Lorg/chromium/components/browser_ui/styles/ChromeColors; +HSPLorg/chromium/components/browser_ui/styles/ChromeColors;->getDefaultThemeColor(Landroid/content/Context;Z)I +HSPLorg/chromium/components/browser_ui/styles/ChromeColors;->getPrimaryBackgroundColor(Landroid/content/Context;Z)I +HSPLorg/chromium/components/browser_ui/styles/ChromeColors;->getSurfaceColor(Landroid/content/Context;I)I +Lorg/chromium/components/browser_ui/styles/SemanticColorUtils; +HSPLorg/chromium/components/browser_ui/styles/SemanticColorUtils;->getDefaultBgColor(Landroid/content/Context;)I +HSPLorg/chromium/components/browser_ui/styles/SemanticColorUtils;->getDefaultControlColorActive(Landroid/content/Context;)I +HSPLorg/chromium/components/browser_ui/styles/SemanticColorUtils;->getDefaultIconColor(Landroid/content/Context;)I +HSPLorg/chromium/components/browser_ui/styles/SemanticColorUtils;->getDividerLineBgColor(Landroid/content/Context;)I +HSPLorg/chromium/components/browser_ui/styles/SemanticColorUtils;->resolve(Landroid/content/Context;I)I +Lorg/chromium/components/browser_ui/util/BitmapCache; +HSPLorg/chromium/components/browser_ui/util/BitmapCache;-><init>(Lorg/chromium/base/DiscardableReferencePool;I)V +Lorg/chromium/components/browser_ui/util/BitmapCache$RecentlyUsedCache; +HSPLorg/chromium/components/browser_ui/util/BitmapCache$RecentlyUsedCache;-><init>(I)V +Lorg/chromium/components/browser_ui/util/BrowserControlsVisibilityDelegate; +HSPLorg/chromium/components/browser_ui/util/BrowserControlsVisibilityDelegate;-><init>()V +HSPLorg/chromium/components/browser_ui/util/BrowserControlsVisibilityDelegate;->set(Ljava/lang/Integer;)V +Lorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate; +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;->$r8$lambda$bSxtxU-NyBJzu8vAHQiKOc2_5Kc(Lorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;-><init>([Lorg/chromium/components/browser_ui/util/BrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;->calculateVisibilityConstraints()I +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;->set(Ljava/lang/Integer;)V +Lorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate;)V +HSPLorg/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegate$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/components/browser_ui/util/DimensionCompat; +HSPLorg/chromium/components/browser_ui/util/DimensionCompat;-><init>(Landroid/app/Activity;)V +Lorg/chromium/components/browser_ui/util/DimensionCompat$DimensionCompatR; +HSPLorg/chromium/components/browser_ui/util/DimensionCompat$DimensionCompatR;-><init>(Landroid/app/Activity;)V +HSPLorg/chromium/components/browser_ui/util/DimensionCompat$DimensionCompatR;-><init>(Landroid/app/Activity;II)V +Lorg/chromium/components/browser_ui/util/FirstDrawDetector; +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector;-><init>(Landroid/view/View;Ljava/lang/Runnable;)V +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector;->startWaiting(Z)V +Lorg/chromium/components/browser_ui/util/FirstDrawDetector$1; +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$1;-><init>(Lorg/chromium/components/browser_ui/util/FirstDrawDetector;)V +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$1;->onDraw()V +Lorg/chromium/components/browser_ui/util/FirstDrawDetector$1$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$1$$ExternalSyntheticLambda0;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$1$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/components/browser_ui/util/FirstDrawDetector$2; +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$2;-><init>(Lorg/chromium/components/browser_ui/util/FirstDrawDetector;)V +HSPLorg/chromium/components/browser_ui/util/FirstDrawDetector$2;->onPreDraw()Z +Lorg/chromium/components/browser_ui/util/GlobalDiscardableReferencePool; +Lorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable; +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable;->startTransition()Lorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle; +Lorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$1; +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$1;-><init>()V +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$1;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$1;->setValue(Ljava/lang/Object;I)V +Lorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle; +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle;-><init>(Landroid/animation/ObjectAnimator;)V +Lorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle$1; +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle$1;-><init>(Lorg/chromium/chrome/browser/omnibox/status/StatusView$$ExternalSyntheticLambda1;)V +HSPLorg/chromium/components/browser_ui/widget/ChromeTransitionDrawable$TransitionHandle$1;->onEnd()V +Lorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar; +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar;-><init>(Landroid/content/Context;I)V +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar;->onSetAlpha(I)Z +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar;->setBackgroundColor(I)V +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar;->setProgress(F)V +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar;->setVisibility(I)V +Lorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar$DrawingInfo; +HSPLorg/chromium/components/browser_ui/widget/ClipDrawableProgressBar$DrawingInfo;-><init>()V +Lorg/chromium/components/browser_ui/widget/CompositeTouchDelegate; +HSPLorg/chromium/components/browser_ui/widget/CompositeTouchDelegate;-><init>(Landroid/view/View;)V +Lorg/chromium/components/browser_ui/widget/CoordinatorLayoutForPointer; +HSPLorg/chromium/components/browser_ui/widget/CoordinatorLayoutForPointer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/components/browser_ui/widget/InsetObserverView; +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Lorg/chromium/components/browser_ui/widget/InsetObserverView$BottomInsetObservableSupplier; +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView$BottomInsetObservableSupplier;-><init>()V +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView$BottomInsetObservableSupplier;->onInsetChanged(I)V +Lorg/chromium/components/browser_ui/widget/InsetObserverView$InsetObserverViewApi28; +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView$InsetObserverViewApi28;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/browser_ui/widget/InsetObserverView$InsetObserverViewApi28;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; +Lorg/chromium/components/browser_ui/widget/InsetObserverView$WindowInsetObserver; +Lorg/chromium/components/browser_ui/widget/InsetObserverViewSupplier; +HSPLorg/chromium/components/browser_ui/widget/InsetObserverViewSupplier;-><init>()V +Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController; +Lorg/chromium/components/browser_ui/widget/MenuOrKeyboardActionController$MenuOrKeyboardActionHandler; +Lorg/chromium/components/browser_ui/widget/RoundedCornerImageView; +HSPLorg/chromium/components/browser_ui/widget/RoundedCornerImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/components/browser_ui/widget/RoundedCornerImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +HSPLorg/chromium/components/browser_ui/widget/RoundedCornerImageView;->refreshState()V +HSPLorg/chromium/components/browser_ui/widget/RoundedCornerImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLorg/chromium/components/browser_ui/widget/RoundedCornerImageView;->setRoundedCorners(IIII)V +Lorg/chromium/components/browser_ui/widget/RoundedIconGenerator; +HSPLorg/chromium/components/browser_ui/widget/RoundedIconGenerator;-><init>(IIIIF)V +Lorg/chromium/components/browser_ui/widget/TintedDrawable; +HSPLorg/chromium/components/browser_ui/widget/TintedDrawable;-><init>(Landroid/content/Context;Landroid/graphics/Bitmap;)V +HSPLorg/chromium/components/browser_ui/widget/TintedDrawable;->isStateful()Z +HSPLorg/chromium/components/browser_ui/widget/TintedDrawable;->onStateChange([I)Z +HSPLorg/chromium/components/browser_ui/widget/TintedDrawable;->setTint(Landroid/content/res/ColorStateList;)V +Lorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout; +HSPLorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout;->isReadyForCapture()Z +HSPLorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V +HSPLorg/chromium/components/browser_ui/widget/ViewResourceFrameLayout;->onFinishInflate()V +Lorg/chromium/components/browser_ui/widget/animation/CancelAwareAnimatorListener; +HSPLorg/chromium/components/browser_ui/widget/animation/CancelAwareAnimatorListener;-><init>()V +HSPLorg/chromium/components/browser_ui/widget/animation/CancelAwareAnimatorListener;->onAnimationEnd(Landroid/animation/Animator;)V +Lorg/chromium/components/browser_ui/widget/animation/Interpolators; +Lorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserver; +Lorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserverAdapter; +HSPLorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserverAdapter;-><init>(Landroid/view/View;Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;Lorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserver;)V +HSPLorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserverAdapter;->onDisplayStyleChanged(Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$DisplayStyle;)V +Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig; +HSPLorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;-><init>(Landroid/view/View;)V +HSPLorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;->addObserver(Lorg/chromium/components/browser_ui/widget/displaystyle/DisplayStyleObserver;)V +HSPLorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;->computeDisplayStyleForCurrentConfig()Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$DisplayStyle; +Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$1; +HSPLorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$1;-><init>(Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;)V +Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$DisplayStyle; +HSPLorg/chromium/components/browser_ui/widget/displaystyle/UiConfig$DisplayStyle;-><init>(II)V +Lorg/chromium/components/browser_ui/widget/displaystyle/ViewResizer; +HSPLorg/chromium/components/browser_ui/widget/displaystyle/ViewResizer;-><init>(Landroid/view/View;Lorg/chromium/components/browser_ui/widget/displaystyle/UiConfig;II)V +HSPLorg/chromium/components/browser_ui/widget/displaystyle/ViewResizer;->attach$1()V +Lorg/chromium/components/browser_ui/widget/gesture/BackPressHandler; +HSPLorg/chromium/components/browser_ui/widget/gesture/BackPressHandler;->getHandleBackPressChangedSupplier()Lorg/chromium/base/supplier/ObservableSupplier; +Lorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener; +HSPLorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener;-><init>(Landroid/content/Context;Lorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener$SwipeHandler;)V +Lorg/chromium/components/browser_ui/widget/gesture/SwipeGestureListener$SwipeHandler; +Lorg/chromium/components/browser_ui/widget/highlight/ViewHighlighter$HighlightParams; +HSPLorg/chromium/components/browser_ui/widget/highlight/ViewHighlighter$HighlightParams;-><init>(I)V +Lorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton; +HSPLorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton;->dismiss()V +HSPLorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton;->onAttachedToWindow()V +HSPLorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton;->onDetachedFromWindow()V +HSPLorg/chromium/components/browser_ui/widget/listmenu/ListMenuButton;->onFinishInflate()V +Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator; +HSPLorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;-><init>(Landroid/content/Context;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$SystemUiScrimDelegate;Landroid/view/ViewGroup;I)V +Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;)V +Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator;Landroid/content/Context;Landroid/view/ViewGroup;I)V +Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$SystemUiScrimDelegate; +Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$TouchEventDelegate; +Lorg/chromium/components/browser_ui/widget/scrim/ScrimMediator; +HSPLorg/chromium/components/browser_ui/widget/scrim/ScrimMediator;-><init>(Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/components/browser_ui/widget/scrim/ScrimCoordinator$SystemUiScrimDelegate;)V +Lorg/chromium/components/browser_ui/widget/scrim/ScrimProperties; +Lorg/chromium/components/browser_ui/widget/text/VerticallyFixedEditText; +HSPLorg/chromium/components/browser_ui/widget/text/VerticallyFixedEditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/components/browser_ui/widget/text/VerticallyFixedEditText;->scrollTo(II)V +Lorg/chromium/components/commerce/core/ShoppingService; +HSPLorg/chromium/components/commerce/core/ShoppingService;-><init>(J)V +HSPLorg/chromium/components/commerce/core/ShoppingService;->create(J)Lorg/chromium/components/commerce/core/ShoppingService; +Lorg/chromium/components/commerce/core/SubscriptionsObserver; +Lorg/chromium/components/content_capture/OnscreenContentProvider; +HSPLorg/chromium/components/content_capture/OnscreenContentProvider;-><init>(Landroid/content/Context;Landroid/view/View;Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/components/content_capture/PlatformContentCaptureController; +HSPLorg/chromium/components/content_capture/PlatformContentCaptureController;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/content_capture/PlatformContentCaptureController;->log(Ljava/lang/String;)V +Lorg/chromium/components/content_capture/PlatformContentCaptureController$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/components/content_capture/PlatformContentCaptureController$$ExternalSyntheticApiModelOutline0;->m()Ljava/lang/Class; +HSPLorg/chromium/components/content_capture/PlatformContentCaptureController$$ExternalSyntheticApiModelOutline0;->m(Ljava/lang/Object;)Landroid/view/contentcapture/ContentCaptureManager; +Lorg/chromium/components/content_capture/UrlAllowlist; +HSPLorg/chromium/components/content_capture/UrlAllowlist;-><init>(Ljava/util/HashSet;Ljava/util/ArrayList;)V +Lorg/chromium/components/crash/CrashKeys; +HSPLorg/chromium/components/crash/CrashKeys;-><init>()V +HSPLorg/chromium/components/crash/CrashKeys;->flushToNative()V +HSPLorg/chromium/components/crash/CrashKeys;->getInstance()Lorg/chromium/components/crash/CrashKeys; +HSPLorg/chromium/components/crash/CrashKeys;->set(ILjava/lang/String;)V +Lorg/chromium/components/crash/CrashKeys$Holder; +Lorg/chromium/components/crash/PureJavaExceptionHandler; +HSPLorg/chromium/components/crash/PureJavaExceptionHandler;-><init>(Ljava/lang/Thread$UncaughtExceptionHandler;Lorg/chromium/chrome/browser/base/SplitCompatApplication$1;)V +HSPLorg/chromium/components/crash/PureJavaExceptionHandler;->uninstallHandler()V +Lorg/chromium/components/crash/browser/ChildProcessCrashObserver; +Lorg/chromium/components/dom_distiller/content/DistillablePageUtils$PageDistillableDelegate; +Lorg/chromium/components/dom_distiller/core/DomDistillerUrlUtils; +HSPLorg/chromium/components/dom_distiller/core/DomDistillerUrlUtils;->isDistilledPage(Ljava/lang/String;)Z +HSPLorg/chromium/components/dom_distiller/core/DomDistillerUrlUtils;->isDistilledPage(Lorg/chromium/url/GURL;)Z +Lorg/chromium/components/download/BackgroundNetworkStatusListener; +HSPLorg/chromium/components/download/BackgroundNetworkStatusListener;-><init>(Lorg/chromium/components/download/NetworkStatusListenerAndroid$Helper;)V +HSPLorg/chromium/components/download/BackgroundNetworkStatusListener;->onNetworkConnect(IJ)V +Lorg/chromium/components/download/BackgroundNetworkStatusListener$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/download/BackgroundNetworkStatusListener$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/download/BackgroundNetworkStatusListener;II)V +HSPLorg/chromium/components/download/BackgroundNetworkStatusListener$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/components/download/BackgroundNetworkStatusListener$Observer; +Lorg/chromium/components/download/DownloadCollectionBridge; +HSPLorg/chromium/components/download/DownloadCollectionBridge;->getDisplayNamesForDownloads()[Lorg/chromium/components/download/DownloadCollectionBridge$DisplayNameInfo; +PLorg/chromium/components/download/DownloadCollectionBridge;->shouldPublishDownload(Ljava/lang/String;)Z +Lorg/chromium/components/download/DownloadDelegate; +HSPLorg/chromium/components/download/DownloadDelegate;-><init>()V +Lorg/chromium/components/download/NetworkStatusListenerAndroid; +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid;-><init>(J)V +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid;->create(J)Lorg/chromium/components/download/NetworkStatusListenerAndroid; +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid;->getCurrentConnectionType()I +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid;->onNetworkStatusReady(I)V +Lorg/chromium/components/download/NetworkStatusListenerAndroid$Helper; +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid$Helper;-><init>()V +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid$Helper;->onNetworkStatusReady(I)V +Lorg/chromium/components/download/NetworkStatusListenerAndroid$Helper$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid$Helper$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/download/NetworkStatusListenerAndroid$Helper;I)V +HSPLorg/chromium/components/download/NetworkStatusListenerAndroid$Helper$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/components/download/internal/BatteryStatusListenerAndroid; +HSPLorg/chromium/components/download/internal/BatteryStatusListenerAndroid;->getBatteryPercentage()I +Lorg/chromium/components/embedder_support/browser_context/PartitionResolverSupplier; +Lorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid; +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;-><init>()V +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;->getDisplayModeChecked()I +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;->loadingStateChanged(Z)V +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;->navigationStateChanged(I)V +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;->onUpdateUrl(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/components/embedder_support/delegate/WebContentsDelegateAndroid;->visibleSSLStateChanged()V +Lorg/chromium/components/embedder_support/simple_factory_key/SimpleFactoryKeyHandle; +Lorg/chromium/components/embedder_support/util/UrlUtilities; +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->hasIntentScheme(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isAcceptedScheme(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isCanonicalizedNTPUrl(Ljava/lang/String;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isHttpOrHttps(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isInternalScheme(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isNTPUrl(Ljava/lang/String;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isNTPUrl(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/components/embedder_support/util/UrlUtilities;->isSchemeHttpOrHttps(Ljava/lang/String;)Z +Lorg/chromium/components/embedder_support/view/ContentView; +HSPLorg/chromium/components/embedder_support/view/ContentView;-><init>(Landroid/content/Context;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/components/embedder_support/view/ContentView;->awakenScrollBars(IZ)Z +HSPLorg/chromium/components/embedder_support/view/ContentView;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLorg/chromium/components/embedder_support/view/ContentView;->getViewEventSink()Lorg/chromium/content_public/browser/ViewEventSink; +HSPLorg/chromium/components/embedder_support/view/ContentView;->hasValidWebContents()Z +HSPLorg/chromium/components/embedder_support/view/ContentView;->onAttachedToWindow()V +HSPLorg/chromium/components/embedder_support/view/ContentView;->onCheckIsTextEditor()Z +HSPLorg/chromium/components/embedder_support/view/ContentView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; +HSPLorg/chromium/components/embedder_support/view/ContentView;->onDetachedFromWindow()V +HSPLorg/chromium/components/embedder_support/view/ContentView;->onFocusChanged(ZILandroid/graphics/Rect;)V +HSPLorg/chromium/components/embedder_support/view/ContentView;->onMeasure(II)V +HSPLorg/chromium/components/embedder_support/view/ContentView;->onScrollChanged(IIII)V +HSPLorg/chromium/components/embedder_support/view/ContentView;->onWindowFocusChanged(Z)V +HSPLorg/chromium/components/embedder_support/view/ContentView;->setDeferKeepScreenOnChanges(Z)V +Lorg/chromium/components/external_intents/ExternalNavigationDelegate; +Lorg/chromium/components/external_intents/ExternalNavigationHandler; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;-><init>(Lorg/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl;)V +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->debug()Z +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->handleFallbackUrl(Lorg/chromium/components/external_intents/ExternalNavigationParams;Lorg/chromium/url/GURL;Z)Lorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->isIncomingIntentRedirect(Lorg/chromium/components/external_intents/ExternalNavigationParams;)Z +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->isInternalScheme(Ljava/lang/String;)Z +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->sanitizeQueryIntentActivitiesIntent(Landroid/content/Intent;)V +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->shouldBlockAllExternalAppLaunches(Lorg/chromium/components/external_intents/ExternalNavigationParams;Z)Z +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler;->shouldOverrideUrlLoading(Lorg/chromium/components/external_intents/ExternalNavigationParams;)Lorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult; +Lorg/chromium/components/external_intents/ExternalNavigationHandler$IntentBasedSupplier; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$IntentBasedSupplier;-><init>(Landroid/content/Intent;Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/components/external_intents/ExternalNavigationHandler$LazySupplier; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$LazySupplier;-><init>(Lorg/chromium/base/supplier/Supplier;)V +Lorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult;-><init>(I)V +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult;-><init>(IZ)V +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult;->forNoOverride()Lorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult; +Lorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier;-><init>(Landroid/content/Intent;Lorg/chromium/components/external_intents/ExternalNavigationHandler;)V +Lorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier$$ExternalSyntheticLambda0;-><init>(Landroid/content/Intent;Lorg/chromium/components/external_intents/ExternalNavigationHandler;)V +Lorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier$QueryNonDefaultSupplier; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$QueryIntentActivitiesSupplier$QueryNonDefaultSupplier;-><init>(Landroid/content/Intent;)V +Lorg/chromium/components/external_intents/ExternalNavigationHandler$ResolveActivitySupplier$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/external_intents/ExternalNavigationHandler$ResolveActivitySupplier$$ExternalSyntheticLambda0;-><init>(Landroid/content/Intent;I)V +Lorg/chromium/components/external_intents/ExternalNavigationParams; +HSPLorg/chromium/components/external_intents/ExternalNavigationParams;-><init>(Lorg/chromium/url/GURL;ZLorg/chromium/url/GURL;IZZLorg/chromium/components/external_intents/RedirectHandler;ZZZZZLorg/chromium/base/Callback;ZZZ)V +Lorg/chromium/components/external_intents/InterceptNavigationDelegateClient; +Lorg/chromium/components/external_intents/InterceptNavigationDelegateImpl; +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;-><init>(Lorg/chromium/chrome/browser/tab/InterceptNavigationDelegateClientImpl;)V +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;->associateWithWebContents(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;->getLastCommittedEntryIndex()I +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;->isTabOnInitialNavigationChain()Z +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;->shouldIgnoreNavigation(Lorg/chromium/content_public/browser/NavigationHandle;Lorg/chromium/url/GURL;Z)Z +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;->shouldOverrideUrlLoading(Lorg/chromium/components/external_intents/RedirectHandler;Lorg/chromium/url/GURL;IZZZLorg/chromium/url/GURL;ZZLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl$$ExternalSyntheticLambda0;Z)Lorg/chromium/components/external_intents/ExternalNavigationHandler$OverrideUrlLoadingResult; +Lorg/chromium/components/external_intents/InterceptNavigationDelegateImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/external_intents/InterceptNavigationDelegateImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/external_intents/InterceptNavigationDelegateImpl;I)V +Lorg/chromium/components/external_intents/RedirectHandler; +HSPLorg/chromium/components/external_intents/RedirectHandler;-><init>()V +HSPLorg/chromium/components/external_intents/RedirectHandler;->updateNewUrlLoading(IZZJIZZ)V +Lorg/chromium/components/external_intents/RedirectHandler$InitialNavigationState; +HSPLorg/chromium/components/external_intents/RedirectHandler$InitialNavigationState;-><init>(ZZZZZ)V +Lorg/chromium/components/external_intents/RedirectHandler$IntentState; +HSPLorg/chromium/components/external_intents/RedirectHandler$IntentState;-><init>(Landroid/content/Intent;ZZZ)V +Lorg/chromium/components/external_intents/RedirectHandler$NavigationChainState; +HSPLorg/chromium/components/external_intents/RedirectHandler$NavigationChainState;-><init>(Lorg/chromium/components/external_intents/RedirectHandler;ZLorg/chromium/components/external_intents/RedirectHandler$InitialNavigationState;)V +Lorg/chromium/components/externalauth/ExternalAuthGoogleDelegateImpl; +HSPLorg/chromium/components/externalauth/ExternalAuthGoogleDelegateImpl;-><init>()V +Lorg/chromium/components/externalauth/ExternalAuthUtils; +HSPLorg/chromium/components/externalauth/ExternalAuthUtils;-><init>()V +HSPLorg/chromium/components/externalauth/ExternalAuthUtils;->canUseGooglePlayServices()Z +HSPLorg/chromium/components/externalauth/ExternalAuthUtils;->canUseGooglePlayServices(Lorg/chromium/components/externalauth/UserRecoverableErrorHandler;)Z +HSPLorg/chromium/components/externalauth/ExternalAuthUtils;->checkGooglePlayServicesAvailable(Landroid/content/Context;)I +PLorg/chromium/components/externalauth/ExternalAuthUtils;->isGoogleSigned()V +Lorg/chromium/components/externalauth/UserRecoverableErrorHandler; +HSPLorg/chromium/components/externalauth/UserRecoverableErrorHandler;-><init>()V +Lorg/chromium/components/externalauth/UserRecoverableErrorHandler$Silent; +HSPLorg/chromium/components/externalauth/UserRecoverableErrorHandler$Silent;-><init>()V +Lorg/chromium/components/favicon/LargeIconBridge; +HSPLorg/chromium/components/favicon/LargeIconBridge;-><init>(Lorg/chromium/content_public/browser/BrowserContextHandle;)V +HSPLorg/chromium/components/favicon/LargeIconBridge;->destroy()V +Lorg/chromium/components/favicon/LargeIconBridge$LargeIconCallback; +Lorg/chromium/components/feature_engagement/Tracker; +Lorg/chromium/components/feature_engagement/internal/TrackerImpl; +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;-><init>(J)V +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->addOnInitializedCallback(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->create(J)Lorg/chromium/components/feature_engagement/internal/TrackerImpl; +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->getPendingPriorityNotification()Ljava/lang/String; +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->registerPriorityNotificationHandler(Ljava/lang/String;Ljava/lang/Runnable;)V +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->shouldTriggerHelpUI(Ljava/lang/String;)Z +HSPLorg/chromium/components/feature_engagement/internal/TrackerImpl;->unregisterPriorityNotificationHandler(Ljava/lang/String;)V +Lorg/chromium/components/gcm_driver/GCMDriver; +HSPLorg/chromium/components/gcm_driver/GCMDriver;-><init>(J)V +HSPLorg/chromium/components/gcm_driver/GCMDriver;->create(J)Lorg/chromium/components/gcm_driver/GCMDriver; +HSPLorg/chromium/components/gcm_driver/GCMDriver;->replayPersistedMessages(Ljava/lang/String;)V +Lorg/chromium/components/gcm_driver/GoogleCloudMessagingV2; +HSPLorg/chromium/components/gcm_driver/GoogleCloudMessagingV2;-><init>()V +Lorg/chromium/components/gcm_driver/instance_id/InstanceIDBridge; +HSPLorg/chromium/components/gcm_driver/instance_id/InstanceIDBridge;-><init>(JLjava/lang/String;)V +HSPLorg/chromium/components/gcm_driver/instance_id/InstanceIDBridge;->create(JLjava/lang/String;)Lorg/chromium/components/gcm_driver/instance_id/InstanceIDBridge; +Lorg/chromium/components/image_fetcher/ImageFetcher; +HSPLorg/chromium/components/image_fetcher/ImageFetcher;-><init>(Lorg/chromium/components/image_fetcher/ImageFetcher;)V +HSPLorg/chromium/components/image_fetcher/ImageFetcher;-><init>(Lorg/chromium/components/image_fetcher/ImageFetcherBridge;)V +Lorg/chromium/components/image_fetcher/ImageFetcherBridge; +HSPLorg/chromium/components/image_fetcher/ImageFetcherBridge;-><init>(Lorg/chromium/chrome/browser/profiles/ProfileKey;)V +Lorg/chromium/components/image_fetcher/ImageFetcherFactory; +HSPLorg/chromium/components/image_fetcher/ImageFetcherFactory;->createImageFetcher(ILorg/chromium/components/image_fetcher/ImageFetcherBridge;Lorg/chromium/base/DiscardableReferencePool;I)Lorg/chromium/components/image_fetcher/ImageFetcher; +Lorg/chromium/components/image_fetcher/InMemoryCachedImageFetcher; +HSPLorg/chromium/components/image_fetcher/InMemoryCachedImageFetcher;-><init>(Lorg/chromium/components/image_fetcher/ImageFetcher;Lorg/chromium/base/DiscardableReferencePool;I)V +HSPLorg/chromium/components/image_fetcher/InMemoryCachedImageFetcher;->destroy()V +Lorg/chromium/components/image_fetcher/NetworkImageFetcher; +HSPLorg/chromium/components/image_fetcher/NetworkImageFetcher;-><init>(Lorg/chromium/components/image_fetcher/ImageFetcherBridge;)V +HSPLorg/chromium/components/image_fetcher/NetworkImageFetcher;->destroy()V +HSPLorg/chromium/components/image_fetcher/NetworkImageFetcher;->getConfig()I +Lorg/chromium/components/infobars/InfoBar$Container; +Lorg/chromium/components/infobars/InfoBarAnimationListener; +Lorg/chromium/components/infobars/InfoBarContainerLayout; +HSPLorg/chromium/components/infobars/InfoBarContainerLayout;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/infobar/InfoBarContainerView$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/infobar/InfoBarContainerView$1;)V +HSPLorg/chromium/components/infobars/InfoBarContainerLayout;->onLayout(ZIIII)V +HSPLorg/chromium/components/infobars/InfoBarContainerLayout;->onMeasure(II)V +Lorg/chromium/components/infobars/InfoBarContainerLayout$FloatingBehavior; +HSPLorg/chromium/components/infobars/InfoBarContainerLayout$FloatingBehavior;-><init>(Landroid/widget/FrameLayout;)V +HSPLorg/chromium/components/infobars/InfoBarContainerLayout$FloatingBehavior;->updateShadowPosition()V +Lorg/chromium/components/media_router/BrowserMediaRouter; +HSPLorg/chromium/components/media_router/BrowserMediaRouter;-><init>(J)V +HSPLorg/chromium/components/media_router/BrowserMediaRouter;->create(J)Lorg/chromium/components/media_router/BrowserMediaRouter; +HSPLorg/chromium/components/media_router/BrowserMediaRouter;->getAndroidMediaRouter()Landroidx/mediarouter/media/MediaRouter; +Lorg/chromium/components/media_router/DiscoveryDelegate; +Lorg/chromium/components/media_router/MediaRouteManager; +Lorg/chromium/components/media_router/MediaRouteProvider; +Lorg/chromium/components/media_router/caf/BaseNotificationController; +HSPLorg/chromium/components/media_router/caf/BaseNotificationController;-><init>(Lorg/chromium/components/media_router/caf/BaseSessionController;)V +Lorg/chromium/components/media_router/caf/BaseSessionController; +HSPLorg/chromium/components/media_router/caf/BaseSessionController;-><init>(Lorg/chromium/components/media_router/caf/CafBaseMediaRouteProvider;)V +Lorg/chromium/components/media_router/caf/BaseSessionController$Callback; +Lorg/chromium/components/media_router/caf/BaseSessionController$RemoteMediaClientCallback; +HSPLorg/chromium/components/media_router/caf/BaseSessionController$RemoteMediaClientCallback;-><init>(Lorg/chromium/components/media_router/caf/BaseSessionController;)V +Lorg/chromium/components/media_router/caf/CafBaseMediaRouteProvider; +HSPLorg/chromium/components/media_router/caf/CafBaseMediaRouteProvider;-><init>(Landroidx/mediarouter/media/MediaRouter;Lorg/chromium/components/media_router/BrowserMediaRouter;)V +Lorg/chromium/components/media_router/caf/CafMediaRouteProvider; +HSPLorg/chromium/components/media_router/caf/CafMediaRouteProvider;-><init>(Landroidx/mediarouter/media/MediaRouter;Lorg/chromium/components/media_router/BrowserMediaRouter;)V +Lorg/chromium/components/media_router/caf/CafMessageHandler; +HSPLorg/chromium/components/media_router/caf/CafMessageHandler;-><init>(Lorg/chromium/components/media_router/caf/CafMediaRouteProvider;Lorg/chromium/components/media_router/caf/CastSessionController;)V +Lorg/chromium/components/media_router/caf/CafNotificationController; +HSPLorg/chromium/components/media_router/caf/CafNotificationController;-><init>(Lorg/chromium/components/media_router/caf/BaseSessionController;)V +Lorg/chromium/components/media_router/caf/CastSessionController; +HSPLorg/chromium/components/media_router/caf/CastSessionController;-><init>(Lorg/chromium/components/media_router/caf/CafBaseMediaRouteProvider;)V +Lorg/chromium/components/media_router/caf/CastSessionController$CastListener; +HSPLorg/chromium/components/media_router/caf/CastSessionController$CastListener;-><init>(Lorg/chromium/components/media_router/caf/CastSessionController;)V +Lorg/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider; +HSPLorg/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider;-><init>(Landroidx/mediarouter/media/MediaRouter;Lorg/chromium/components/media_router/BrowserMediaRouter;)V +Lorg/chromium/components/media_router/caf/remoting/RemotingNotificationController; +HSPLorg/chromium/components/media_router/caf/remoting/RemotingNotificationController;-><init>(Lorg/chromium/components/media_router/caf/BaseSessionController;)V +Lorg/chromium/components/media_router/caf/remoting/RemotingSessionController; +HSPLorg/chromium/components/media_router/caf/remoting/RemotingSessionController;-><init>(Lorg/chromium/components/media_router/caf/CafBaseMediaRouteProvider;)V +Lorg/chromium/components/messages/ManagedMessageDispatcher; +Lorg/chromium/components/messages/MessageAnimationCoordinator; +HSPLorg/chromium/components/messages/MessageAnimationCoordinator;-><init>(Lorg/chromium/components/messages/MessageContainer;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;)V +Lorg/chromium/components/messages/MessageContainer; +HSPLorg/chromium/components/messages/MessageContainer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/components/messages/MessageContainer;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +Lorg/chromium/components/messages/MessageContainer$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/messages/MessageContainer$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/messages/MessageContainer;)V +Lorg/chromium/components/messages/MessageContainer$MessageContainerA11yDelegateProxy; +HSPLorg/chromium/components/messages/MessageContainer$MessageContainerA11yDelegateProxy;-><init>(Lorg/chromium/components/messages/MessageContainer;)V +Lorg/chromium/components/messages/MessageDispatcher; +Lorg/chromium/components/messages/MessageDispatcherImpl; +HSPLorg/chromium/components/messages/MessageDispatcherImpl;-><init>(Lorg/chromium/components/messages/MessageContainer;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda1;Lorg/chromium/chrome/browser/messages/ChromeMessageAutodismissDurationProvider;Lorg/chromium/chrome/browser/ui/RootUiCoordinator$$ExternalSyntheticLambda0;Lorg/chromium/ui/base/ActivityWindowAndroid;)V +Lorg/chromium/components/messages/MessageDispatcherProvider; +HSPLorg/chromium/components/messages/MessageDispatcherProvider;->from(Lorg/chromium/ui/base/WindowAndroid;)Lorg/chromium/components/messages/MessageDispatcher; +Lorg/chromium/components/messages/MessageQueueDelegate; +Lorg/chromium/components/messages/MessageQueueManager; +HSPLorg/chromium/components/messages/MessageQueueManager;-><init>(Lorg/chromium/components/messages/MessageAnimationCoordinator;)V +HSPLorg/chromium/components/messages/MessageQueueManager;->getNextMessages()Ljava/util/List; +HSPLorg/chromium/components/messages/MessageQueueManager;->updateCurrentDisplayedMessages()V +HSPLorg/chromium/components/messages/MessageQueueManager;->updateCurrentDisplayedWithoutStacking()Lorg/chromium/components/messages/MessageQueueManager$MessageState; +Lorg/chromium/components/messages/MessageQueueManager$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/messages/MessageQueueManager$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/messages/MessageQueueManager;I)V +HSPLorg/chromium/components/messages/MessageQueueManager$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/components/messages/MessageQueueManager$MessageState; +Lorg/chromium/components/messages/ScopeChangeController; +HSPLorg/chromium/components/messages/ScopeChangeController;-><init>(Lorg/chromium/components/messages/ScopeChangeController$Delegate;)V +Lorg/chromium/components/messages/ScopeChangeController$Delegate; +Lorg/chromium/components/messages/SwipeAnimationHandler; +Lorg/chromium/components/metrics/LowEntropySource; +HSPLorg/chromium/components/metrics/LowEntropySource;->generateLowEntropySource()I +HSPLorg/chromium/components/metrics/LowEntropySource;->generatePseudoLowEntropySource()I +Lorg/chromium/components/metrics/LowEntropySource$LazyHolder; +Lorg/chromium/components/metrics/LowEntropySource$LazyHolderForPseudo; +Lorg/chromium/components/minidump_uploader/CrashFileManager; +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;-><init>(Ljava/io/File;)V +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;->cleanOutAllNonFreshMinidumpFiles()V +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;->getCrashDirectory()Ljava/io/File; +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;->getMinidumpsReadyForUpload()[Ljava/io/File; +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;->importCrashpadMinidumps()V +HSPLorg/chromium/components/minidump_uploader/CrashFileManager;->listCrashFiles(Ljava/util/regex/Pattern;)[Ljava/io/File; +Lorg/chromium/components/minidump_uploader/CrashFileManager$1; +HSPLorg/chromium/components/minidump_uploader/CrashFileManager$1;-><init>()V +Lorg/chromium/components/minidump_uploader/CrashFileManager$2; +HSPLorg/chromium/components/minidump_uploader/CrashFileManager$2;-><init>(Ljava/util/regex/Pattern;)V +Lorg/chromium/components/minidump_uploader/util/CrashReportingPermissionManager; +HSPLorg/chromium/components/minidump_uploader/util/CrashReportingPermissionManager;->isUsageAndCrashReportingPermitted()Z +Lorg/chromium/components/module_installer/builder/Module; +HSPLorg/chromium/components/module_installer/builder/Module;-><init>(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V +HSPLorg/chromium/components/module_installer/builder/Module;->getImpl()Ljava/lang/Object; +HSPLorg/chromium/components/module_installer/builder/Module;->getInstallEngine()Lorg/chromium/components/module_installer/engine/InstallEngine; +HSPLorg/chromium/components/module_installer/builder/Module;->isInstalled()Z +Lorg/chromium/components/module_installer/builder/ModuleEngine; +HSPLorg/chromium/components/module_installer/builder/ModuleEngine;-><init>(Ljava/lang/String;)V +HSPLorg/chromium/components/module_installer/builder/ModuleEngine;->isInstalled(Ljava/lang/String;)Z +Lorg/chromium/components/module_installer/engine/EngineFactory; +HSPLorg/chromium/components/module_installer/engine/EngineFactory;-><init>()V +Lorg/chromium/components/module_installer/engine/InstallEngine; +Lorg/chromium/components/module_installer/util/Timer; +HSPLorg/chromium/components/module_installer/util/Timer;-><init>()V +HSPLorg/chromium/components/module_installer/util/Timer;->close()V +Lorg/chromium/components/navigation_interception/InterceptNavigationDelegate; +HSPLorg/chromium/components/navigation_interception/InterceptNavigationDelegate;-><init>()V +Lorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge; +HSPLorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge;-><init>(J)V +HSPLorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge;->create(J)Lorg/chromium/components/offline_items_collection/OfflineContentAggregatorBridge; +Lorg/chromium/components/offline_items_collection/OfflineContentProvider$Observer; +Lorg/chromium/components/offline_items_collection/OfflineItemVisuals; +HSPLorg/chromium/components/offline_items_collection/OfflineItemVisuals;-><init>()V +Lorg/chromium/components/offline_items_collection/VisualsCallback; +PLorg/chromium/components/offline_items_collection/bridges/OfflineItemBridge;->createArrayList()Ljava/util/ArrayList; +Lorg/chromium/components/omnibox/AutocompleteMatch; +Lorg/chromium/components/omnibox/AutocompleteResult; +HSPLorg/chromium/components/omnibox/AutocompleteResult;-><init>(JLjava/util/List;Lorg/chromium/components/omnibox/GroupsProto$GroupsInfo;)V +Lorg/chromium/components/omnibox/AutocompleteSchemeClassifier; +HSPLorg/chromium/components/omnibox/AutocompleteSchemeClassifier;-><init>(J)V +HSPLorg/chromium/components/omnibox/AutocompleteSchemeClassifier;->getNativePtr()J +Lorg/chromium/components/omnibox/GroupsProto$GroupConfig; +HSPLorg/chromium/components/omnibox/GroupsProto$GroupConfig;-><init>()V +Lorg/chromium/components/omnibox/GroupsProto$GroupsInfo; +HSPLorg/chromium/components/omnibox/GroupsProto$GroupsInfo;-><init>()V +HSPLorg/chromium/components/omnibox/GroupsProto$GroupsInfo;->dynamicMethod(Lcom/google/protobuf/GeneratedMessageLite$MethodToInvoke;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +Lorg/chromium/components/omnibox/GroupsProto$GroupsInfo$Builder; +HSPLorg/chromium/components/omnibox/GroupsProto$GroupsInfo$Builder;-><init>(I)V +Lorg/chromium/components/omnibox/GroupsProto$GroupsInfo$GroupConfigsDefaultEntryHolder; +Lorg/chromium/components/omnibox/OmniboxUrlEmphasizer; +HSPLorg/chromium/components/omnibox/OmniboxUrlEmphasizer;->emphasizeUrl(Landroid/text/Spannable;Lorg/chromium/components/omnibox/AutocompleteSchemeClassifier;IZIIII)V +HSPLorg/chromium/components/omnibox/OmniboxUrlEmphasizer;->parseForEmphasizeComponents(Ljava/lang/String;Lorg/chromium/components/omnibox/AutocompleteSchemeClassifier;)Lorg/chromium/components/omnibox/OmniboxUrlEmphasizer$EmphasizeComponentsResponse; +Lorg/chromium/components/omnibox/OmniboxUrlEmphasizer$EmphasizeComponentsResponse; +HSPLorg/chromium/components/omnibox/OmniboxUrlEmphasizer$EmphasizeComponentsResponse;-><init>(IIII)V +HSPLorg/chromium/components/omnibox/OmniboxUrlEmphasizer$EmphasizeComponentsResponse;->extractScheme(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/components/omnibox/OmniboxUrlEmphasizer$UrlEmphasisColorSpan; +HSPLorg/chromium/components/omnibox/OmniboxUrlEmphasizer$UrlEmphasisColorSpan;-><init>(I)V +Lorg/chromium/components/omnibox/OmniboxUrlEmphasizer$UrlEmphasisSpan; +Lorg/chromium/components/omnibox/SecurityStatusIcon; +HSPLorg/chromium/components/omnibox/SecurityStatusIcon;->getSecurityIconResource(IZZZ)I +Lorg/chromium/components/omnibox/action/OmniboxPedal; +HSPLorg/chromium/components/omnibox/action/OmniboxPedal;-><init>(ILjava/lang/String;)V +HSPLorg/chromium/components/omnibox/action/OmniboxPedal;->build(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/chromium/url/GURL;)Lorg/chromium/components/omnibox/action/OmniboxPedal; +Lorg/chromium/components/page_info/PageInfoDiscoverabilityMetrics; +HSPLorg/chromium/components/page_info/PageInfoDiscoverabilityMetrics;-><init>()V +Lorg/chromium/components/paintpreview/browser/NativePaintPreviewServiceProvider; +Lorg/chromium/components/permissions/AndroidPermissionRequester$RequestDelegate; +Lorg/chromium/components/permissions/PermissionDialogController; +HSPLorg/chromium/components/permissions/PermissionDialogController;-><init>()V +Lorg/chromium/components/permissions/PermissionDialogController$Holder; +Lorg/chromium/components/permissions/PermissionDialogController$Observer; +Lorg/chromium/components/policy/AbstractAppRestrictionsProvider$1; +HSPLorg/chromium/components/policy/AbstractAppRestrictionsProvider$1;-><init>(Lorg/chromium/components/policy/AppRestrictionsProvider;)V +Lorg/chromium/components/policy/AppRestrictionsProvider; +HSPLorg/chromium/components/policy/AppRestrictionsProvider;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/policy/AppRestrictionsProvider;->refresh()V +HSPLorg/chromium/components/policy/AppRestrictionsProvider;->startListeningForPolicyChanges()V +Lorg/chromium/components/policy/CombinedPolicyProvider; +HSPLorg/chromium/components/policy/CombinedPolicyProvider;-><init>()V +HSPLorg/chromium/components/policy/CombinedPolicyProvider;->get()Lorg/chromium/components/policy/CombinedPolicyProvider; +HSPLorg/chromium/components/policy/CombinedPolicyProvider;->linkNative(JLorg/chromium/components/policy/PolicyConverter;)Lorg/chromium/components/policy/CombinedPolicyProvider; +HSPLorg/chromium/components/policy/CombinedPolicyProvider;->refreshPolicies()V +Lorg/chromium/components/policy/PolicyCache; +HSPLorg/chromium/components/policy/PolicyCache;-><init>()V +Lorg/chromium/components/policy/PolicyCache$Type; +HSPLorg/chromium/components/policy/PolicyCache$Type;-><init>(ILjava/lang/String;)V +Lorg/chromium/components/policy/PolicyCacheProvider; +HSPLorg/chromium/components/policy/PolicyCacheProvider;-><init>()V +HSPLorg/chromium/components/policy/PolicyCacheProvider;->refresh()V +Lorg/chromium/components/policy/PolicyCacheUpdater; +HSPLorg/chromium/components/policy/PolicyCacheUpdater;->cachePolicies(Lorg/chromium/components/policy/PolicyMap;)V +Lorg/chromium/components/policy/PolicyConverter; +HSPLorg/chromium/components/policy/PolicyConverter;-><init>(J)V +HSPLorg/chromium/components/policy/PolicyConverter;->create(J)Lorg/chromium/components/policy/PolicyConverter; +Lorg/chromium/components/policy/PolicyMap; +HSPLorg/chromium/components/policy/PolicyMap;-><init>(J)V +Lorg/chromium/components/policy/PolicyProvider; +HSPLorg/chromium/components/policy/PolicyProvider;-><init>()V +HSPLorg/chromium/components/policy/PolicyProvider;->notifySettingsAvailable(Landroid/os/Bundle;)V +Lorg/chromium/components/policy/PolicyService; +HSPLorg/chromium/components/policy/PolicyService;-><init>(J)V +Lorg/chromium/components/policy/PolicyService$Observer; +Lorg/chromium/components/prefs/PrefService; +HSPLorg/chromium/components/prefs/PrefService;-><init>(J)V +HSPLorg/chromium/components/prefs/PrefService;->create(J)Lorg/chromium/components/prefs/PrefService; +HSPLorg/chromium/components/prefs/PrefService;->getBoolean(Ljava/lang/String;)Z +HSPLorg/chromium/components/prefs/PrefService;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/components/prefs/PrefService;->isManagedPreference(Ljava/lang/String;)Z +HSPLorg/chromium/components/prefs/PrefService;->setBoolean(Ljava/lang/String;Z)V +Lorg/chromium/components/safe_browsing/SafeBrowsingApiBridge; +HSPLorg/chromium/components/safe_browsing/SafeBrowsingApiBridge;->ensureInitialized()Z +HSPLorg/chromium/components/safe_browsing/SafeBrowsingApiBridge;->getHandler()V +Lorg/chromium/components/search_engines/TemplateUrl; +HSPLorg/chromium/components/search_engines/TemplateUrl;-><init>(J)V +HSPLorg/chromium/components/search_engines/TemplateUrl;->create(J)Lorg/chromium/components/search_engines/TemplateUrl; +HSPLorg/chromium/components/search_engines/TemplateUrl;->getKeyword()Ljava/lang/String; +HSPLorg/chromium/components/search_engines/TemplateUrl;->getShortName()Ljava/lang/String; +Lorg/chromium/components/search_engines/TemplateUrlService; +HSPLorg/chromium/components/search_engines/TemplateUrlService;-><init>(J)V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->addObserver(Lorg/chromium/components/search_engines/TemplateUrlService$TemplateUrlServiceObserver;)V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->create(J)Lorg/chromium/components/search_engines/TemplateUrlService; +HSPLorg/chromium/components/search_engines/TemplateUrlService;->doesDefaultSearchEngineHaveLogo()Z +HSPLorg/chromium/components/search_engines/TemplateUrlService;->getDefaultSearchEngineTemplateUrl()Lorg/chromium/components/search_engines/TemplateUrl; +HSPLorg/chromium/components/search_engines/TemplateUrlService;->isDefaultSearchEngineGoogle()Z +HSPLorg/chromium/components/search_engines/TemplateUrlService;->isLoaded()Z +HSPLorg/chromium/components/search_engines/TemplateUrlService;->onTemplateURLServiceChanged()V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->registerLoadListener(Lorg/chromium/components/search_engines/TemplateUrlService$LoadListener;)V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->removeObserver(Lorg/chromium/components/search_engines/TemplateUrlService$TemplateUrlServiceObserver;)V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->runWhenLoaded(Ljava/lang/Runnable;)V +HSPLorg/chromium/components/search_engines/TemplateUrlService;->templateUrlServiceLoaded()V +Lorg/chromium/components/search_engines/TemplateUrlService$LoadListener; +Lorg/chromium/components/search_engines/TemplateUrlService$TemplateUrlServiceObserver; +Lorg/chromium/components/security_state/SecurityStateModel; +HSPLorg/chromium/components/security_state/SecurityStateModel;->getSecurityLevelForWebContents(Lorg/chromium/content_public/browser/WebContents;)I +Lorg/chromium/components/segmentation_platform/SegmentSelectionResult; +HSPLorg/chromium/components/segmentation_platform/SegmentSelectionResult;-><init>(ZILjava/lang/Float;)V +Lorg/chromium/components/segmentation_platform/SegmentationPlatformConversionBridge; +HSPLorg/chromium/components/segmentation_platform/SegmentationPlatformConversionBridge;->createSegmentSelectionResult(ZIZF)Lorg/chromium/components/segmentation_platform/SegmentSelectionResult; +Lorg/chromium/components/segmentation_platform/SegmentationPlatformServiceImpl; +HSPLorg/chromium/components/segmentation_platform/SegmentationPlatformServiceImpl;-><init>(J)V +HSPLorg/chromium/components/segmentation_platform/SegmentationPlatformServiceImpl;->create(J)Lorg/chromium/components/segmentation_platform/SegmentationPlatformServiceImpl; +Lorg/chromium/components/signin/AccountManagerDelegate; +Lorg/chromium/components/signin/AccountManagerFacade; +Lorg/chromium/components/signin/AccountManagerFacadeImpl; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl;-><init>(Lorg/chromium/components/signin/SystemAccountManagerDelegate;)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl;->addObserver(Lorg/chromium/components/signin/AccountsChangeObserver;)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl;->getAccounts()Lorg/chromium/base/Promise; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl;->removeObserver(Lorg/chromium/components/signin/AccountsChangeObserver;)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl;->updateAccounts()V +Lorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/components/signin/AccountManagerFacadeImpl;)V +Lorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/signin/AccountManagerFacadeImpl;I)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda2; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda2;-><init>()V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda2;->onResult(Ljava/lang/Object;)V +Lorg/chromium/components/signin/AccountManagerFacadeImpl$3; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$3;-><init>(Lorg/chromium/components/signin/AccountManagerFacadeImpl;Ljava/util/ArrayList;)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$3;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$3;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/components/signin/AccountManagerFacadeImpl$4; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$4;-><init>(Lorg/chromium/components/signin/AccountManagerFacadeImpl;)V +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$4;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/components/signin/AccountManagerFacadeImpl$4;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/components/signin/AccountManagerFacadeProvider; +HSPLorg/chromium/components/signin/AccountManagerFacadeProvider;->getInstance()Lorg/chromium/components/signin/AccountManagerFacade; +Lorg/chromium/components/signin/AccountRestrictionPatternReceiver; +HSPLorg/chromium/components/signin/AccountRestrictionPatternReceiver;-><init>(Lorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda1;)V +Lorg/chromium/components/signin/AccountRestrictionPatternReceiver$1; +HSPLorg/chromium/components/signin/AccountRestrictionPatternReceiver$1;-><init>(Lorg/chromium/components/signin/AccountRestrictionPatternReceiver;Lorg/chromium/components/signin/AccountManagerFacadeImpl$$ExternalSyntheticLambda1;)V +Lorg/chromium/components/signin/AccountRestrictionPatternReceiver$2; +HSPLorg/chromium/components/signin/AccountRestrictionPatternReceiver$2;-><init>(Lorg/chromium/components/signin/AccountRestrictionPatternReceiver;Lorg/chromium/base/Promise;)V +HSPLorg/chromium/components/signin/AccountRestrictionPatternReceiver$2;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/components/signin/AccountRestrictionPatternReceiver$2;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/components/signin/AccountUtils; +PLorg/chromium/components/signin/AccountUtils;->checkChildAccountStatus(Lorg/chromium/components/signin/AccountManagerFacade;Ljava/util/List;Lorg/chromium/components/signin/AccountManagerFacade$ChildAccountStatusListener;)V +HSPLorg/chromium/components/signin/AccountUtils;->getAccountsIfFulfilledOrEmpty(Lorg/chromium/base/Promise;)Ljava/util/List; +HSPLorg/chromium/components/signin/AccountUtils;->toAccountNames(Ljava/util/List;)Ljava/util/ArrayList; +Lorg/chromium/components/signin/AccountsChangeObserver; +HSPLorg/chromium/components/signin/AccountsChangeObserver;->onCoreAccountInfosChanged()V +Lorg/chromium/components/signin/PatternMatcher$IllegalPatternException; +Lorg/chromium/components/signin/SystemAccountManagerDelegate; +HSPLorg/chromium/components/signin/SystemAccountManagerDelegate;-><init>()V +Lorg/chromium/components/signin/SystemAccountManagerDelegate$1; +HSPLorg/chromium/components/signin/SystemAccountManagerDelegate$1;-><init>(Lorg/chromium/components/signin/SystemAccountManagerDelegate;)V +Lorg/chromium/components/signin/base/CoreAccountInfo; +Lorg/chromium/components/signin/identitymanager/AccountInfoServiceImpl; +HSPLorg/chromium/components/signin/identitymanager/AccountInfoServiceImpl;-><init>(Lorg/chromium/components/signin/identitymanager/IdentityManager;Lorg/chromium/components/signin/identitymanager/AccountTrackerService;)V +HSPLorg/chromium/components/signin/identitymanager/AccountInfoServiceImpl;->onAccountsSeeded(Ljava/util/List;Z)V +Lorg/chromium/components/signin/identitymanager/AccountInfoServiceProvider; +Lorg/chromium/components/signin/identitymanager/AccountTrackerService; +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService;-><init>(J)V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService;->finishSeedingAccounts(Ljava/util/List;Z)V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService;->onCoreAccountInfosChanged()V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService;->seedAccounts(Z)V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService;->seedAccountsIfNeeded(Ljava/lang/Runnable;)V +Lorg/chromium/components/signin/identitymanager/AccountTrackerService$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/signin/identitymanager/AccountTrackerService;Lorg/chromium/components/signin/AccountManagerFacade;Z)V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService$$ExternalSyntheticLambda1;->onResult(Ljava/lang/Object;)V +Lorg/chromium/components/signin/identitymanager/AccountTrackerService$1; +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService$1;-><init>(Ljava/util/ArrayList;Lorg/chromium/components/signin/AccountManagerFacade;Lorg/chromium/components/signin/identitymanager/AccountTrackerService;Z)V +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService$1;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/components/signin/identitymanager/AccountTrackerService$1;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/components/signin/identitymanager/AccountTrackerService$Observer; +Lorg/chromium/components/signin/identitymanager/IdentityManager; +HSPLorg/chromium/components/signin/identitymanager/IdentityManager;-><init>(J)V +HSPLorg/chromium/components/signin/identitymanager/IdentityManager;->addObserver(Lorg/chromium/components/signin/identitymanager/IdentityManager$Observer;)V +HSPLorg/chromium/components/signin/identitymanager/IdentityManager;->create(JLorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate;)Lorg/chromium/components/signin/identitymanager/IdentityManager; +HSPLorg/chromium/components/signin/identitymanager/IdentityManager;->getPrimaryAccountInfo(I)Lorg/chromium/components/signin/base/CoreAccountInfo; +PLorg/chromium/components/signin/identitymanager/IdentityManager;->hasPrimaryAccount(I)Z +HSPLorg/chromium/components/signin/identitymanager/IdentityManager;->removeObserver(Lorg/chromium/components/signin/identitymanager/IdentityManager$Observer;)V +Lorg/chromium/components/signin/identitymanager/IdentityManager$Observer; +Lorg/chromium/components/signin/identitymanager/IdentityMutator; +HSPLorg/chromium/components/signin/identitymanager/IdentityMutator;-><init>(J)V +Lorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate; +HSPLorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate;-><init>(JLorg/chromium/components/signin/identitymanager/AccountTrackerService;)V +HSPLorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate;->seedAndReloadAccountsWithPrimaryAccount(Ljava/lang/String;)V +Lorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate;Ljava/lang/String;)V +HSPLorg/chromium/components/signin/identitymanager/ProfileOAuth2TokenServiceDelegate$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/components/strictmode/ReflectiveThreadStrictModeInterceptor; +HSPLorg/chromium/components/strictmode/ReflectiveThreadStrictModeInterceptor;-><init>(Ljava/util/ArrayList;Ljava/util/function/Consumer;)V +Lorg/chromium/components/strictmode/ReflectiveThreadStrictModeInterceptor$1; +HSPLorg/chromium/components/strictmode/ReflectiveThreadStrictModeInterceptor$1;-><init>(Lorg/chromium/components/strictmode/ReflectiveThreadStrictModeInterceptor;)V +Lorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder; +HSPLorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder;-><init>()V +HSPLorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder;->ignoreExternalMethod(ILjava/lang/String;)V +Lorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda0; +HSPLorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda1; +HSPLorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda1;-><init>(IILjava/lang/String;)V +Lorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda3; +HSPLorg/chromium/components/strictmode/ThreadStrictModeInterceptor$Builder$$ExternalSyntheticLambda3;-><init>(ILjava/lang/String;Ljava/lang/String;)V +Lorg/chromium/components/stylus_handwriting/DirectWritingSettingsHelper; +HSPLorg/chromium/components/stylus_handwriting/DirectWritingSettingsHelper;->isEnabled(Landroid/content/Context;)Z +Lorg/chromium/components/stylus_handwriting/DisabledStylusWritingHandler; +HSPLorg/chromium/components/stylus_handwriting/DisabledStylusWritingHandler;-><init>()V +HSPLorg/chromium/components/stylus_handwriting/DisabledStylusWritingHandler;->onWebContentsChanged(Landroid/content/Context;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/components/stylus_handwriting/DisabledStylusWritingHandler;->onWindowFocusChanged(Landroid/content/Context;Z)V +Lorg/chromium/components/stylus_handwriting/StylusApiOption; +HSPLorg/chromium/components/stylus_handwriting/StylusApiOption;->getStylusWritingCursorHandler()Lorg/chromium/ui/base/ViewAndroidDelegate$StylusWritingCursorHandler; +Lorg/chromium/components/stylus_handwriting/StylusWritingController; +HSPLorg/chromium/components/stylus_handwriting/StylusWritingController;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/components/stylus_handwriting/StylusWritingController;->getHandler()Lorg/chromium/components/stylus_handwriting/StylusApiOption; +HSPLorg/chromium/components/stylus_handwriting/StylusWritingController;->onWebContentsChanged(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/components/url_formatter/UrlFormatter; +HSPLorg/chromium/components/url_formatter/UrlFormatter;->fixupUrl(Ljava/lang/String;)Lorg/chromium/url/GURL; +Lorg/chromium/components/user_prefs/UserPrefs; +HSPLorg/chromium/components/user_prefs/UserPrefs;->get(Lorg/chromium/content_public/browser/BrowserContextHandle;)Lorg/chromium/components/prefs/PrefService; +Lorg/chromium/components/variations/NormalizedMurmurHashEntropyProvider; +HSPLorg/chromium/components/variations/NormalizedMurmurHashEntropyProvider;->hash16(I)I +Lorg/chromium/components/variations/firstrun/VariationsSeedBridge; +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->clearFirstRunPrefs()V +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->getVariationsFirstRunSeedCountry()Ljava/lang/String; +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->getVariationsFirstRunSeedData()[B +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->getVariationsFirstRunSeedDate()J +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->getVariationsFirstRunSeedIsGzipCompressed()Z +HSPLorg/chromium/components/variations/firstrun/VariationsSeedBridge;->getVariationsFirstRunSeedSignature()Ljava/lang/String; +Lorg/chromium/components/version_info/VersionConstantsBridge; +HSPLorg/chromium/components/version_info/VersionConstantsBridge;->getChannel()I +Lorg/chromium/components/webapk/lib/client/ChromeWebApkHostSignature; +Lorg/chromium/components/webapk/lib/client/WebApkValidator; +Lorg/chromium/components/webapps/AddToHomescreenViewDelegate; +Lorg/chromium/components/webapps/AppBannerManager; +HSPLorg/chromium/components/webapps/AppBannerManager;-><init>()V +HSPLorg/chromium/components/webapps/AppBannerManager;->create(J)Lorg/chromium/components/webapps/AppBannerManager; +HSPLorg/chromium/components/webapps/AppBannerManager;->destroy()V +HSPLorg/chromium/components/webapps/AppBannerManager;->isSupported()Z +Lorg/chromium/components/webapps/AppBannerManager$InstallStringPair; +HSPLorg/chromium/components/webapps/AppBannerManager$InstallStringPair;-><init>(II)V +Lorg/chromium/components/webapps/WebappsUtils; +HSPLorg/chromium/components/webapps/WebappsUtils;->isAddToHomeIntentSupported()Z +HSPLorg/chromium/components/webapps/WebappsUtils;->isRequestPinShortcutSupported()Z +Lorg/chromium/components/webapps/WebappsUtils$$ExternalSyntheticApiModelOutline2; +HSPLorg/chromium/components/webapps/WebappsUtils$$ExternalSyntheticApiModelOutline2;->m(Landroid/content/pm/ShortcutManager;)Z +Lorg/chromium/components/webapps/bottomsheet/PwaBottomSheetController; +HSPLorg/chromium/components/webapps/bottomsheet/PwaBottomSheetController;-><init>(Landroidx/appcompat/app/AppCompatActivity;)V +Lorg/chromium/components/webapps/bottomsheet/PwaBottomSheetController$1; +HSPLorg/chromium/components/webapps/bottomsheet/PwaBottomSheetController$1;-><init>(Lorg/chromium/components/webapps/bottomsheet/PwaBottomSheetController;)V +Lorg/chromium/components/webapps/bottomsheet/PwaBottomSheetControllerProvider; +Lorg/chromium/content/browser/AudioFocusDelegate; +HSPLorg/chromium/content/browser/AudioFocusDelegate;-><init>(J)V +HSPLorg/chromium/content/browser/AudioFocusDelegate;->abandonAudioFocus()V +HSPLorg/chromium/content/browser/AudioFocusDelegate;->create(J)Lorg/chromium/content/browser/AudioFocusDelegate; +HSPLorg/chromium/content/browser/AudioFocusDelegate;->tearDown()V +Lorg/chromium/content/browser/BackgroundSyncNetworkObserver; +HSPLorg/chromium/content/browser/BackgroundSyncNetworkObserver;-><init>()V +HSPLorg/chromium/content/browser/BackgroundSyncNetworkObserver;->broadcastNetworkChangeIfNecessary(I)V +HSPLorg/chromium/content/browser/BackgroundSyncNetworkObserver;->createObserver(J)Lorg/chromium/content/browser/BackgroundSyncNetworkObserver; +HSPLorg/chromium/content/browser/BackgroundSyncNetworkObserver;->onNetworkConnect(IJ)V +Lorg/chromium/content/browser/BindingManager; +HSPLorg/chromium/content/browser/BindingManager;-><init>(Landroid/content/Context;ILorg/chromium/content/browser/ChildProcessRanking;)V +PLorg/chromium/content/browser/BindingManager;->addBinding(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/content/browser/BindingManager;->ensureLowestRankIsWaived()V +PLorg/chromium/content/browser/BindingManager;->removeBinding(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +PLorg/chromium/content/browser/BindingManager;->useNotPerceptibleBinding()Z +Lorg/chromium/content/browser/BindingManager$2; +HSPLorg/chromium/content/browser/BindingManager$2;-><init>(Lorg/chromium/content/browser/BindingManager;I)V +Lorg/chromium/content/browser/BrowserContextHandleImpl; +HSPLorg/chromium/content/browser/BrowserContextHandleImpl;->getNativeBrowserContextPointer(Lorg/chromium/content_public/browser/BrowserContextHandle;)J +Lorg/chromium/content/browser/BrowserStartupControllerImpl; +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;-><init>()V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->addStartupCompletedObserver(Lorg/chromium/content_public/browser/BrowserStartupController$StartupCallback;)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->browserStartupComplete(I)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->contentStart()I +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->executeEnqueuedCallbacks(I)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->executeMinimalBrowserStartupCallbacks(I)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->isFullBrowserStarted()Z +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->prepareToStartBrowserProcess(Lorg/chromium/content/browser/BrowserStartupControllerImpl$2;)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->recordStartupUma()V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->shouldStartGpuProcessOnBrowserStartup()Z +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl;->startBrowserProcessesAsync(ZZLorg/chromium/chrome/browser/init/ChromeBrowserInitializer$2;)V +Lorg/chromium/content/browser/BrowserStartupControllerImpl$1; +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$1;-><init>(Lorg/chromium/content/browser/BrowserStartupControllerImpl;)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$1;->run()V +Lorg/chromium/content/browser/BrowserStartupControllerImpl$1$1; +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$1$1;-><init>(Lorg/chromium/content/browser/BrowserStartupControllerImpl$1;)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$1$1;->onSuccess()V +Lorg/chromium/content/browser/BrowserStartupControllerImpl$2; +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$2;-><init>(Lorg/chromium/content/browser/BrowserStartupControllerImpl;Z)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$2;->run()V +Lorg/chromium/content/browser/BrowserStartupControllerImpl$3; +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$3;-><init>(Lorg/chromium/content/browser/BrowserStartupControllerImpl;Lorg/chromium/content_public/browser/BrowserStartupController$StartupCallback;)V +HSPLorg/chromium/content/browser/BrowserStartupControllerImpl$3;->run()V +Lorg/chromium/content/browser/ChildProcessConnectionMetrics; +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics;-><init>()V +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics;->getInstance()Lorg/chromium/content/browser/ChildProcessConnectionMetrics; +Lorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/content/browser/ChildProcessConnectionMetrics;I)V +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda1; +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/content/browser/ChildProcessConnectionMetrics;)V +HSPLorg/chromium/content/browser/ChildProcessConnectionMetrics$$ExternalSyntheticLambda1;->onApplicationStateChange(I)V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;-><init>(J[Ljava/lang/String;[Lorg/chromium/base/process_launcher/FileDescriptorInfo;ZZZLorg/chromium/content/browser/GpuProcessCallback;)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;->createAndStart(J[Ljava/lang/String;[Lorg/chromium/base/process_launcher/FileDescriptorInfo;Z)Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;->getConnectionAllocator(Landroid/content/Context;Z)Lorg/chromium/base/process_launcher/ChildConnectionAllocator; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;->getTerminationInfoAndStop(J)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;->makeFdInfo(IIZJJ)Lorg/chromium/base/process_launcher/FileDescriptorInfo; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl;->setPriority(IZZZJZZI)V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;-><init>(I)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda1;-><init>(ILjava/lang/Object;)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda2; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda2;-><init>(ILorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda3; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda3;-><init>()V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$$ExternalSyntheticLambda3;->onApplicationStateChange(I)V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$1; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$1;-><init>(Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl;)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$1;->getBoundConnection(Lorg/chromium/base/process_launcher/ChildConnectionAllocator;Lorg/chromium/base/process_launcher/ChildProcessLauncher$1;)Lorg/chromium/base/process_launcher/ChildProcessConnection; +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$2; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$2;-><init>(Landroid/content/Context;Z)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$2;->run()V +Lorg/chromium/content/browser/ChildProcessLauncherHelperImpl$3; +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$3;-><init>(Landroid/content/Context;I)V +HSPLorg/chromium/content/browser/ChildProcessLauncherHelperImpl$3;->run()V +Lorg/chromium/content/browser/ChildProcessRanking; +HSPLorg/chromium/content/browser/ChildProcessRanking;->$r8$lambda$-oTVVp0pFyCDWD4D1LzuoctqOYk(Lorg/chromium/content/browser/ChildProcessRanking;)V +HSPLorg/chromium/content/browser/ChildProcessRanking;-><init>()V +HSPLorg/chromium/content/browser/ChildProcessRanking;->iterator()Ljava/util/Iterator; +HSPLorg/chromium/content/browser/ChildProcessRanking;->reposition(I)V +HSPLorg/chromium/content/browser/ChildProcessRanking;->reshuffleGroupImportance()V +Lorg/chromium/content/browser/ChildProcessRanking$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/ChildProcessRanking$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/content/browser/ChildProcessRanking;I)V +HSPLorg/chromium/content/browser/ChildProcessRanking$$ExternalSyntheticLambda0;->run()V +Lorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank; +HSPLorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;-><init>(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;->shouldBeInLowRankGroup()Z +Lorg/chromium/content/browser/ChildProcessRanking$RankComparator; +HSPLorg/chromium/content/browser/ChildProcessRanking$RankComparator;->compare(Lorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;Lorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;)I +HSPLorg/chromium/content/browser/ChildProcessRanking$RankComparator;->compareByIntersectsViewportAndDepth(Lorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;Lorg/chromium/content/browser/ChildProcessRanking$ConnectionWithRank;)I +Lorg/chromium/content/browser/ChildProcessRanking$ReverseRankIterator; +HSPLorg/chromium/content/browser/ChildProcessRanking$ReverseRankIterator;-><init>(Lorg/chromium/content/browser/ChildProcessRanking;)V +HSPLorg/chromium/content/browser/ChildProcessRanking$ReverseRankIterator;->hasNext()Z +HSPLorg/chromium/content/browser/ChildProcessRanking$ReverseRankIterator;->next()Ljava/lang/Object; +Lorg/chromium/content/browser/ContentClassFactory; +HSPLorg/chromium/content/browser/ContentClassFactory;-><init>()V +Lorg/chromium/content/browser/ContentNfcDelegate; +HSPLorg/chromium/content/browser/ContentNfcDelegate;-><init>()V +HSPLorg/chromium/content/browser/ContentNfcDelegate;->create()Lorg/chromium/content/browser/ContentNfcDelegate; +Lorg/chromium/content/browser/ContentUiEventHandler; +HSPLorg/chromium/content/browser/ContentUiEventHandler;-><init>(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)V +Lorg/chromium/content/browser/GestureListenerManagerImpl; +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->addListener(Lorg/chromium/content_public/browser/GestureStateListener;I)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/GestureListenerManagerImpl; +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->isScrollInProgress()Z +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->onNativeDestroyed()V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->onRootScrollOffsetChangedImpl(FFF)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->onWindowFocusChanged(Z)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->removeListener(Lorg/chromium/content_public/browser/GestureStateListener;)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->resetPopupsAndInput(Z)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->updateRootScrollOffsetUpdateFrequency()V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->updateScrollInfo(FFFFFFFFFFZ)V +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->verticalScrollExtent()I +HSPLorg/chromium/content/browser/GestureListenerManagerImpl;->verticalScrollOffset()I +Lorg/chromium/content/browser/GpuProcessCallback; +HSPLorg/chromium/content/browser/GpuProcessCallback;-><init>()V +HSPLorg/chromium/content/browser/GpuProcessCallback;->getViewSurface(I)Lorg/chromium/content/common/SurfaceWrapper; +Lorg/chromium/content/browser/InterfaceRegistrarImpl; +HSPLorg/chromium/content/browser/InterfaceRegistrarImpl;->createInterfaceRegistryOnIOThread(J)V +Lorg/chromium/content/browser/LauncherThread; +HSPLorg/chromium/content/browser/LauncherThread;->getHandlerThread()Lorg/chromium/base/JavaHandlerThread; +HSPLorg/chromium/content/browser/LauncherThread;->post(Ljava/lang/Runnable;)V +Lorg/chromium/content/browser/MediaSessionImpl; +HSPLorg/chromium/content/browser/MediaSessionImpl;-><init>(J)V +HSPLorg/chromium/content/browser/MediaSessionImpl;->create(J)Lorg/chromium/content/browser/MediaSessionImpl; +HSPLorg/chromium/content/browser/MediaSessionImpl;->hasObservers()Z +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionActionsChanged([I)V +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionArtworkChanged([Lorg/chromium/services/media_session/MediaImage;)V +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionDestroyed()V +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionMetadataChanged(Lorg/chromium/services/media_session/MediaMetadata;)V +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionPositionChanged(Lorg/chromium/services/media_session/MediaPosition;)V +HSPLorg/chromium/content/browser/MediaSessionImpl;->mediaSessionStateChanged(ZZ)V +Lorg/chromium/content/browser/PopupController; +HSPLorg/chromium/content/browser/PopupController;-><init>()V +HSPLorg/chromium/content/browser/PopupController;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/PopupController; +HSPLorg/chromium/content/browser/PopupController;->hideAllPopups()V +Lorg/chromium/content/browser/PopupController$HideablePopup; +Lorg/chromium/content/browser/PopupController$UserDataFactoryLazyHolder; +Lorg/chromium/content/browser/PopupController$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/PopupController$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0;-><init>()V +Lorg/chromium/content/browser/RenderCoordinatesImpl; +HSPLorg/chromium/content/browser/RenderCoordinatesImpl;-><init>()V +HSPLorg/chromium/content/browser/RenderCoordinatesImpl;->fromLocalCssToPix(F)F +HSPLorg/chromium/content/browser/RenderCoordinatesImpl;->getScrollYPixInt()I +Lorg/chromium/content/browser/RenderWidgetHostViewImpl; +HSPLorg/chromium/content/browser/RenderWidgetHostViewImpl;-><init>(J)V +HSPLorg/chromium/content/browser/RenderWidgetHostViewImpl;->clearNativePtr()V +HSPLorg/chromium/content/browser/RenderWidgetHostViewImpl;->create(J)Lorg/chromium/content/browser/RenderWidgetHostViewImpl; +Lorg/chromium/content/browser/ScreenOrientationProviderImpl; +HSPLorg/chromium/content/browser/ScreenOrientationProviderImpl;-><init>()V +HSPLorg/chromium/content/browser/ScreenOrientationProviderImpl;->getInstance()Lorg/chromium/content/browser/ScreenOrientationProviderImpl; +Lorg/chromium/content/browser/ScreenOrientationProviderImpl$Holder; +Lorg/chromium/content/browser/ServicificationStartupUma; +HSPLorg/chromium/content/browser/ServicificationStartupUma;-><init>()V +HSPLorg/chromium/content/browser/ServicificationStartupUma;->getStartupMode(ZZZ)I +Lorg/chromium/content/browser/SpareChildConnection; +HSPLorg/chromium/content/browser/SpareChildConnection;-><init>(Landroid/content/Context;Lorg/chromium/base/process_launcher/ChildConnectionAllocator;Landroid/os/Bundle;)V +Lorg/chromium/content/browser/SpareChildConnection$1; +HSPLorg/chromium/content/browser/SpareChildConnection$1;-><init>(Lorg/chromium/content/browser/SpareChildConnection;)V +HSPLorg/chromium/content/browser/SpareChildConnection$1;->onChildProcessDied(Lorg/chromium/base/process_launcher/ChildProcessConnection;)V +HSPLorg/chromium/content/browser/SpareChildConnection$1;->onChildStarted()V +Lorg/chromium/content/browser/SpareChildConnection$2; +HSPLorg/chromium/content/browser/SpareChildConnection$2;-><init>(Lorg/chromium/base/process_launcher/ChildProcessLauncher$1;)V +HSPLorg/chromium/content/browser/SpareChildConnection$2;->run()V +Lorg/chromium/content/browser/SpeechRecognitionImpl; +HSPLorg/chromium/content/browser/SpeechRecognitionImpl;->getComponent(ILjava/lang/String;)Landroid/content/ComponentName; +Lorg/chromium/content/browser/TracingControllerAndroidImpl; +HSPLorg/chromium/content/browser/TracingControllerAndroidImpl;-><init>(Landroid/content/Context;)V +Lorg/chromium/content/browser/TracingControllerAndroidImpl$TracingBroadcastReceiver; +HSPLorg/chromium/content/browser/TracingControllerAndroidImpl$TracingBroadcastReceiver;-><init>(Lorg/chromium/content/browser/TracingControllerAndroidImpl;)V +Lorg/chromium/content/browser/TracingControllerAndroidImpl$TracingIntentFilter; +HSPLorg/chromium/content/browser/TracingControllerAndroidImpl$TracingIntentFilter;-><init>(Landroid/content/Context;)V +Lorg/chromium/content/browser/UiThreadTaskTraitsImpl; +Lorg/chromium/content/browser/UiThreadTaskTraitsImpl$Descriptor; +HSPLorg/chromium/content/browser/UiThreadTaskTraitsImpl$Descriptor;-><init>()V +Lorg/chromium/content/browser/ViewEventSinkImpl; +HSPLorg/chromium/content/browser/ViewEventSinkImpl;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/ViewEventSinkImpl;->from(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/ViewEventSinkImpl; +HSPLorg/chromium/content/browser/ViewEventSinkImpl;->onActivityPaused()V +HSPLorg/chromium/content/browser/ViewEventSinkImpl;->onActivityResumed()V +HSPLorg/chromium/content/browser/ViewEventSinkImpl;->onFocusChanged$1()V +Lorg/chromium/content/browser/WindowEventObserver; +HSPLorg/chromium/content/browser/WindowEventObserver;->onAttachedToWindow()V +HSPLorg/chromium/content/browser/WindowEventObserver;->onDetachedFromWindow()V +HSPLorg/chromium/content/browser/WindowEventObserver;->onViewFocusChanged(ZZ)V +HSPLorg/chromium/content/browser/WindowEventObserver;->onWindowFocusChanged(Z)V +Lorg/chromium/content/browser/WindowEventObserverManager; +HSPLorg/chromium/content/browser/WindowEventObserverManager;-><init>(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)V +HSPLorg/chromium/content/browser/WindowEventObserverManager;->addObserver(Lorg/chromium/content/browser/WindowEventObserver;)V +HSPLorg/chromium/content/browser/WindowEventObserverManager;->addUiObservers()V +HSPLorg/chromium/content/browser/WindowEventObserverManager;->from(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/WindowEventObserverManager; +HSPLorg/chromium/content/browser/WindowEventObserverManager;->onDIPScaleChanged(F)V +HSPLorg/chromium/content/browser/WindowEventObserverManager;->onRotationChanged(I)V +HSPLorg/chromium/content/browser/WindowEventObserverManager;->onWindowAndroidChanged(Lorg/chromium/ui/base/WindowAndroid;)V +Lorg/chromium/content/browser/WindowEventObserverManager$UserDataFactoryLazyHolder; +Lorg/chromium/content/browser/WindowEventObserverManager$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/WindowEventObserverManager$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/content/browser/WindowEventObserverManager$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0;->create(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)Ljava/lang/Object; +Lorg/chromium/content/browser/accessibility/AccessibilityDelegate; +HSPLorg/chromium/content/browser/accessibility/AccessibilityDelegate;->getNativeAXTree()J +HSPLorg/chromium/content/browser/accessibility/AccessibilityDelegate;->setOnScrollPositionChangedCallback(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$$ExternalSyntheticLambda1;)V +Lorg/chromium/content/browser/accessibility/AccessibilityDelegate$AccessibilityCoordinates; +Lorg/chromium/content/browser/accessibility/AccessibilityEventDispatcher; +HSPLorg/chromium/content/browser/accessibility/AccessibilityEventDispatcher;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$1;Ljava/util/HashMap;Ljava/util/HashSet;Ljava/util/HashSet;)V +Lorg/chromium/content/browser/accessibility/AccessibilityHistogramRecorder; +HSPLorg/chromium/content/browser/accessibility/AccessibilityHistogramRecorder;-><init>()V +Lorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder; +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$1;)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->addAccessibilityNodeInfoActions(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;IZZZZZZZZZZZZZZZZZ)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->addAccessibilityNodeInfoChildren(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;[I)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->convertWebRectToAndroidCoordinates(Landroid/graphics/Rect;Landroid/os/Bundle;)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->setAccessibilityNodeInfoBaseAttributes(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZIILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->setAccessibilityNodeInfoBooleanAttributes(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;IZZZZZZZZZZZZ)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->setAccessibilityNodeInfoLocation(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;IIIIIIIZ)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->setAccessibilityNodeInfoOAttributes(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;ZZLjava/lang/String;)V +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder;->setAccessibilityNodeInfoText(Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat;Ljava/lang/String;ZZLjava/lang/String;[I[I[Ljava/lang/String;Ljava/lang/String;)V +Lorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/content/browser/accessibility/AccessibilityNodeInfoBuilder$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/accessibility/AccessibilityNodeInfo;Ljava/util/List;)V +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;->getAccessibilityCoordinates()Lorg/chromium/content/browser/accessibility/AccessibilityDelegate$AccessibilityCoordinates; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;->getContainerView()Landroid/view/View; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;->getProductVersion()Ljava/lang/String; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;->getWebContents()Lorg/chromium/content_public/browser/WebContents; +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->fromLocalCssToPix(F)F +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getContentOffsetYPix()F +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getContentWidthCss()F +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getLastFrameViewportHeightPixInt()I +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getRenderCoordinates()Lorg/chromium/content/browser/RenderCoordinatesImpl; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getScrollX()F +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityDelegate$AccessibilityCoordinatesImpl;->getScrollY()F +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;-><init>(Lorg/chromium/content/browser/accessibility/AccessibilityDelegate;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->buildAccessibilityEvent(II)Landroid/view/accessibility/AccessibilityEvent; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->clearNodeInfoCacheForGivenId(I)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->createAccessibilityNodeInfo(I)Landroidx/core/view/accessibility/AccessibilityNodeInfoCompat; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->handleFocusChanged(I)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->handleNavigate(I)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->isAccessibilityEnabled()Z +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->isFrameInfoInitialized()Z +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->isNativeInitialized()Z +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->moveAccessibilityFocusToId(I)Z +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->notifyFrameInfoInitialized()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->onAttachedToWindow()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->onDetachedFromWindow()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->onNativeInit()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->onNativeObjectDestroyed()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->performAction(IILandroid/os/Bundle;)Z +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->refreshNativeState()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->registerLocaleChangeReceiver()V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->requestSendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->sendAccessibilityEvent(II)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->setAccessibilityEventBaseAttributes(Landroid/view/accessibility/AccessibilityEvent;ZZZZIIIIIILjava/lang/String;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;->updateMaxNodesInCache()V +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$$ExternalSyntheticApiModelOutline0; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$$ExternalSyntheticApiModelOutline0;->m(Landroid/view/autofill/AutofillManager;)Z +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;I)V +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$1; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$1;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;)V +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$1;->dispatchEvent(II)Z +Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$3; +HSPLorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl$3;-><init>(Lorg/chromium/content/browser/accessibility/WebContentsAccessibilityImpl;)V +Lorg/chromium/content/browser/accessibility/captioning/CaptioningBridge; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningBridge;-><init>()V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningBridge;->getCaptioningStyleFrom(Landroid/view/accessibility/CaptioningManager$CaptionStyle;)Lorg/chromium/content/browser/accessibility/captioning/CaptioningStyle; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningBridge;->syncToDelegate()V +Lorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate;-><init>()V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate;->androidColorToCssColor(Ljava/lang/Integer;)Ljava/lang/String; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate;->notifyListener(Lorg/chromium/content/browser/accessibility/captioning/CaptioningController;)V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate;->notifySettingsChanged()V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningChangeDelegate;->onUserStyleChanged(Lorg/chromium/content/browser/accessibility/captioning/CaptioningStyle;)V +Lorg/chromium/content/browser/accessibility/captioning/CaptioningController; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningController;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningController;->onDestroy()V +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningController;->onRenderProcessChange()V +Lorg/chromium/content/browser/accessibility/captioning/CaptioningStyle; +HSPLorg/chromium/content/browser/accessibility/captioning/CaptioningStyle;-><init>(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Landroid/graphics/Typeface;)V +Lorg/chromium/content/browser/font/AndroidFontLookupImpl; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;->close()V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;->createFontQuery(ILjava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;->fetchAllFontFiles(Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder;)V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;->fetchFontInBackground(Ljava/lang/String;Lorg/chromium/mojo/system/Core;)Lorg/chromium/mojo_base/mojom/ReadOnlyFile; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl;->onConnectionError(Lorg/chromium/mojo/system/MojoException;)V +Lorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda1; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/content/browser/font/AndroidFontLookupImpl;Lorg/chromium/mojo/system/impl/CoreImpl;JLjava/util/concurrent/Executor;Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder;)V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda2; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda2;-><init>(Lorg/chromium/blink/mojom/AndroidFontLookup_Internal$AndroidFontLookupFetchAllFontFilesResponseParamsProxyToResponder;Ljava/lang/Object;I)V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$$ExternalSyntheticLambda2;->run()V +Lorg/chromium/content/browser/font/AndroidFontLookupImpl$Factory; +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$Factory;-><init>()V +HSPLorg/chromium/content/browser/font/AndroidFontLookupImpl$Factory;->createImpl()Lorg/chromium/mojo/bindings/Interface; +Lorg/chromium/content/browser/font/FontsContractWrapper; +HSPLorg/chromium/content/browser/font/FontsContractWrapper;-><init>()V +Lorg/chromium/content/browser/framehost/NavigationControllerImpl; +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;-><init>(J)V +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->canGoBack()Z +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->canGoForward()Z +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->create(J)Lorg/chromium/content/browser/framehost/NavigationControllerImpl; +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->createNavigationEntry(ILorg/chromium/url/GURL;Lorg/chromium/url/GURL;Lorg/chromium/url/GURL;Ljava/lang/String;Landroid/graphics/Bitmap;IJZ)Lorg/chromium/content_public/browser/NavigationEntry; +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->destroy()V +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->getEntryAtIndex(I)Lorg/chromium/content_public/browser/NavigationEntry; +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->getLastCommittedEntryIndex()I +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->getUseDesktopUserAgent()Z +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->isInitialNavigation()Z +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->loadUrl(Lorg/chromium/content_public/browser/LoadUrlParams;)V +HSPLorg/chromium/content/browser/framehost/NavigationControllerImpl;->needsReload()Z +Lorg/chromium/content/browser/framehost/RenderFrameHostDelegate; +Lorg/chromium/content/browser/input/CursorAnchorInfoController; +HSPLorg/chromium/content/browser/input/CursorAnchorInfoController;-><init>(Lorg/chromium/content/browser/input/InputMethodManagerWrapperImpl;Lorg/chromium/content/browser/input/ImeAdapterImpl$1;Lorg/chromium/content/browser/input/CursorAnchorInfoController$1;)V +Lorg/chromium/content/browser/input/CursorAnchorInfoController$1; +HSPLorg/chromium/content/browser/input/CursorAnchorInfoController$1;-><init>()V +Lorg/chromium/content/browser/input/ImeAdapterImpl; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;-><init>(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/input/ImeAdapterImpl; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->getContainerView()Landroid/view/View; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->hideKeyboard()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->isValid()Z +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onAttachedToWindow()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onConnectedToRenderProcess()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onDetachedFromWindow()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onNativeDestroyed()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onResizeScrollableViewport(Z)V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onViewFocusChanged(ZZ)V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->onWindowFocusChanged(Z)V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->resetAndHideKeyboard()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl;->updateFrameInfo(FFZZFFF)V +Lorg/chromium/content/browser/input/ImeAdapterImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/content/browser/input/ImeAdapterImpl;)V +Lorg/chromium/content/browser/input/ImeAdapterImpl$1; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl$1;-><init>(Lorg/chromium/content/browser/input/ImeAdapterImpl;)V +Lorg/chromium/content/browser/input/ImeAdapterImpl$UserDataFactoryLazyHolder; +Lorg/chromium/content/browser/input/ImeAdapterImpl$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/input/ImeAdapterImpl$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0;-><init>()V +HSPLorg/chromium/content/browser/input/ImeAdapterImpl$UserDataFactoryLazyHolder$$ExternalSyntheticLambda0;->create(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)Ljava/lang/Object; +Lorg/chromium/content/browser/input/InputMethodManagerWrapperImpl; +HSPLorg/chromium/content/browser/input/InputMethodManagerWrapperImpl;-><init>(Landroid/content/Context;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/content_public/browser/InputMethodManagerWrapper$Delegate;)V +HSPLorg/chromium/content/browser/input/InputMethodManagerWrapperImpl;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager; +HSPLorg/chromium/content/browser/input/InputMethodManagerWrapperImpl;->hideSoftInputFromWindow(Landroid/os/IBinder;)Z +HSPLorg/chromium/content/browser/input/InputMethodManagerWrapperImpl;->isActive(Landroid/view/View;)Z +Lorg/chromium/content/browser/input/ThreadedInputConnectionFactory; +HSPLorg/chromium/content/browser/input/ThreadedInputConnectionFactory;-><init>(Lorg/chromium/content_public/browser/InputMethodManagerWrapper;)V +Lorg/chromium/content/browser/selection/AdditionalMenuItemProviderImpl; +HSPLorg/chromium/content/browser/selection/AdditionalMenuItemProviderImpl;-><init>()V +Lorg/chromium/content/browser/selection/MagnifierAnimator; +HSPLorg/chromium/content/browser/selection/MagnifierAnimator;-><init>(Lorg/chromium/content/browser/selection/MagnifierWrapperImpl;)V +HSPLorg/chromium/content/browser/selection/MagnifierAnimator;->createValueAnimator()V +Lorg/chromium/content/browser/selection/MagnifierAnimator$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/selection/MagnifierAnimator$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/content/browser/selection/MagnifierAnimator;)V +Lorg/chromium/content/browser/selection/MagnifierWrapper; +Lorg/chromium/content/browser/selection/MagnifierWrapperImpl; +HSPLorg/chromium/content/browser/selection/MagnifierWrapperImpl;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$$ExternalSyntheticLambda0;)V +Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl; +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->clearSelection()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->destroyPastePopup()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->dismissTextHandles()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->finishActionMode()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->fromWebContents(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl; +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->hide()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->hidePopupsAndPreserveSelection()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->isActionModeValid()Z +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->nativeSelectionPopupControllerDestroyed()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->onAttachedToWindow()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->onDetachedFromWindow()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->onViewFocusChanged(ZZ)V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->onWindowFocusChanged(Z)V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->restoreSelectionPopupsIfNecessary()V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->setSelectionClient(Lorg/chromium/content_public/browser/SelectionClient;)V +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl;->updateTextSelectionUI(Z)V +Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$$ExternalSyntheticLambda0; +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl;)V +Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$1; +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl$1;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl;)V +Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$2; +HSPLorg/chromium/content/browser/selection/SelectionPopupControllerImpl$2;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl;)V +Lorg/chromium/content/browser/selection/SmartSelectionClient; +HSPLorg/chromium/content/browser/selection/SmartSelectionClient;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$2;Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content/browser/selection/SmartSelectionClient;->getSelectionEventProcessor()Lorg/chromium/content_public/browser/SelectionEventProcessor; +HSPLorg/chromium/content/browser/selection/SmartSelectionClient;->onNativeSideDestroyed(J)V +Lorg/chromium/content/browser/selection/SmartSelectionEventProcessor; +HSPLorg/chromium/content/browser/selection/SmartSelectionEventProcessor;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +Lorg/chromium/content/browser/selection/SmartSelectionEventProcessor$1; +HSPLorg/chromium/content/browser/selection/SmartSelectionEventProcessor$1;-><init>(Lorg/chromium/content/browser/selection/SmartSelectionEventProcessor;)V +Lorg/chromium/content/browser/selection/SmartSelectionProvider; +HSPLorg/chromium/content/browser/selection/SmartSelectionProvider;-><init>(Lorg/chromium/content/browser/selection/SelectionPopupControllerImpl$2;Lorg/chromium/content_public/browser/WebContents;Lorg/chromium/content/browser/selection/SmartSelectionEventProcessor;)V +Lorg/chromium/content/browser/selection/SmartSelectionProvider$1; +HSPLorg/chromium/content/browser/selection/SmartSelectionProvider$1;-><init>(Lorg/chromium/content/browser/selection/SmartSelectionProvider;)V +Lorg/chromium/content/browser/selection/SmartSelectionProvider$2; +HSPLorg/chromium/content/browser/selection/SmartSelectionProvider$2;-><init>(Lorg/chromium/content/browser/selection/SmartSelectionProvider;)V +Lorg/chromium/content/browser/sms/SmsProviderGms; +HSPLorg/chromium/content/browser/sms/SmsProviderGms;-><init>(JIZ)V +HSPLorg/chromium/content/browser/sms/SmsProviderGms;->create(JI)Lorg/chromium/content/browser/sms/SmsProviderGms; +Lorg/chromium/content/browser/sms/SmsUserConsentReceiver; +HSPLorg/chromium/content/browser/sms/SmsUserConsentReceiver;-><init>(Lorg/chromium/content/browser/sms/SmsProviderGms;Lorg/chromium/content/browser/sms/Wrappers$WebOTPServiceContext;)V +Lorg/chromium/content/browser/sms/SmsVerificationReceiver; +HSPLorg/chromium/content/browser/sms/SmsVerificationReceiver;-><init>(Lorg/chromium/content/browser/sms/SmsProviderGms;Lorg/chromium/content/browser/sms/Wrappers$WebOTPServiceContext;)V +Lorg/chromium/content/browser/sms/Wrappers$WebOTPServiceContext; +HSPLorg/chromium/content/browser/sms/Wrappers$WebOTPServiceContext;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/content/browser/sms/Wrappers$WebOTPServiceContext;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;I)Landroid/content/Intent; +Lorg/chromium/content/browser/webcontents/WebContentsImpl; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;-><init>(JLorg/chromium/content_public/browser/NavigationController;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->addObserver(Lorg/chromium/content_public/browser/WebContentsObserver;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->checkNotDestroyed()V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->clearNativePtr()V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->create(JLorg/chromium/content_public/browser/NavigationController;)Lorg/chromium/content/browser/webcontents/WebContentsImpl; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getContext()Landroid/content/Context; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getLastCommittedUrl()Lorg/chromium/url/GURL; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getLoadProgress()F +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getNativePointer()J +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getNavigationController()Lorg/chromium/content_public/browser/NavigationController; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getOrSetUserData(Ljava/lang/Class;Lorg/chromium/content/browser/webcontents/WebContentsImpl$UserDataFactory;)Lorg/chromium/base/UserData; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getRenderWidgetHostView$1()Lorg/chromium/content/browser/RenderWidgetHostViewImpl; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getRenderWidgetHostView()Lorg/chromium/content/browser/RenderWidgetHostViewImpl; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getTitle()Ljava/lang/String; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getTopLevelNativeWindow()Lorg/chromium/ui/base/WindowAndroid; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getUserDataHost()Lorg/chromium/base/UserDataHost; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getViewAndroidDelegate()Lorg/chromium/ui/base/ViewAndroidDelegate; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getVirtualKeyboardMode()I +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getVisibility()I +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->getVisibleUrl()Lorg/chromium/url/GURL; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->initialize(Lorg/chromium/ui/base/ViewAndroidDelegate;Lorg/chromium/components/embedder_support/view/ContentView;Lorg/chromium/ui/base/WindowAndroid;Lorg/chromium/content_public/browser/WebContents$1;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->isDestroyed()Z +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->isIncognito()Z +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->isLoading()Z +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->notifyRendererPreferenceUpdate()V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->onDIPScaleChanged(F)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->onHide()V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->onShow()V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->removeObserver(Lorg/chromium/content_public/browser/WebContentsObserver;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setFocus(Z)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setImportance(I)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setMediaSession(Lorg/chromium/content/browser/MediaSessionImpl;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setOverscrollRefreshHandler(Lorg/chromium/ui/OverscrollRefreshHandler;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setSize(II)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setStylusWritingHandler(Lorg/chromium/content_public/browser/StylusWritingHandler;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl;->setTopLevelNativeWindow(Lorg/chromium/ui/base/WindowAndroid;)V +Lorg/chromium/content/browser/webcontents/WebContentsImpl$1; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl$1;-><init>()V +Lorg/chromium/content/browser/webcontents/WebContentsImpl$UserDataFactory; +Lorg/chromium/content/browser/webcontents/WebContentsImpl$WebContentsInternalsImpl; +HSPLorg/chromium/content/browser/webcontents/WebContentsImpl$WebContentsInternalsImpl;-><init>()V +Lorg/chromium/content/browser/webcontents/WebContentsObserverProxy; +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;-><init>(Lorg/chromium/content/browser/webcontents/WebContentsImpl;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->destroy()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didChangeVisibleSecurityState()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didFinishLoadInPrimaryMainFrame(IILorg/chromium/url/GURL;ZI)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didFinishLoadInPrimaryMainFrame(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;Lorg/chromium/url/GURL;ZI)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didFirstVisuallyNonEmptyPaint()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didStartLoading(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didStartNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->didStopLoading(Lorg/chromium/url/GURL;Z)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->documentLoadedInPrimaryMainFrame(III)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->documentLoadedInPrimaryMainFrame(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;I)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->finishObserverCall()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->handleObserverCall()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->loadProgressChanged(F)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->navigationEntriesChanged()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->navigationEntryCommitted(Lorg/chromium/content_public/browser/LoadCommittedDetails;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->onWebContentsFocused()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->onWebContentsLostFocus()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->primaryMainDocumentElementAvailable()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->renderFrameCreated(II)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->renderFrameCreated(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->renderFrameDeleted(II)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->renderFrameDeleted(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;)V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->renderProcessGone()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->wasHidden()V +HSPLorg/chromium/content/browser/webcontents/WebContentsObserverProxy;->wasShown()V +Lorg/chromium/content/common/ContentSwitchUtils; +HSPLorg/chromium/content/common/ContentSwitchUtils;->getSwitchValue([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/content/common/IGpuProcessCallback; +Lorg/chromium/content/common/IGpuProcessCallback$Stub; +HSPLorg/chromium/content/common/IGpuProcessCallback$Stub;-><init>()V +HSPLorg/chromium/content/common/IGpuProcessCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +Lorg/chromium/content/common/SurfaceWrapper; +HSPLorg/chromium/content/common/SurfaceWrapper;-><init>(Landroid/view/Surface;Z)V +HSPLorg/chromium/content/common/SurfaceWrapper;->create(Landroid/view/Surface;Z)Lorg/chromium/content/common/SurfaceWrapper; +HSPLorg/chromium/content/common/SurfaceWrapper;->writeToParcel(Landroid/os/Parcel;I)V +Lorg/chromium/content/common/SurfaceWrapper$1; +HSPLorg/chromium/content/common/SurfaceWrapper$1;-><init>()V +Lorg/chromium/content_public/browser/ActionModeCallbackHelper; +HSPLorg/chromium/content_public/browser/ActionModeCallbackHelper;-><init>()V +Lorg/chromium/content_public/browser/ActionModeCallbackHelper$EmptyActionCallback; +HSPLorg/chromium/content_public/browser/ActionModeCallbackHelper$EmptyActionCallback;-><init>()V +Lorg/chromium/content_public/browser/BrowserContextHandle; +Lorg/chromium/content_public/browser/BrowserStartupController; +HSPLorg/chromium/content_public/browser/BrowserStartupController;->getInstance()Lorg/chromium/content/browser/BrowserStartupControllerImpl; +Lorg/chromium/content_public/browser/BrowserStartupController$StartupCallback; +Lorg/chromium/content_public/browser/BrowserTaskExecutor; +HSPLorg/chromium/content_public/browser/BrowserTaskExecutor;-><init>()V +HSPLorg/chromium/content_public/browser/BrowserTaskExecutor;->canRunTaskImmediately(Lorg/chromium/base/task/TaskTraits;)Z +HSPLorg/chromium/content_public/browser/BrowserTaskExecutor;->createSingleThreadTaskRunner(Lorg/chromium/base/task/TaskTraits;)Lorg/chromium/base/task/SingleThreadTaskRunner; +HSPLorg/chromium/content_public/browser/BrowserTaskExecutor;->postDelayedTask(Lorg/chromium/base/task/TaskTraits;Ljava/lang/Runnable;J)V +Lorg/chromium/content_public/browser/ContactsPicker; +Lorg/chromium/content_public/browser/GestureListenerManager; +Lorg/chromium/content_public/browser/GestureStateListener; +HSPLorg/chromium/content_public/browser/GestureStateListener;-><init>()V +HSPLorg/chromium/content_public/browser/GestureStateListener;->onScrollOffsetOrExtentChanged(II)V +Lorg/chromium/content_public/browser/GlobalRenderFrameHostId; +HSPLorg/chromium/content_public/browser/GlobalRenderFrameHostId;-><init>(II)V +Lorg/chromium/content_public/browser/HostZoomMap; +Lorg/chromium/content_public/browser/ImageDownloadCallback; +Lorg/chromium/content_public/browser/ImeEventObserver; +Lorg/chromium/content_public/browser/InputMethodManagerWrapper; +Lorg/chromium/content_public/browser/InputMethodManagerWrapper$Delegate; +Lorg/chromium/content_public/browser/InterfaceRegistrar; +Lorg/chromium/content_public/browser/InterfaceRegistrar$Registry; +HSPLorg/chromium/content_public/browser/InterfaceRegistrar$Registry;-><init>()V +Lorg/chromium/content_public/browser/LoadCommittedDetails; +HSPLorg/chromium/content_public/browser/LoadCommittedDetails;-><init>(ILorg/chromium/url/GURL;ZZZI)V +Lorg/chromium/content_public/browser/LoadUrlParams; +HSPLorg/chromium/content_public/browser/LoadUrlParams;-><init>(ILjava/lang/String;)V +Lorg/chromium/content_public/browser/MediaSession; +HSPLorg/chromium/content_public/browser/MediaSession;-><init>()V +Lorg/chromium/content_public/browser/MediaSessionObserver; +HSPLorg/chromium/content_public/browser/MediaSessionObserver;-><init>(Lorg/chromium/content/browser/MediaSessionImpl;)V +Lorg/chromium/content_public/browser/NavigationController; +Lorg/chromium/content_public/browser/NavigationEntry; +HSPLorg/chromium/content_public/browser/NavigationEntry;-><init>(ILorg/chromium/url/GURL;Lorg/chromium/url/GURL;Lorg/chromium/url/GURL;Ljava/lang/String;Landroid/graphics/Bitmap;)V +Lorg/chromium/content_public/browser/NavigationHandle; +HSPLorg/chromium/content_public/browser/NavigationHandle;-><init>()V +HSPLorg/chromium/content_public/browser/NavigationHandle;->didFinish(Lorg/chromium/url/GURL;ZZZZZIIIZ)V +HSPLorg/chromium/content_public/browser/NavigationHandle;->initialize(JLorg/chromium/url/GURL;Lorg/chromium/url/GURL;Lorg/chromium/url/GURL;ZZZLorg/chromium/url/Origin;IZZZZJZZ)V +HSPLorg/chromium/content_public/browser/NavigationHandle;->release()V +Lorg/chromium/content_public/browser/SelectionClient; +HSPLorg/chromium/content_public/browser/SelectionClient;->createSmartSelectionClient(Lorg/chromium/content_public/browser/WebContents;)Lorg/chromium/content/browser/selection/SmartSelectionClient; +Lorg/chromium/content_public/browser/SelectionEventProcessor; +Lorg/chromium/content_public/browser/SmartClipProvider; +Lorg/chromium/content_public/browser/UiThreadTaskTraits; +Lorg/chromium/content_public/browser/ViewEventSink; +Lorg/chromium/content_public/browser/ViewEventSink$InternalAccessDelegate; +Lorg/chromium/content_public/browser/WebContents; +Lorg/chromium/content_public/browser/WebContents$1; +HSPLorg/chromium/content_public/browser/WebContents$1;-><init>()V +Lorg/chromium/content_public/browser/WebContentsAccessibility; +Lorg/chromium/content_public/browser/WebContentsObserver; +HSPLorg/chromium/content_public/browser/WebContentsObserver;-><init>()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;-><init>(Lorg/chromium/content_public/browser/WebContents;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->destroy()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didChangeVisibleSecurityState()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didFinishLoadInPrimaryMainFrame(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;Lorg/chromium/url/GURL;ZI)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didFinishNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didFirstVisuallyNonEmptyPaint()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didStartLoading(Lorg/chromium/url/GURL;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didStartNavigationInPrimaryMainFrame(Lorg/chromium/content_public/browser/NavigationHandle;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->didStopLoading(Lorg/chromium/url/GURL;Z)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->documentLoadedInPrimaryMainFrame(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;I)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->loadProgressChanged(F)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->navigationEntriesChanged()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->navigationEntryCommitted(Lorg/chromium/content_public/browser/LoadCommittedDetails;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->onWebContentsFocused()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->onWebContentsLostFocus()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->primaryMainDocumentElementAvailable()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->renderFrameCreated(Lorg/chromium/content_public/browser/GlobalRenderFrameHostId;)V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->wasHidden()V +HSPLorg/chromium/content_public/browser/WebContentsObserver;->wasShown()V +Lorg/chromium/device/battery/BatteryMonitorFactory; +HSPLorg/chromium/device/battery/BatteryMonitorFactory;-><init>()V +HSPLorg/chromium/device/battery/BatteryMonitorFactory;->createImpl()Lorg/chromium/mojo/bindings/Interface; +Lorg/chromium/device/battery/BatteryMonitorFactory$1; +HSPLorg/chromium/device/battery/BatteryMonitorFactory$1;-><init>(Lorg/chromium/device/battery/BatteryMonitorFactory;)V +HSPLorg/chromium/device/battery/BatteryMonitorFactory$1;->onBatteryStatusChanged(Lorg/chromium/device/mojom/BatteryStatus;)V +Lorg/chromium/device/battery/BatteryMonitorImpl; +HSPLorg/chromium/device/battery/BatteryMonitorImpl;-><init>(Lorg/chromium/device/battery/BatteryMonitorFactory;)V +HSPLorg/chromium/device/battery/BatteryMonitorImpl;->queryNextStatus(Lorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParamsProxyToResponder;)V +Lorg/chromium/device/battery/BatteryStatusManager; +HSPLorg/chromium/device/battery/BatteryStatusManager;-><init>(Lorg/chromium/device/battery/BatteryMonitorFactory$1;)V +Lorg/chromium/device/battery/BatteryStatusManager$1; +HSPLorg/chromium/device/battery/BatteryStatusManager$1;-><init>(Lorg/chromium/device/battery/BatteryStatusManager;)V +HSPLorg/chromium/device/battery/BatteryStatusManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +Lorg/chromium/device/battery/BatteryStatusManager$2; +HSPLorg/chromium/device/battery/BatteryStatusManager$2;-><init>(Lorg/chromium/device/battery/BatteryStatusManager;Lorg/chromium/device/mojom/BatteryStatus;)V +HSPLorg/chromium/device/battery/BatteryStatusManager$2;->doInBackground()Ljava/lang/Object; +HSPLorg/chromium/device/battery/BatteryStatusManager$2;->onPostExecute(Ljava/lang/Object;)V +Lorg/chromium/device/battery/BatteryStatusManager$AndroidBatteryManagerWrapper; +HSPLorg/chromium/device/battery/BatteryStatusManager$AndroidBatteryManagerWrapper;-><init>(Landroid/os/BatteryManager;)V +Lorg/chromium/device/geolocation/LocationProviderFactory; +HSPLorg/chromium/device/geolocation/LocationProviderFactory;->useGmsCoreLocationProvider()V +Lorg/chromium/device/mojom/BatteryMonitor; +Lorg/chromium/device/mojom/BatteryMonitor_Internal; +Lorg/chromium/device/mojom/BatteryMonitor_Internal$1; +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$1;-><init>()V +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$1;->buildStub(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/Interface;)Lorg/chromium/mojo/bindings/Interface$Stub; +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$1;->getName()Ljava/lang/String; +Lorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusParams; +Lorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParams; +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParams;-><init>(I)V +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParams;->encode(Lorg/chromium/mojo/bindings/Encoder;)V +Lorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParamsProxyToResponder; +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParamsProxyToResponder;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/MessageReceiver;J)V +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$BatteryMonitorQueryNextStatusResponseParamsProxyToResponder;->call(Ljava/lang/Object;)V +Lorg/chromium/device/mojom/BatteryMonitor_Internal$Stub; +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$Stub;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/device/mojom/BatteryMonitor;)V +HSPLorg/chromium/device/mojom/BatteryMonitor_Internal$Stub;->acceptWithResponder(Lorg/chromium/mojo/bindings/Message;Lorg/chromium/mojo/bindings/MessageReceiver;)Z +Lorg/chromium/device/mojom/BatteryStatus; +HSPLorg/chromium/device/mojom/BatteryStatus;-><init>(I)V +HSPLorg/chromium/device/mojom/BatteryStatus;->encode(Lorg/chromium/mojo/bindings/Encoder;)V +Lorg/chromium/device/mojom/NfcProvider_Internal; +Lorg/chromium/device/mojom/NfcProvider_Internal$1; +HSPLorg/chromium/device/mojom/NfcProvider_Internal$1;-><init>()V +HSPLorg/chromium/device/mojom/NfcProvider_Internal$1;->getName()Ljava/lang/String; +Lorg/chromium/device/mojom/VibrationManager_Internal; +Lorg/chromium/device/mojom/VibrationManager_Internal$1; +HSPLorg/chromium/device/mojom/VibrationManager_Internal$1;-><init>()V +HSPLorg/chromium/device/mojom/VibrationManager_Internal$1;->getName()Ljava/lang/String; +Lorg/chromium/device/nfc/NfcDelegate; +Lorg/chromium/device/nfc/NfcProviderImpl$Factory; +HSPLorg/chromium/device/nfc/NfcProviderImpl$Factory;-><init>(Lorg/chromium/device/nfc/NfcDelegate;)V +Lorg/chromium/device/time_zone_monitor/TimeZoneMonitor; +HSPLorg/chromium/device/time_zone_monitor/TimeZoneMonitor;-><init>(J)V +HSPLorg/chromium/device/time_zone_monitor/TimeZoneMonitor;->getInstance(J)Lorg/chromium/device/time_zone_monitor/TimeZoneMonitor; +Lorg/chromium/device/time_zone_monitor/TimeZoneMonitor$1; +HSPLorg/chromium/device/time_zone_monitor/TimeZoneMonitor$1;-><init>(Lorg/chromium/device/time_zone_monitor/TimeZoneMonitor;)V +Lorg/chromium/device/vibration/VibrationManagerImpl$Factory; +HSPLorg/chromium/device/vibration/VibrationManagerImpl$Factory;-><init>()V +Lorg/chromium/media/AudioDeviceListener; +HSPLorg/chromium/media/AudioDeviceListener;-><init>(Lorg/chromium/media/AudioDeviceSelector$Devices;)V +HSPLorg/chromium/media/AudioDeviceListener;->hasUsbAudio()Z +HSPLorg/chromium/media/AudioDeviceListener;->init(Z)V +Lorg/chromium/media/AudioDeviceListener$1; +HSPLorg/chromium/media/AudioDeviceListener$1;-><init>(Lorg/chromium/media/AudioDeviceListener;I)V +Lorg/chromium/media/AudioDeviceSelector; +HSPLorg/chromium/media/AudioDeviceSelector;-><init>(Landroid/media/AudioManager;)V +HSPLorg/chromium/media/AudioDeviceSelector;->maybeUpdateSelectedDevice()V +Lorg/chromium/media/AudioDeviceSelector$Devices; +HSPLorg/chromium/media/AudioDeviceSelector$Devices;-><init>(Lorg/chromium/media/AudioDeviceSelector;)V +HSPLorg/chromium/media/AudioDeviceSelector$Devices;->setDeviceExistence(IZ)V +Lorg/chromium/media/AudioDeviceSelectorPreS; +HSPLorg/chromium/media/AudioDeviceSelectorPreS;-><init>(Landroid/media/AudioManager;)V +HSPLorg/chromium/media/AudioDeviceSelectorPreS;->init()V +HSPLorg/chromium/media/AudioDeviceSelectorPreS;->setDeviceExistence_Locked(IZ)V +Lorg/chromium/media/AudioDeviceSelectorPreS$1; +HSPLorg/chromium/media/AudioDeviceSelectorPreS$1;-><init>(Lorg/chromium/media/AudioDeviceSelectorPreS;)V +HSPLorg/chromium/media/AudioDeviceSelectorPreS$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V +Lorg/chromium/media/AudioManagerAndroid; +HSPLorg/chromium/media/AudioManagerAndroid;-><init>(J)V +HSPLorg/chromium/media/AudioManagerAndroid;->createAudioManagerAndroid(J)Lorg/chromium/media/AudioManagerAndroid; +HSPLorg/chromium/media/AudioManagerAndroid;->init()V +Lorg/chromium/media/CodecProfileLevelList$UnsupportedCodecProfileException; +Lorg/chromium/media/MediaCodecUtil; +HSPLorg/chromium/media/MediaCodecUtil;->isDecoderSupportedForDevice(Ljava/lang/String;)Z +Lorg/chromium/mojo/bindings/BindingsHelper; +HSPLorg/chromium/mojo/bindings/BindingsHelper;->isArrayNullable(I)Z +Lorg/chromium/mojo/bindings/Callbacks$Callback1; +Lorg/chromium/mojo/bindings/ConnectionErrorHandler; +Lorg/chromium/mojo/bindings/Connector; +HSPLorg/chromium/mojo/bindings/Connector;-><init>(Lorg/chromium/mojo/system/MessagePipeHandle;Lorg/chromium/mojo/system/impl/WatcherImpl;)V +HSPLorg/chromium/mojo/bindings/Connector;->accept(Lorg/chromium/mojo/bindings/Message;)Z +HSPLorg/chromium/mojo/bindings/Connector;->close()V +HSPLorg/chromium/mojo/bindings/Connector;->readAndDispatchMessage(Lorg/chromium/mojo/system/MessagePipeHandle;Lorg/chromium/mojo/bindings/MessageReceiver;)Lorg/chromium/mojo/system/ResultAnd; +Lorg/chromium/mojo/bindings/Connector$WatcherCallback; +HSPLorg/chromium/mojo/bindings/Connector$WatcherCallback;-><init>(Lorg/chromium/mojo/bindings/Connector;)V +HSPLorg/chromium/mojo/bindings/Connector$WatcherCallback;->onResult(I)V +Lorg/chromium/mojo/bindings/DataHeader; +HSPLorg/chromium/mojo/bindings/DataHeader;-><init>(II)V +Lorg/chromium/mojo/bindings/Decoder; +HSPLorg/chromium/mojo/bindings/Decoder;-><init>(Lorg/chromium/mojo/bindings/Message;)V +HSPLorg/chromium/mojo/bindings/Decoder;-><init>(Lorg/chromium/mojo/bindings/Message;Lorg/chromium/mojo/bindings/Decoder$Validator;I)V +HSPLorg/chromium/mojo/bindings/Decoder;->decreaseStackDepth()V +HSPLorg/chromium/mojo/bindings/Decoder;->increaseStackDepth()V +HSPLorg/chromium/mojo/bindings/Decoder;->readAndValidateDataHeader([Lorg/chromium/mojo/bindings/DataHeader;)Lorg/chromium/mojo/bindings/DataHeader; +HSPLorg/chromium/mojo/bindings/Decoder;->readBytes(III)[B +HSPLorg/chromium/mojo/bindings/Decoder;->readDataHeader()Lorg/chromium/mojo/bindings/DataHeader; +HSPLorg/chromium/mojo/bindings/Decoder;->readDataHeaderAtOffset(IZ)Lorg/chromium/mojo/bindings/DataHeader; +HSPLorg/chromium/mojo/bindings/Decoder;->readDataHeaderForArray(IJ)Lorg/chromium/mojo/bindings/DataHeader; +HSPLorg/chromium/mojo/bindings/Decoder;->readInt(I)I +HSPLorg/chromium/mojo/bindings/Decoder;->readLong(I)J +HSPLorg/chromium/mojo/bindings/Decoder;->readPointer(IZ)Lorg/chromium/mojo/bindings/Decoder; +HSPLorg/chromium/mojo/bindings/Decoder;->readString(IZ)Ljava/lang/String; +HSPLorg/chromium/mojo/bindings/Decoder;->readUntypedHandle(IZ)Lorg/chromium/mojo/system/UntypedHandle; +HSPLorg/chromium/mojo/bindings/Decoder;->validateBufferSize(II)V +Lorg/chromium/mojo/bindings/Decoder$Validator; +HSPLorg/chromium/mojo/bindings/Decoder$Validator;-><init>(IJ)V +HSPLorg/chromium/mojo/bindings/Decoder$Validator;->claimMemory(JJ)V +Lorg/chromium/mojo/bindings/DeserializationException; +Lorg/chromium/mojo/bindings/Encoder; +HSPLorg/chromium/mojo/bindings/Encoder;-><init>(Lorg/chromium/mojo/bindings/Encoder$EncoderState;)V +HSPLorg/chromium/mojo/bindings/Encoder;-><init>(Lorg/chromium/mojo/system/Core;I)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(II)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(III[B)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(IIZ)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(IJ)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(Ljava/lang/String;IZ)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(Lorg/chromium/mojo/bindings/DataHeader;)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(Lorg/chromium/mojo/bindings/Struct;IZ)V +HSPLorg/chromium/mojo/bindings/Encoder;->encode(Lorg/chromium/mojo/system/Handle;IZ)V +HSPLorg/chromium/mojo/bindings/Encoder;->encodePointerArray(II)Lorg/chromium/mojo/bindings/Encoder; +HSPLorg/chromium/mojo/bindings/Encoder;->encoderForArray(IIII)Lorg/chromium/mojo/bindings/Encoder; +HSPLorg/chromium/mojo/bindings/Encoder;->getEncoderAtDataOffset(Lorg/chromium/mojo/bindings/DataHeader;)Lorg/chromium/mojo/bindings/Encoder; +HSPLorg/chromium/mojo/bindings/Encoder;->getMessage()Lorg/chromium/mojo/bindings/Message; +Lorg/chromium/mojo/bindings/Encoder$EncoderState; +HSPLorg/chromium/mojo/bindings/Encoder$EncoderState;-><init>(Lorg/chromium/mojo/system/Core;I)V +Lorg/chromium/mojo/bindings/ExecutorFactory; +HSPLorg/chromium/mojo/bindings/ExecutorFactory;->getExecutorForCurrentThread(Lorg/chromium/mojo/system/Core;)Ljava/util/concurrent/Executor; +Lorg/chromium/mojo/bindings/ExecutorFactory$PipedExecutor; +HSPLorg/chromium/mojo/bindings/ExecutorFactory$PipedExecutor;-><init>(Lorg/chromium/mojo/system/Core;)V +HSPLorg/chromium/mojo/bindings/ExecutorFactory$PipedExecutor;->execute(Ljava/lang/Runnable;)V +HSPLorg/chromium/mojo/bindings/ExecutorFactory$PipedExecutor;->onResult(I)V +Lorg/chromium/mojo/bindings/HandleOwner; +Lorg/chromium/mojo/bindings/Interface; +Lorg/chromium/mojo/bindings/Interface$Manager; +HSPLorg/chromium/mojo/bindings/Interface$Manager;-><init>()V +HSPLorg/chromium/mojo/bindings/Interface$Manager;->bind(Lorg/chromium/mojo/bindings/Interface;Lorg/chromium/mojo/system/MessagePipeHandle;)Lorg/chromium/mojo/bindings/RouterImpl; +Lorg/chromium/mojo/bindings/Interface$Stub; +HSPLorg/chromium/mojo/bindings/Interface$Stub;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/Interface;)V +HSPLorg/chromium/mojo/bindings/Interface$Stub;->close()V +Lorg/chromium/mojo/bindings/Message; +HSPLorg/chromium/mojo/bindings/Message;-><init>(Ljava/nio/ByteBuffer;Ljava/util/List;)V +HSPLorg/chromium/mojo/bindings/Message;->asServiceMessage()Lorg/chromium/mojo/bindings/ServiceMessage; +Lorg/chromium/mojo/bindings/MessageHeader; +HSPLorg/chromium/mojo/bindings/MessageHeader;-><init>(IIJ)V +HSPLorg/chromium/mojo/bindings/MessageHeader;-><init>(Lorg/chromium/mojo/bindings/Message;)V +HSPLorg/chromium/mojo/bindings/MessageHeader;->hasFlag(I)Z +HSPLorg/chromium/mojo/bindings/MessageHeader;->validateHeader(I)Z +Lorg/chromium/mojo/bindings/MessageReceiver; +Lorg/chromium/mojo/bindings/MessageReceiverWithResponder; +Lorg/chromium/mojo/bindings/Router; +Lorg/chromium/mojo/bindings/RouterImpl; +HSPLorg/chromium/mojo/bindings/RouterImpl;-><init>(Lorg/chromium/mojo/system/MessagePipeHandle;)V +HSPLorg/chromium/mojo/bindings/RouterImpl;->accept(Lorg/chromium/mojo/bindings/Message;)Z +HSPLorg/chromium/mojo/bindings/RouterImpl;->start()V +Lorg/chromium/mojo/bindings/RouterImpl$HandleIncomingMessageThunk; +HSPLorg/chromium/mojo/bindings/RouterImpl$HandleIncomingMessageThunk;-><init>(Lorg/chromium/mojo/bindings/RouterImpl;)V +HSPLorg/chromium/mojo/bindings/RouterImpl$HandleIncomingMessageThunk;->accept(Lorg/chromium/mojo/bindings/Message;)Z +HSPLorg/chromium/mojo/bindings/RouterImpl$HandleIncomingMessageThunk;->close()V +Lorg/chromium/mojo/bindings/RouterImpl$ResponderThunk; +HSPLorg/chromium/mojo/bindings/RouterImpl$ResponderThunk;-><init>(Lorg/chromium/mojo/bindings/RouterImpl;)V +HSPLorg/chromium/mojo/bindings/RouterImpl$ResponderThunk;->accept(Lorg/chromium/mojo/bindings/Message;)Z +HSPLorg/chromium/mojo/bindings/RouterImpl$ResponderThunk;->finalize()V +Lorg/chromium/mojo/bindings/ServiceMessage; +HSPLorg/chromium/mojo/bindings/ServiceMessage;-><init>(Lorg/chromium/mojo/bindings/Message;Lorg/chromium/mojo/bindings/MessageHeader;)V +HSPLorg/chromium/mojo/bindings/ServiceMessage;->getPayload()Lorg/chromium/mojo/bindings/Message; +Lorg/chromium/mojo/bindings/Struct; +HSPLorg/chromium/mojo/bindings/Struct;-><init>(I)V +HSPLorg/chromium/mojo/bindings/Struct;->serializeWithHeader(Lorg/chromium/mojo/system/Core;Lorg/chromium/mojo/bindings/MessageHeader;)Lorg/chromium/mojo/bindings/ServiceMessage; +Lorg/chromium/mojo/system/Core; +Lorg/chromium/mojo/system/Core$HandleSignals; +HSPLorg/chromium/mojo/system/Core$HandleSignals;-><init>()V +Lorg/chromium/mojo/system/DataPipe$ConsumerHandle; +Lorg/chromium/mojo/system/DataPipe$ProducerHandle; +Lorg/chromium/mojo/system/Flags; +HSPLorg/chromium/mojo/system/Flags;-><init>()V +Lorg/chromium/mojo/system/Handle; +Lorg/chromium/mojo/system/InvalidHandle; +HSPLorg/chromium/mojo/system/InvalidHandle;-><init>()V +Lorg/chromium/mojo/system/MessagePipeHandle; +Lorg/chromium/mojo/system/MessagePipeHandle$CreateFlags; +HSPLorg/chromium/mojo/system/MessagePipeHandle$CreateFlags;-><init>()V +Lorg/chromium/mojo/system/MessagePipeHandle$CreateOptions; +HSPLorg/chromium/mojo/system/MessagePipeHandle$CreateOptions;-><init>()V +Lorg/chromium/mojo/system/MessagePipeHandle$ReadFlags; +HSPLorg/chromium/mojo/system/MessagePipeHandle$ReadFlags;-><init>()V +Lorg/chromium/mojo/system/MessagePipeHandle$ReadMessageResult; +HSPLorg/chromium/mojo/system/MessagePipeHandle$ReadMessageResult;-><init>()V +Lorg/chromium/mojo/system/MessagePipeHandle$WriteFlags; +HSPLorg/chromium/mojo/system/MessagePipeHandle$WriteFlags;-><init>()V +Lorg/chromium/mojo/system/MojoException; +HSPLorg/chromium/mojo/system/MojoException;-><init>(I)V +Lorg/chromium/mojo/system/Pair; +HSPLorg/chromium/mojo/system/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V +Lorg/chromium/mojo/system/ResultAnd; +HSPLorg/chromium/mojo/system/ResultAnd;-><init>(ILjava/lang/Object;)V +Lorg/chromium/mojo/system/SharedBufferHandle; +Lorg/chromium/mojo/system/UntypedHandle; +Lorg/chromium/mojo/system/Watcher$Callback; +Lorg/chromium/mojo/system/impl/CoreImpl; +HSPLorg/chromium/mojo/system/impl/CoreImpl;-><init>()V +HSPLorg/chromium/mojo/system/impl/CoreImpl;->allocateDirectBuffer(I)Ljava/nio/ByteBuffer; +HSPLorg/chromium/mojo/system/impl/CoreImpl;->createMessagePipe(Lorg/chromium/mojo/system/MessagePipeHandle$CreateOptions;)Lorg/chromium/mojo/system/Pair; +HSPLorg/chromium/mojo/system/impl/CoreImpl;->newNativeCreationResult(IJJ)Lorg/chromium/mojo/system/ResultAnd; +HSPLorg/chromium/mojo/system/impl/CoreImpl;->newReadMessageResult(I[B[J)Lorg/chromium/mojo/system/ResultAnd; +Lorg/chromium/mojo/system/impl/CoreImpl$LazyHolder; +Lorg/chromium/mojo/system/impl/CoreImpl$RawHandlePair; +HSPLorg/chromium/mojo/system/impl/CoreImpl$RawHandlePair;-><init>(Ljava/lang/Long;Ljava/lang/Long;)V +Lorg/chromium/mojo/system/impl/HandleBase; +HSPLorg/chromium/mojo/system/impl/HandleBase;-><init>(Lorg/chromium/mojo/system/impl/CoreImpl;J)V +HSPLorg/chromium/mojo/system/impl/HandleBase;-><init>(Lorg/chromium/mojo/system/impl/HandleBase;)V +HSPLorg/chromium/mojo/system/impl/HandleBase;->close()V +HSPLorg/chromium/mojo/system/impl/HandleBase;->finalize()V +HSPLorg/chromium/mojo/system/impl/HandleBase;->getCore()Lorg/chromium/mojo/system/Core; +HSPLorg/chromium/mojo/system/impl/HandleBase;->isValid()Z +HSPLorg/chromium/mojo/system/impl/HandleBase;->releaseNativeHandle()J +HSPLorg/chromium/mojo/system/impl/HandleBase;->toUntypedHandle()Lorg/chromium/mojo/system/UntypedHandle; +Lorg/chromium/mojo/system/impl/MessagePipeHandleImpl; +HSPLorg/chromium/mojo/system/impl/MessagePipeHandleImpl;-><init>(Lorg/chromium/mojo/system/impl/CoreImpl;J)V +HSPLorg/chromium/mojo/system/impl/MessagePipeHandleImpl;-><init>(Lorg/chromium/mojo/system/impl/HandleBase;)V +HSPLorg/chromium/mojo/system/impl/MessagePipeHandleImpl;->readMessage()Lorg/chromium/mojo/system/ResultAnd; +HSPLorg/chromium/mojo/system/impl/MessagePipeHandleImpl;->writeMessage(Ljava/nio/ByteBuffer;Ljava/util/List;)V +Lorg/chromium/mojo/system/impl/UntypedHandleImpl; +HSPLorg/chromium/mojo/system/impl/UntypedHandleImpl;-><init>(Lorg/chromium/mojo/system/impl/CoreImpl;J)V +HSPLorg/chromium/mojo/system/impl/UntypedHandleImpl;-><init>(Lorg/chromium/mojo/system/impl/HandleBase;)V +HSPLorg/chromium/mojo/system/impl/UntypedHandleImpl;->toMessagePipeHandle()Lorg/chromium/mojo/system/MessagePipeHandle; +Lorg/chromium/mojo/system/impl/WatcherImpl; +HSPLorg/chromium/mojo/system/impl/WatcherImpl;-><init>()V +HSPLorg/chromium/mojo/system/impl/WatcherImpl;->onHandleReady(I)V +HSPLorg/chromium/mojo/system/impl/WatcherImpl;->start(Lorg/chromium/mojo/system/Handle;Lorg/chromium/mojo/system/Core$HandleSignals;Lorg/chromium/mojo/system/Watcher$Callback;)V +Lorg/chromium/mojo_base/mojom/ReadOnlyFile; +HSPLorg/chromium/mojo_base/mojom/ReadOnlyFile;-><init>(I)V +HSPLorg/chromium/mojo_base/mojom/ReadOnlyFile;->encode(Lorg/chromium/mojo/bindings/Encoder;)V +Lorg/chromium/net/AndroidCertVerifyResult; +HSPLorg/chromium/net/AndroidCertVerifyResult;-><init>(Ljava/util/List;Z)V +HSPLorg/chromium/net/AndroidCertVerifyResult;->getCertificateChainEncoded()[[B +HSPLorg/chromium/net/AndroidCertVerifyResult;->getStatus()I +HSPLorg/chromium/net/AndroidCertVerifyResult;->isIssuedByKnownRoot()Z +Lorg/chromium/net/AndroidNetworkLibrary; +HSPLorg/chromium/net/AndroidNetworkLibrary;->getCurrentDnsStatus()Lorg/chromium/net/DnsStatus; +HSPLorg/chromium/net/AndroidNetworkLibrary;->getDnsStatus(Landroid/net/Network;)Lorg/chromium/net/DnsStatus; +HSPLorg/chromium/net/AndroidNetworkLibrary;->verifyServerCertificates([[BLjava/lang/String;Ljava/lang/String;)Lorg/chromium/net/AndroidCertVerifyResult; +Lorg/chromium/net/DnsStatus; +HSPLorg/chromium/net/DnsStatus;-><init>(Ljava/util/List;ZLjava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/net/DnsStatus;->getDnsServers()[[B +HSPLorg/chromium/net/DnsStatus;->getPrivateDnsActive()Z +HSPLorg/chromium/net/DnsStatus;->getPrivateDnsServerName()Ljava/lang/String; +HSPLorg/chromium/net/DnsStatus;->getSearchDomains()Ljava/lang/String; +Lorg/chromium/net/NetworkActiveNotifier; +HSPLorg/chromium/net/NetworkActiveNotifier;-><init>(J)V +HSPLorg/chromium/net/NetworkActiveNotifier;->build(J)Lorg/chromium/net/NetworkActiveNotifier; +Lorg/chromium/net/NetworkChangeNotifier; +HSPLorg/chromium/net/NetworkChangeNotifier;-><init>()V +HSPLorg/chromium/net/NetworkChangeNotifier;->addNativeObserver(J)V +HSPLorg/chromium/net/NetworkChangeNotifier;->getCurrentConnectionCost()I +HSPLorg/chromium/net/NetworkChangeNotifier;->getCurrentConnectionSubtype()I +HSPLorg/chromium/net/NetworkChangeNotifier;->getCurrentConnectionType()I +HSPLorg/chromium/net/NetworkChangeNotifier;->getCurrentDefaultNetId()J +HSPLorg/chromium/net/NetworkChangeNotifier;->getCurrentNetworksAndTypes()[J +HSPLorg/chromium/net/NetworkChangeNotifier;->init()Lorg/chromium/net/NetworkChangeNotifier; +HSPLorg/chromium/net/NetworkChangeNotifier;->notifyObserversOfConnectionCostChange(I)V +HSPLorg/chromium/net/NetworkChangeNotifier;->notifyObserversOfConnectionSubtypeChange(I)V +HSPLorg/chromium/net/NetworkChangeNotifier;->notifyObserversOfConnectionTypeChange(IJ)V +HSPLorg/chromium/net/NetworkChangeNotifier;->notifyObserversOfNetworkConnect(IJ)V +HSPLorg/chromium/net/NetworkChangeNotifier;->registerNetworkCallbackFailed()Z +HSPLorg/chromium/net/NetworkChangeNotifier;->removeConnectionTypeObserver(Lorg/chromium/net/NetworkChangeNotifier$ConnectionTypeObserver;)V +HSPLorg/chromium/net/NetworkChangeNotifier;->setAutoDetectConnectivityState(Z)V +Lorg/chromium/net/NetworkChangeNotifier$1; +HSPLorg/chromium/net/NetworkChangeNotifier$1;-><init>(Lorg/chromium/net/NetworkChangeNotifier;)V +HSPLorg/chromium/net/NetworkChangeNotifier$1;->onNetworkConnect(IJ)V +Lorg/chromium/net/NetworkChangeNotifier$ConnectionTypeObserver; +Lorg/chromium/net/NetworkChangeNotifierAutoDetect; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;->-$$Nest$smconvertToConnectionType(II)I +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;-><init>(Lorg/chromium/net/NetworkChangeNotifierAutoDetect$Observer;Lorg/chromium/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;->connectionTypeChangedTo(Lorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;->getAllNetworksFiltered(Lorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;Landroid/net/Network;)[Landroid/net/Network; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;->getCurrentNetworkState()Lorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect;->runOnThread(Ljava/lang/Runnable;)V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getConnectionType(Landroid/net/Network;)I +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getDefaultNetwork()Landroid/net/Network; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getNetworkInfo(Landroid/net/Network;)Landroid/net/NetworkInfo; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$ConnectivityManagerDelegate;->getRawNetworkInfo(Landroid/net/Network;)Landroid/net/NetworkInfo; +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;-><init>(Lorg/chromium/net/NetworkChangeNotifierAutoDetect;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;->onAvailable(Landroid/net/Network;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$DefaultNetworkCallback;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;-><init>(Lorg/chromium/net/NetworkChangeNotifierAutoDetect;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;->ignoreConnectedNetwork(Landroid/net/Network;Landroid/net/NetworkCapabilities;)Z +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;->onAvailable(Landroid/net/Network;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$1; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$1;-><init>(Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;JIZ)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$1;->run()V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$2; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$2;-><init>(Lorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback;JI)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$MyNetworkCallback$2;->run()V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkConnectivityIntentFilter;-><init>()V +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState;-><init>(ZIIZLjava/lang/String;ZLjava/lang/String;)V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionSubtype()I +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$NetworkState;->getConnectionType()I +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$Observer; +Lorg/chromium/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy; +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;-><init>()V +HSPLorg/chromium/net/NetworkChangeNotifierAutoDetect$RegistrationPolicy;->register$1()V +Lorg/chromium/net/NetworkTrafficAnnotationTag; +HSPLorg/chromium/net/NetworkTrafficAnnotationTag;-><init>(Ljava/lang/String;)V +Lorg/chromium/net/ProxyBroadcastReceiver; +HSPLorg/chromium/net/ProxyBroadcastReceiver;-><init>(Lorg/chromium/net/ProxyChangeListener;)V +Lorg/chromium/net/ProxyChangeListener; +HSPLorg/chromium/net/ProxyChangeListener;-><init>()V +HSPLorg/chromium/net/ProxyChangeListener;->create()Lorg/chromium/net/ProxyChangeListener; +HSPLorg/chromium/net/ProxyChangeListener;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/net/ProxyChangeListener;->registerBroadcastReceiver()V +HSPLorg/chromium/net/ProxyChangeListener;->start(J)V +Lorg/chromium/net/ProxyChangeListener$ProxyReceiver; +HSPLorg/chromium/net/ProxyChangeListener$ProxyReceiver;-><init>(Lorg/chromium/net/ProxyChangeListener;)V +Lorg/chromium/net/RegistrationPolicyAlwaysRegister; +HSPLorg/chromium/net/RegistrationPolicyAlwaysRegister;-><init>()V +HSPLorg/chromium/net/RegistrationPolicyAlwaysRegister;->init(Lorg/chromium/net/NetworkChangeNotifierAutoDetect;)V +Lorg/chromium/net/RegistrationPolicyApplicationStatus; +HSPLorg/chromium/net/RegistrationPolicyApplicationStatus;-><init>()V +HSPLorg/chromium/net/RegistrationPolicyApplicationStatus;->init(Lorg/chromium/net/NetworkChangeNotifierAutoDetect;)V +HSPLorg/chromium/net/RegistrationPolicyApplicationStatus;->onApplicationStateChange(I)V +Lorg/chromium/net/X509Util; +HSPLorg/chromium/net/X509Util;->createCertificateFromBytes([B)Ljava/security/cert/X509Certificate; +HSPLorg/chromium/net/X509Util;->createTrustManager(Ljava/security/KeyStore;)Landroid/net/http/X509TrustManagerExtensions; +HSPLorg/chromium/net/X509Util;->ensureInitializedLocked()V +HSPLorg/chromium/net/X509Util;->isKnownRoot(Ljava/security/cert/X509Certificate;)Z +HSPLorg/chromium/net/X509Util;->verifyKeyUsage(Ljava/security/cert/X509Certificate;)Z +HSPLorg/chromium/net/X509Util;->verifyServerCertificates([[BLjava/lang/String;Ljava/lang/String;)Lorg/chromium/net/AndroidCertVerifyResult; +Lorg/chromium/net/X509Util$TrustStorageListener; +HSPLorg/chromium/net/X509Util$TrustStorageListener;-><init>()V +Lorg/chromium/service_manager/mojom/InterfaceProvider; +Lorg/chromium/service_manager/mojom/InterfaceProvider_Internal$InterfaceProviderGetInterfaceParams; +HSPLorg/chromium/service_manager/mojom/InterfaceProvider_Internal$InterfaceProviderGetInterfaceParams;-><init>(I)V +HSPLorg/chromium/service_manager/mojom/InterfaceProvider_Internal$InterfaceProviderGetInterfaceParams;->deserialize(Lorg/chromium/mojo/bindings/Message;)Lorg/chromium/service_manager/mojom/InterfaceProvider_Internal$InterfaceProviderGetInterfaceParams; +Lorg/chromium/service_manager/mojom/InterfaceProvider_Internal$Stub; +HSPLorg/chromium/service_manager/mojom/InterfaceProvider_Internal$Stub;-><init>(Lorg/chromium/mojo/system/Core;Lorg/chromium/service_manager/mojom/InterfaceProvider;)V +HSPLorg/chromium/service_manager/mojom/InterfaceProvider_Internal$Stub;->accept(Lorg/chromium/mojo/bindings/Message;)Z +Lorg/chromium/services/device/InterfaceRegistrar; +HSPLorg/chromium/services/device/InterfaceRegistrar;->createInterfaceRegistryForContext(JLorg/chromium/device/nfc/NfcDelegate;)V +Lorg/chromium/services/media_session/MediaImage; +Lorg/chromium/services/media_session/MediaMetadata; +HSPLorg/chromium/services/media_session/MediaMetadata;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +HSPLorg/chromium/services/media_session/MediaMetadata;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/chromium/services/media_session/MediaMetadata; +Lorg/chromium/services/service_manager/InterfaceFactory; +Lorg/chromium/services/service_manager/InterfaceRegistry; +HSPLorg/chromium/services/service_manager/InterfaceRegistry;-><init>()V +HSPLorg/chromium/services/service_manager/InterfaceRegistry;->addInterface(Lorg/chromium/mojo/bindings/Interface$Manager;Lorg/chromium/services/service_manager/InterfaceFactory;)V +HSPLorg/chromium/services/service_manager/InterfaceRegistry;->create(Lorg/chromium/mojo/system/impl/MessagePipeHandleImpl;)Lorg/chromium/services/service_manager/InterfaceRegistry; +HSPLorg/chromium/services/service_manager/InterfaceRegistry;->getInterface(Ljava/lang/String;Lorg/chromium/mojo/system/MessagePipeHandle;)V +Lorg/chromium/services/service_manager/InterfaceRegistry$InterfaceBinder; +HSPLorg/chromium/services/service_manager/InterfaceRegistry$InterfaceBinder;-><init>(Lorg/chromium/mojo/bindings/Interface$Manager;Lorg/chromium/services/service_manager/InterfaceFactory;)V +Lorg/chromium/third_party/android/swiperefresh/CircleImageView; +HSPLorg/chromium/third_party/android/swiperefresh/CircleImageView;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/third_party/android/swiperefresh/CircleImageView;->setBackgroundColor(I)V +Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable; +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;-><init>(Landroid/content/Context;Landroid/view/View;)V +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;->getIntrinsicHeight()I +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;->getIntrinsicWidth()I +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;->getOpacity()I +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;->setAlpha(I)V +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;->stop()V +Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$1; +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$1;-><init>(Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring;)V +Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$2; +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$2;-><init>(Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring;)V +Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$3; +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$3;-><init>(Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable;)V +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$3;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring; +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring;-><init>(Lorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$3;)V +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring;->invalidateSelf()V +HSPLorg/chromium/third_party/android/swiperefresh/MaterialProgressDrawable$Ring;->setColorIndex(I)V +Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout; +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;-><init>(Landroid/content/Context;)V +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;->bringChildToFront(Landroid/view/View;)V +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;->reset()V +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;->setRefreshing(ZZ)V +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;->setTargetOffsetTopAndBottom(I)V +Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout$1; +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout$1;-><init>(Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;I)V +Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout$2; +HSPLorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout$2;-><init>(Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout;I)V +Lorg/chromium/third_party/android/swiperefresh/SwipeRefreshLayout$OnRefreshListener; +Lorg/chromium/ui/AsyncViewProvider; +HSPLorg/chromium/ui/AsyncViewProvider;-><init>(Lorg/chromium/ui/AsyncViewStub;I)V +HSPLorg/chromium/ui/AsyncViewProvider;->whenLoaded(Lorg/chromium/base/Callback;)V +Lorg/chromium/ui/AsyncViewProvider$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/AsyncViewProvider$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/AsyncViewProvider;Lorg/chromium/base/Callback;)V +Lorg/chromium/ui/AsyncViewStub; +HSPLorg/chromium/ui/AsyncViewStub;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/ui/KeyboardVisibilityDelegate; +HSPLorg/chromium/ui/KeyboardVisibilityDelegate;-><init>()V +HSPLorg/chromium/ui/KeyboardVisibilityDelegate;->addKeyboardVisibilityListener(Lorg/chromium/ui/KeyboardVisibilityDelegate$KeyboardVisibilityListener;)V +HSPLorg/chromium/ui/KeyboardVisibilityDelegate;->calculateKeyboardHeight(Landroid/view/View;)I +HSPLorg/chromium/ui/KeyboardVisibilityDelegate;->removeKeyboardVisibilityListener(Lorg/chromium/ui/KeyboardVisibilityDelegate$KeyboardVisibilityListener;)V +Lorg/chromium/ui/KeyboardVisibilityDelegate$KeyboardVisibilityListener; +Lorg/chromium/ui/OverscrollRefreshHandler; +Lorg/chromium/ui/UiUtils; +HSPLorg/chromium/ui/UiUtils;->getDirectoryForImageCapture(Landroid/content/Context;)Ljava/io/File; +HSPLorg/chromium/ui/UiUtils;->getTintedDrawable(Landroid/content/Context;ILandroid/content/res/ColorStateList;)Landroid/graphics/drawable/Drawable; +HSPLorg/chromium/ui/UiUtils;->insertView(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/View;Z)I +HSPLorg/chromium/ui/UiUtils;->isSystemUiThemingDisabled()Z +HSPLorg/chromium/ui/UiUtils;->removeViewFromParent(Landroid/view/View;)V +HSPLorg/chromium/ui/UiUtils;->setNavigationBarIconColor(Landroid/view/View;Z)V +Lorg/chromium/ui/ViewProvider; +Lorg/chromium/ui/accessibility/AccessibilityState; +HSPLorg/chromium/ui/accessibility/AccessibilityState;->getAccessibilityServiceCapabilitiesMask()I +HSPLorg/chromium/ui/accessibility/AccessibilityState;->getAccessibilityServiceEventTypeMask()I +HSPLorg/chromium/ui/accessibility/AccessibilityState;->getAccessibilityServiceFeedbackTypeMask()I +HSPLorg/chromium/ui/accessibility/AccessibilityState;->getAccessibilityServiceFlagsMask()I +HSPLorg/chromium/ui/accessibility/AccessibilityState;->getAccessibilityServiceIds()[Ljava/lang/String; +HSPLorg/chromium/ui/accessibility/AccessibilityState;->isScreenReaderEnabled()Z +HSPLorg/chromium/ui/accessibility/AccessibilityState;->registerObservers()V +HSPLorg/chromium/ui/accessibility/AccessibilityState;->updateAccessibilityServices()V +Lorg/chromium/ui/accessibility/AccessibilityState$$ExternalSyntheticLambda1; +HSPLorg/chromium/ui/accessibility/AccessibilityState$$ExternalSyntheticLambda1;-><init>(I)V +Lorg/chromium/ui/accessibility/AccessibilityState$Listener; +Lorg/chromium/ui/accessibility/AccessibilityState$ServicesObserver; +HSPLorg/chromium/ui/accessibility/AccessibilityState$ServicesObserver;-><init>(Landroid/os/Handler;Lorg/chromium/ui/accessibility/AccessibilityState$$ExternalSyntheticLambda1;)V +Lorg/chromium/ui/accessibility/AccessibilityState$State; +HSPLorg/chromium/ui/accessibility/AccessibilityState$State;-><init>(ZZZZZ)V +Lorg/chromium/ui/base/ActivityIntentRequestTrackerDelegate; +HSPLorg/chromium/ui/base/ActivityIntentRequestTrackerDelegate;-><init>(Landroid/app/Activity;)V +Lorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate; +HSPLorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate;-><init>(Ljava/lang/ref/WeakReference;)V +HSPLorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate;->onLayoutChange(Landroid/view/View;IIIIIIII)V +HSPLorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate;->registerKeyboardVisibilityCallbacks()V +HSPLorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate;->unregisterKeyboardVisibilityCallbacks()V +Lorg/chromium/ui/base/ActivityWindowAndroid; +HSPLorg/chromium/ui/base/ActivityWindowAndroid;-><init>(Landroid/content/Context;Lorg/chromium/chrome/browser/init/SingleWindowKeyboardVisibilityDelegate;Lorg/chromium/ui/base/IntentRequestTrackerImpl;)V +HSPLorg/chromium/ui/base/ActivityWindowAndroid;-><init>(Landroid/content/Context;ZLorg/chromium/ui/permissions/ActivityAndroidPermissionDelegate;Lorg/chromium/ui/base/ActivityKeyboardVisibilityDelegate;Lorg/chromium/ui/base/IntentRequestTrackerImpl;)V +HSPLorg/chromium/ui/base/ActivityWindowAndroid;->getActivity()Lorg/chromium/ui/base/ImmutableWeakReference; +HSPLorg/chromium/ui/base/ActivityWindowAndroid;->getActivityState()I +HSPLorg/chromium/ui/base/ActivityWindowAndroid;->onActivityStateChange(Landroid/app/Activity;I)V +HSPLorg/chromium/ui/base/ActivityWindowAndroid;->onWindowFocusChanged(Landroid/app/Activity;Z)V +Lorg/chromium/ui/base/ApplicationViewportInsetSupplier; +HSPLorg/chromium/ui/base/ApplicationViewportInsetSupplier;-><init>()V +HSPLorg/chromium/ui/base/ApplicationViewportInsetSupplier;->computeInset()V +Lorg/chromium/ui/base/ApplicationViewportInsetSupplier$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/base/ApplicationViewportInsetSupplier$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/base/ApplicationViewportInsetSupplier;)V +Lorg/chromium/ui/base/Clipboard; +HSPLorg/chromium/ui/base/Clipboard;-><init>()V +HSPLorg/chromium/ui/base/Clipboard;->getInstance()Lorg/chromium/ui/base/Clipboard; +HSPLorg/chromium/ui/base/Clipboard;->setNativePtr(J)V +Lorg/chromium/ui/base/ClipboardImpl; +HSPLorg/chromium/ui/base/ClipboardImpl;-><init>(Landroid/content/ClipboardManager;)V +HSPLorg/chromium/ui/base/ClipboardImpl;->getImageUriIfSharedByThisApp()Landroid/net/Uri; +HSPLorg/chromium/ui/base/ClipboardImpl;->onWindowFocusChanged(Z)V +HSPLorg/chromium/ui/base/ClipboardImpl;->setImageFileProvider(Lorg/chromium/components/browser_ui/share/ClipboardImageFileProvider;)V +Lorg/chromium/ui/base/DeviceFormFactor; +HSPLorg/chromium/ui/base/DeviceFormFactor;->isNonMultiDisplayContextOnTablet(Landroid/content/Context;)Z +HSPLorg/chromium/ui/base/DeviceFormFactor;->isTablet()Z +HSPLorg/chromium/ui/base/DeviceFormFactor;->isWindowOnTablet(Lorg/chromium/ui/base/WindowAndroid;)Z +Lorg/chromium/ui/base/EventOffsetHandler; +HSPLorg/chromium/ui/base/EventOffsetHandler;-><init>(Lorg/chromium/chrome/browser/compositor/CompositorViewHolder$1;)V +Lorg/chromium/ui/base/ImmutableWeakReference; +HSPLorg/chromium/ui/base/ImmutableWeakReference;-><init>(Ljava/lang/Object;)V +Lorg/chromium/ui/base/IntentRequestTracker$Delegate; +Lorg/chromium/ui/base/IntentRequestTrackerImpl; +HSPLorg/chromium/ui/base/IntentRequestTrackerImpl;-><init>(Lorg/chromium/ui/base/ActivityIntentRequestTrackerDelegate;)V +Lorg/chromium/ui/base/LocalizationUtils; +HSPLorg/chromium/ui/base/LocalizationUtils;->isLayoutRtl()Z +Lorg/chromium/ui/base/PhotoPickerListener; +Lorg/chromium/ui/base/ResourceBundle; +HSPLorg/chromium/ui/base/ResourceBundle;->getLocalePakResourcePath(Ljava/lang/String;ZZ)Ljava/lang/String; +Lorg/chromium/ui/base/SelectFileDialog; +Lorg/chromium/ui/base/SelectFileDialog$$ExternalSyntheticLambda5; +HSPLorg/chromium/ui/base/SelectFileDialog$$ExternalSyntheticLambda5;-><init>()V +HSPLorg/chromium/ui/base/SelectFileDialog$$ExternalSyntheticLambda5;->run()V +Lorg/chromium/ui/base/TouchDevice; +HSPLorg/chromium/ui/base/TouchDevice;->availablePointerAndHoverTypes()[I +HSPLorg/chromium/ui/base/TouchDevice;->hasSource(II)Z +HSPLorg/chromium/ui/base/TouchDevice;->maxTouchPoints()I +Lorg/chromium/ui/base/ViewAndroidDelegate; +HSPLorg/chromium/ui/base/ViewAndroidDelegate;-><init>(Landroid/view/ViewGroup;)V +HSPLorg/chromium/ui/base/ViewAndroidDelegate;->getContainerView()Landroid/view/View; +HSPLorg/chromium/ui/base/ViewAndroidDelegate;->getDisplayFeature()[I +HSPLorg/chromium/ui/base/ViewAndroidDelegate;->hasFocus()Z +Lorg/chromium/ui/base/ViewAndroidDelegate$VerticalScrollDirectionChangeListener; +Lorg/chromium/ui/base/ViewUtils; +HSPLorg/chromium/ui/base/ViewUtils;->dpToPx(Landroid/content/Context;F)I +HSPLorg/chromium/ui/base/ViewUtils;->getRelativeDrawPosition(Landroid/view/View;Landroid/view/View;[I)V +HSPLorg/chromium/ui/base/ViewUtils;->getRelativeLayoutPosition(Landroid/view/View;Landroid/view/View;[I)V +HSPLorg/chromium/ui/base/ViewUtils;->translateCanvasToView(Landroid/view/View;Landroid/view/View;Landroid/graphics/Canvas;)V +Lorg/chromium/ui/base/WindowAndroid; +HSPLorg/chromium/ui/base/WindowAndroid;-><init>(Landroid/content/Context;Lorg/chromium/ui/base/IntentRequestTrackerImpl;)V +HSPLorg/chromium/ui/base/WindowAndroid;-><init>(Landroid/content/Context;Lorg/chromium/ui/display/DisplayAndroid;)V +HSPLorg/chromium/ui/base/WindowAndroid;->clearNativePointer()V +HSPLorg/chromium/ui/base/WindowAndroid;->destroy()V +HSPLorg/chromium/ui/base/WindowAndroid;->doSetPreferredRefreshRate(F)V +HSPLorg/chromium/ui/base/WindowAndroid;->getNativePointer()J +HSPLorg/chromium/ui/base/WindowAndroid;->getOverlayTransform()I +HSPLorg/chromium/ui/base/WindowAndroid;->getRefreshRate()F +HSPLorg/chromium/ui/base/WindowAndroid;->getSupportedRefreshRates()[F +HSPLorg/chromium/ui/base/WindowAndroid;->getWindow()Landroid/view/Window; +HSPLorg/chromium/ui/base/WindowAndroid;->hasPermission(Ljava/lang/String;)Z +HSPLorg/chromium/ui/base/WindowAndroid;->recomputeSupportedRefreshRates()V +HSPLorg/chromium/ui/base/WindowAndroid;->refreshWillNotDraw()V +HSPLorg/chromium/ui/base/WindowAndroid;->setPreferredRefreshRate(F)V +Lorg/chromium/ui/base/WindowAndroid$ActivityStateObserver; +Lorg/chromium/ui/base/WindowAndroid$IntentCallback; +Lorg/chromium/ui/base/WindowAndroid$SelectionHandlesObserver; +Lorg/chromium/ui/base/WindowAndroid$TouchExplorationMonitor; +HSPLorg/chromium/ui/base/WindowAndroid$TouchExplorationMonitor;-><init>(Lorg/chromium/ui/base/ActivityWindowAndroid;)V +Lorg/chromium/ui/base/WindowAndroid$TouchExplorationMonitor$1; +HSPLorg/chromium/ui/base/WindowAndroid$TouchExplorationMonitor$1;-><init>(Lorg/chromium/ui/base/WindowAndroid$TouchExplorationMonitor;)V +Lorg/chromium/ui/base/WindowDelegate; +HSPLorg/chromium/ui/base/WindowDelegate;-><init>(Landroid/view/Window;)V +Lorg/chromium/ui/display/DisplayAndroid; +HSPLorg/chromium/ui/display/DisplayAndroid;-><init>(I)V +HSPLorg/chromium/ui/display/DisplayAndroid;->getNonMultiDisplay(Landroid/content/Context;)Lorg/chromium/ui/display/DisplayAndroid; +HSPLorg/chromium/ui/display/DisplayAndroid;->getObservers()[Lorg/chromium/ui/display/DisplayAndroid$DisplayAndroidObserver; +HSPLorg/chromium/ui/display/DisplayAndroid;->update(Landroid/graphics/Point;Ljava/lang/Float;Ljava/lang/Float;Ljava/lang/Float;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;Ljava/lang/Boolean;Ljava/lang/Float;Landroid/view/Display$Mode;Ljava/util/List;)V +Lorg/chromium/ui/display/DisplayAndroid$DisplayAndroidObserver; +HSPLorg/chromium/ui/display/DisplayAndroid$DisplayAndroidObserver;->onDIPScaleChanged(F)V +Lorg/chromium/ui/display/DisplayAndroidManager; +HSPLorg/chromium/ui/display/DisplayAndroidManager;-><init>()V +HSPLorg/chromium/ui/display/DisplayAndroidManager;->addDisplay(Landroid/view/Display;)Lorg/chromium/ui/display/PhysicalDisplayAndroid; +HSPLorg/chromium/ui/display/DisplayAndroidManager;->getDefaultDisplayForContext(Landroid/content/Context;)Landroid/view/Display; +HSPLorg/chromium/ui/display/DisplayAndroidManager;->getInstance()Lorg/chromium/ui/display/DisplayAndroidManager; +HSPLorg/chromium/ui/display/DisplayAndroidManager;->onNativeSideCreated(J)V +HSPLorg/chromium/ui/display/DisplayAndroidManager;->updateDisplayOnNativeSide(Lorg/chromium/ui/display/DisplayAndroid;)V +Lorg/chromium/ui/display/DisplayAndroidManager$DisplayListenerBackend; +HSPLorg/chromium/ui/display/DisplayAndroidManager$DisplayListenerBackend;-><init>(Lorg/chromium/ui/display/DisplayAndroidManager;)V +Lorg/chromium/ui/display/PhysicalDisplayAndroid; +HSPLorg/chromium/ui/display/PhysicalDisplayAndroid;-><init>(Landroid/view/Display;)V +HSPLorg/chromium/ui/display/PhysicalDisplayAndroid;->updateCommon(Landroid/graphics/Point;FFFLandroid/view/Display;)V +HSPLorg/chromium/ui/display/PhysicalDisplayAndroid;->updateFromDisplay(Landroid/view/Display;)V +Lorg/chromium/ui/dragdrop/DragAndDropBrowserDelegate; +Lorg/chromium/ui/dragdrop/DragAndDropDelegate; +HSPLorg/chromium/ui/dragdrop/DragAndDropDelegate;->isDragAndDropSupportedForOs()Z +Lorg/chromium/ui/dragdrop/DragAndDropDelegateImpl; +HSPLorg/chromium/ui/dragdrop/DragAndDropDelegateImpl;-><init>()V +Lorg/chromium/ui/dragdrop/DragStateTracker; +Lorg/chromium/ui/dragdrop/DropDataContentProvider; +HSPLorg/chromium/ui/dragdrop/DropDataContentProvider;-><init>()V +HSPLorg/chromium/ui/dragdrop/DropDataContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLorg/chromium/ui/dragdrop/DropDataContentProvider;->onCreate()Z +Lorg/chromium/ui/dragdrop/DropDataProviderImpl; +HSPLorg/chromium/ui/dragdrop/DropDataProviderImpl;-><init>()V +Lorg/chromium/ui/dragdrop/DropDataProviderImpl$DropPipeDataWriter; +HSPLorg/chromium/ui/dragdrop/DropDataProviderImpl$DropPipeDataWriter;-><init>()V +Lorg/chromium/ui/events/devices/InputDeviceObserver; +HSPLorg/chromium/ui/events/devices/InputDeviceObserver;-><init>()V +HSPLorg/chromium/ui/events/devices/InputDeviceObserver;->addObserver()V +HSPLorg/chromium/ui/events/devices/InputDeviceObserver;->removeObserver()V +Lorg/chromium/ui/gfx/Animation; +HSPLorg/chromium/ui/gfx/Animation;->prefersReducedMotion()Z +Lorg/chromium/ui/gfx/BitmapHelper; +HSPLorg/chromium/ui/gfx/BitmapHelper;->getByteCount(Landroid/graphics/Bitmap;)I +Lorg/chromium/ui/gfx/ViewConfigurationHelper; +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;-><init>()V +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->createWithListener()Lorg/chromium/ui/gfx/ViewConfigurationHelper; +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getDoubleTapSlop()F +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getDoubleTapTimeout()I +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getLongPressTimeout()I +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getMaximumFlingVelocity()F +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getMinScalingSpan()F +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getMinimumFlingVelocity()F +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getTapTimeout()I +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper;->getTouchSlop()F +Lorg/chromium/ui/gfx/ViewConfigurationHelper$1; +HSPLorg/chromium/ui/gfx/ViewConfigurationHelper$1;-><init>(Lorg/chromium/ui/gfx/ViewConfigurationHelper;)V +Lorg/chromium/ui/interpolators/BakedBezierInterpolator; +HSPLorg/chromium/ui/interpolators/BakedBezierInterpolator;-><init>([F)V +HSPLorg/chromium/ui/interpolators/BakedBezierInterpolator;->getInterpolation(F)F +Lorg/chromium/ui/modaldialog/ModalDialogManager; +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;-><init>(Lorg/chromium/components/browser_ui/modaldialog/AppModalPresenter;)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->destroy()V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->dismissDialogsOfType(I)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->dismissPendingDialogsOfType(II)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->isShowing()Z +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->resumeType(II)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->resumeTypeInternal(I)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->showNextDialog()V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager;->suspendType(I)I +Lorg/chromium/ui/modaldialog/ModalDialogManager$$ExternalSyntheticLambda1; +HSPLorg/chromium/ui/modaldialog/ModalDialogManager$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/ui/modaldialog/ModalDialogManager;I)V +HSPLorg/chromium/ui/modaldialog/ModalDialogManager$$ExternalSyntheticLambda1;->run()V +Lorg/chromium/ui/modaldialog/ModalDialogManager$ModalDialogManagerObserver; +Lorg/chromium/ui/modaldialog/ModalDialogManager$Presenter; +HSPLorg/chromium/ui/modaldialog/ModalDialogManager$Presenter;-><init>()V +Lorg/chromium/ui/modaldialog/ModalDialogManagerHolder; +Lorg/chromium/ui/modaldialog/ModalDialogProperties$Controller; +Lorg/chromium/ui/modaldialog/PendingDialogContainer; +HSPLorg/chromium/ui/modaldialog/PendingDialogContainer;-><init>()V +Lorg/chromium/ui/modelutil/LazyConstructionPropertyMcp; +HSPLorg/chromium/ui/modelutil/LazyConstructionPropertyMcp;-><init>(Lorg/chromium/ui/modelutil/PropertyModel;Ljava/lang/Object;Lorg/chromium/ui/modelutil/LazyConstructionPropertyMcp$$ExternalSyntheticLambda0;Lorg/chromium/ui/ViewProvider;Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder;)V +HSPLorg/chromium/ui/modelutil/LazyConstructionPropertyMcp;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/ui/modelutil/LazyConstructionPropertyMcp$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/modelutil/LazyConstructionPropertyMcp$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/modelutil/PropertyModel$WritableBooleanPropertyKey;)V +Lorg/chromium/ui/modelutil/LazyConstructionPropertyMcp$$ExternalSyntheticLambda1; +HSPLorg/chromium/ui/modelutil/LazyConstructionPropertyMcp$$ExternalSyntheticLambda1;-><init>(Lorg/chromium/ui/modelutil/LazyConstructionPropertyMcp;)V +Lorg/chromium/ui/modelutil/ListModel; +HSPLorg/chromium/ui/modelutil/ListModel;-><init>()V +Lorg/chromium/ui/modelutil/ListModelBase; +HSPLorg/chromium/ui/modelutil/ListModelBase;-><init>()V +HSPLorg/chromium/ui/modelutil/ListModelBase;->set(Ljava/util/List;)V +HSPLorg/chromium/ui/modelutil/ListModelBase;->size()I +Lorg/chromium/ui/modelutil/ListObservable; +Lorg/chromium/ui/modelutil/ListObservable$ListObserver; +Lorg/chromium/ui/modelutil/ListObservableImpl; +HSPLorg/chromium/ui/modelutil/ListObservableImpl;-><init>()V +HSPLorg/chromium/ui/modelutil/ListObservableImpl;->addObserver(Lorg/chromium/ui/modelutil/ListObservable$ListObserver;)V +Lorg/chromium/ui/modelutil/MVCListAdapter$ModelList; +HSPLorg/chromium/ui/modelutil/MVCListAdapter$ModelList;-><init>()V +Lorg/chromium/ui/modelutil/MVCListAdapter$ViewBuilder; +Lorg/chromium/ui/modelutil/ModelListPropertyChangeFilter; +HSPLorg/chromium/ui/modelutil/ModelListPropertyChangeFilter;-><init>(Lorg/chromium/chrome/browser/tasks/tab_management/TabStripSnapshotter$$ExternalSyntheticLambda0;Lorg/chromium/chrome/browser/tasks/tab_management/TabListModel;Ljava/util/HashSet;)V +HSPLorg/chromium/ui/modelutil/ModelListPropertyChangeFilter;->onItemRangeInserted(Lorg/chromium/ui/modelutil/ListObservable;II)V +HSPLorg/chromium/ui/modelutil/ModelListPropertyChangeFilter;->prunePropertyModels(Ljava/util/Set;)V +Lorg/chromium/ui/modelutil/PropertyModel; +HSPLorg/chromium/ui/modelutil/PropertyModel;-><init>(Ljava/util/List;)V +HSPLorg/chromium/ui/modelutil/PropertyModel;-><init>(Ljava/util/Map;)V +HSPLorg/chromium/ui/modelutil/PropertyModel;-><init>([Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)V +HSPLorg/chromium/ui/modelutil/PropertyModel;->buildData([Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)Ljava/util/HashMap; +HSPLorg/chromium/ui/modelutil/PropertyModel;->concatKeys([Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;[Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)[Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel;->get(Lorg/chromium/ui/modelutil/PropertyModel$ReadableIntPropertyKey;)I +HSPLorg/chromium/ui/modelutil/PropertyModel;->get(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;)F +HSPLorg/chromium/ui/modelutil/PropertyModel;->get(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;)Ljava/lang/Object; +HSPLorg/chromium/ui/modelutil/PropertyModel;->get(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;)Z +HSPLorg/chromium/ui/modelutil/PropertyModel;->getAllSetProperties()Ljava/util/ArrayList; +HSPLorg/chromium/ui/modelutil/PropertyModel;->set(Lorg/chromium/ui/modelutil/PropertyModel$WritableBooleanPropertyKey;Z)V +HSPLorg/chromium/ui/modelutil/PropertyModel;->set(Lorg/chromium/ui/modelutil/PropertyModel$WritableIntPropertyKey;I)V +HSPLorg/chromium/ui/modelutil/PropertyModel;->set(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;F)V +HSPLorg/chromium/ui/modelutil/PropertyModel;->set(Lorg/chromium/ui/modelutil/PropertyModel$WritableObjectPropertyKey;Ljava/lang/Object;)V +Lorg/chromium/ui/modelutil/PropertyModel$BooleanContainer; +HSPLorg/chromium/ui/modelutil/PropertyModel$BooleanContainer;-><init>()V +Lorg/chromium/ui/modelutil/PropertyModel$Builder; +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;-><init>([Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;)V +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;->build()Lorg/chromium/ui/modelutil/PropertyModel; +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;->with(Lorg/chromium/ui/modelutil/PropertyModel$ReadableIntPropertyKey;I)V +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;->with(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;F)V +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;->with(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;Ljava/lang/Object;)V +HSPLorg/chromium/ui/modelutil/PropertyModel$Builder;->with(Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;Z)V +Lorg/chromium/ui/modelutil/PropertyModel$FloatContainer; +HSPLorg/chromium/ui/modelutil/PropertyModel$FloatContainer;-><init>()V +Lorg/chromium/ui/modelutil/PropertyModel$IntContainer; +HSPLorg/chromium/ui/modelutil/PropertyModel$IntContainer;-><init>()V +Lorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$NamedPropertyKey;-><init>(Ljava/lang/String;)V +Lorg/chromium/ui/modelutil/PropertyModel$ObjectContainer; +HSPLorg/chromium/ui/modelutil/PropertyModel$ObjectContainer;-><init>()V +Lorg/chromium/ui/modelutil/PropertyModel$ReadableIntPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$ReadableIntPropertyKey;-><init>()V +HSPLorg/chromium/ui/modelutil/PropertyModel$ReadableIntPropertyKey;-><init>(Ljava/lang/String;)V +Lorg/chromium/ui/modelutil/PropertyModel$ValueContainer; +HSPLorg/chromium/ui/modelutil/PropertyModel$ValueContainer;-><init>()V +Lorg/chromium/ui/modelutil/PropertyModel$WritableBooleanPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableBooleanPropertyKey;-><init>()V +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableBooleanPropertyKey;-><init>(Ljava/lang/String;)V +Lorg/chromium/ui/modelutil/PropertyModel$WritableIntPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableIntPropertyKey;-><init>()V +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableIntPropertyKey;-><init>(Ljava/lang/String;)V +Lorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;-><init>(I)V +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;-><init>(II)V +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableLongPropertyKey;-><init>(Ljava/lang/String;)V +Lorg/chromium/ui/modelutil/PropertyModel$WritableObjectPropertyKey; +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableObjectPropertyKey;-><init>()V +HSPLorg/chromium/ui/modelutil/PropertyModel$WritableObjectPropertyKey;-><init>(Ljava/lang/String;Z)V +Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor; +HSPLorg/chromium/ui/modelutil/PropertyModelChangeProcessor;-><init>(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder;Z)V +HSPLorg/chromium/ui/modelutil/PropertyModelChangeProcessor;->create(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder;)Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor; +HSPLorg/chromium/ui/modelutil/PropertyModelChangeProcessor;->destroy()V +Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/modelutil/PropertyModelChangeProcessor$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor;)V +HSPLorg/chromium/ui/modelutil/PropertyModelChangeProcessor$$ExternalSyntheticLambda0;->onPropertyChanged(Lorg/chromium/ui/modelutil/PropertyObservable;Ljava/lang/Object;)V +Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder; +Lorg/chromium/ui/modelutil/PropertyObservable; +HSPLorg/chromium/ui/modelutil/PropertyObservable;-><init>()V +HSPLorg/chromium/ui/modelutil/PropertyObservable;->addObserver(Lorg/chromium/ui/modelutil/PropertyObservable$PropertyObserver;)V +HSPLorg/chromium/ui/modelutil/PropertyObservable;->notifyPropertyChanged(Ljava/lang/Object;)V +HSPLorg/chromium/ui/modelutil/PropertyObservable;->removeObserver(Lorg/chromium/ui/modelutil/PropertyObservable$PropertyObserver;)V +Lorg/chromium/ui/modelutil/PropertyObservable$PropertyObserver; +Lorg/chromium/ui/modelutil/SimpleList; +Lorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter; +HSPLorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter;-><init>(Lorg/chromium/ui/modelutil/MVCListAdapter$ModelList;)V +HSPLorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter;->getItemCount()I +HSPLorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter;->registerType(ILorg/chromium/ui/modelutil/MVCListAdapter$ViewBuilder;Lorg/chromium/ui/modelutil/PropertyModelChangeProcessor$ViewBinder;)V +Lorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter$1; +HSPLorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter$1;-><init>(Lorg/chromium/ui/modelutil/SimpleRecyclerViewAdapter;)V +Lorg/chromium/ui/permissions/ActivityAndroidPermissionDelegate; +HSPLorg/chromium/ui/permissions/ActivityAndroidPermissionDelegate;-><init>(Ljava/lang/ref/WeakReference;)V +HSPLorg/chromium/ui/permissions/ActivityAndroidPermissionDelegate;->hasPermission(Ljava/lang/String;)Z +Lorg/chromium/ui/permissions/AndroidPermissionDelegate; +Lorg/chromium/ui/permissions/PermissionPrefs; +HSPLorg/chromium/ui/permissions/PermissionPrefs;->getPermissionWasDeniedKey(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/chromium/ui/permissions/PermissionPrefs;->normalizePermissionName(Ljava/lang/String;)Ljava/lang/String; +Lorg/chromium/ui/resources/LayoutResource; +HSPLorg/chromium/ui/resources/LayoutResource;-><init>(FLorg/chromium/ui/resources/Resource;)V +Lorg/chromium/ui/resources/Resource; +Lorg/chromium/ui/resources/ResourceFactory; +HSPLorg/chromium/ui/resources/ResourceFactory;->createBitmapResource(Lorg/chromium/ui/resources/statics/NinePatchData;)J +Lorg/chromium/ui/resources/ResourceLoader; +HSPLorg/chromium/ui/resources/ResourceLoader;-><init>(ILorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback;)V +HSPLorg/chromium/ui/resources/ResourceLoader;->notifyLoadFinished(ILorg/chromium/ui/resources/Resource;)V +Lorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback; +Lorg/chromium/ui/resources/ResourceManager; +HSPLorg/chromium/ui/resources/ResourceManager;-><init>(Landroid/content/res/Resources;IJ)V +HSPLorg/chromium/ui/resources/ResourceManager;->create(Lorg/chromium/ui/base/WindowAndroid;J)Lorg/chromium/ui/resources/ResourceManager; +HSPLorg/chromium/ui/resources/ResourceManager;->destroy()V +HSPLorg/chromium/ui/resources/ResourceManager;->getDynamicResourceLoader()Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader; +HSPLorg/chromium/ui/resources/ResourceManager;->getNativePtr()J +HSPLorg/chromium/ui/resources/ResourceManager;->preloadResources(I[I[I)V +HSPLorg/chromium/ui/resources/ResourceManager;->resourceRequested(II)V +Lorg/chromium/ui/resources/async/AsyncPreloadResourceLoader; +HSPLorg/chromium/ui/resources/async/AsyncPreloadResourceLoader;-><init>(ILorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback;Lorg/chromium/ui/resources/async/AsyncPreloadResourceLoader$ResourceCreator;)V +HSPLorg/chromium/ui/resources/async/AsyncPreloadResourceLoader;->loadResource(I)V +Lorg/chromium/ui/resources/async/AsyncPreloadResourceLoader$AsyncLoadTask; +Lorg/chromium/ui/resources/async/AsyncPreloadResourceLoader$ResourceCreator; +Lorg/chromium/ui/resources/dynamics/CaptureObserver; +Lorg/chromium/ui/resources/dynamics/CaptureUtils; +HSPLorg/chromium/ui/resources/dynamics/CaptureUtils;->captureCommon(Landroid/graphics/Canvas;Landroid/view/View;Landroid/graphics/Rect;FZLorg/chromium/ui/resources/dynamics/CaptureObserver;)Z +Lorg/chromium/ui/resources/dynamics/DynamicResource; +Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader;-><init>(ILorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback;)V +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader;->loadResource(I)V +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader;->registerResource(ILorg/chromium/ui/resources/dynamics/DynamicResource;)V +Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader;I)V +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader$DynamicResourceHolder; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceLoader$DynamicResourceHolder;-><init>(Lorg/chromium/ui/resources/dynamics/DynamicResource;Lorg/chromium/ui/resources/dynamics/DynamicResourceLoader$$ExternalSyntheticLambda0;)V +Lorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot;-><init>(Landroid/graphics/Bitmap;ZLandroid/graphics/Rect;J)V +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot;->createNativeResource()J +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot;->getBitmap()Landroid/graphics/Bitmap; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot;->getBitmapSize()Landroid/graphics/Rect; +HSPLorg/chromium/ui/resources/dynamics/DynamicResourceSnapshot;->getNinePatchData()Lorg/chromium/ui/resources/statics/NinePatchData; +Lorg/chromium/ui/resources/dynamics/SoftwareDraw; +HSPLorg/chromium/ui/resources/dynamics/SoftwareDraw;-><init>()V +HSPLorg/chromium/ui/resources/dynamics/SoftwareDraw;->dropCachedBitmap()V +HSPLorg/chromium/ui/resources/dynamics/SoftwareDraw;->onViewSizeChange(Landroid/view/View;F)V +HSPLorg/chromium/ui/resources/dynamics/SoftwareDraw;->shouldRemoveResourceOnNullBitmap()Z +HSPLorg/chromium/ui/resources/dynamics/SoftwareDraw;->startBitmapCapture(Landroid/view/View;Landroid/graphics/Rect;FLorg/chromium/ui/resources/dynamics/CaptureObserver;Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter$$ExternalSyntheticLambda0;)Z +Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter; +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;-><init>(Landroid/view/View;Z)V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->addOnResourceReadyCallback(Lorg/chromium/base/Callback;)V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->invalidate(Landroid/graphics/Rect;)V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->isDirty()Z +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->onLayoutChange(Landroid/view/View;IIIIIIII)V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->onResourceRequested()V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter;->triggerBitmapCapture()V +Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter$$ExternalSyntheticLambda0; +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter$$ExternalSyntheticLambda0;-><init>(Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter;)V +HSPLorg/chromium/ui/resources/dynamics/ViewResourceAdapter$$ExternalSyntheticLambda0;->onResult(Ljava/lang/Object;)V +Lorg/chromium/ui/resources/dynamics/ViewResourceAdapter$CaptureMechanism; +Lorg/chromium/ui/resources/statics/NinePatchData; +HSPLorg/chromium/ui/resources/statics/NinePatchData;-><init>(IILandroid/graphics/Rect;[I[I)V +Lorg/chromium/ui/resources/statics/StaticResource; +HSPLorg/chromium/ui/resources/statics/StaticResource;-><init>(Landroid/graphics/Bitmap;)V +HSPLorg/chromium/ui/resources/statics/StaticResource;->createNativeResource()J +HSPLorg/chromium/ui/resources/statics/StaticResource;->getBitmap()Landroid/graphics/Bitmap; +HSPLorg/chromium/ui/resources/statics/StaticResource;->getBitmapSize()Landroid/graphics/Rect; +HSPLorg/chromium/ui/resources/statics/StaticResource;->getNinePatchData()Lorg/chromium/ui/resources/statics/NinePatchData; +Lorg/chromium/ui/resources/statics/StaticResourceLoader; +HSPLorg/chromium/ui/resources/statics/StaticResourceLoader;-><init>(Lorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback;Landroid/content/res/Resources;)V +Lorg/chromium/ui/resources/statics/StaticResourceLoader$1; +HSPLorg/chromium/ui/resources/statics/StaticResourceLoader$1;-><init>(Landroid/content/res/Resources;)V +HSPLorg/chromium/ui/resources/statics/StaticResourceLoader$1;->create(I)Lorg/chromium/ui/resources/statics/StaticResource; +Lorg/chromium/ui/resources/system/SystemResourceLoader; +HSPLorg/chromium/ui/resources/system/SystemResourceLoader;-><init>(Lorg/chromium/ui/resources/ResourceLoader$ResourceLoaderCallback;I)V +Lorg/chromium/ui/resources/system/SystemResourceLoader$1; +HSPLorg/chromium/ui/resources/system/SystemResourceLoader$1;-><init>(I)V +Lorg/chromium/ui/util/AccessibilityUtil; +HSPLorg/chromium/ui/util/AccessibilityUtil;-><init>()V +HSPLorg/chromium/ui/util/AccessibilityUtil;->addObserver(Lorg/chromium/ui/util/AccessibilityUtil$Observer;)V +HSPLorg/chromium/ui/util/AccessibilityUtil;->getAccessibilityManager()Landroid/view/accessibility/AccessibilityManager; +HSPLorg/chromium/ui/util/AccessibilityUtil;->updateIsAccessibilityEnabledAndNotify()V +Lorg/chromium/ui/util/AccessibilityUtil$ModeChangeHandler; +HSPLorg/chromium/ui/util/AccessibilityUtil$ModeChangeHandler;-><init>(Lorg/chromium/ui/util/AccessibilityUtil;)V +Lorg/chromium/ui/util/AccessibilityUtil$Observer; +Lorg/chromium/ui/util/ColorUtils; +HSPLorg/chromium/ui/util/ColorUtils;->getColorWithOverlay(IIFZ)I +HSPLorg/chromium/ui/util/ColorUtils;->getLightnessForColor(I)F +HSPLorg/chromium/ui/util/ColorUtils;->inNightMode(Landroid/content/Context;)Z +HSPLorg/chromium/ui/util/ColorUtils;->shouldUseLightForegroundOnBackground(I)Z +HSPLorg/chromium/ui/util/ColorUtils;->shouldUseOpaqueTextboxBackground(I)Z +Lorg/chromium/ui/util/TokenHolder; +HSPLorg/chromium/ui/util/TokenHolder;-><init>(Ljava/lang/Runnable;)V +HSPLorg/chromium/ui/util/TokenHolder;->acquireToken()I +HSPLorg/chromium/ui/util/TokenHolder;->hasTokens()Z +HSPLorg/chromium/ui/util/TokenHolder;->releaseToken(I)V +Lorg/chromium/ui/widget/AnchoredPopupWindow$LayoutObserver; +Lorg/chromium/ui/widget/ButtonCompat; +HSPLorg/chromium/ui/widget/ButtonCompat;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/ui/widget/ButtonCompat;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V +Lorg/chromium/ui/widget/ChromeImageButton; +HSPLorg/chromium/ui/widget/ChromeImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/ui/widget/ChromeImageButton;->onFinishInflate()V +Lorg/chromium/ui/widget/ChromeImageView; +HSPLorg/chromium/ui/widget/ChromeImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +Lorg/chromium/ui/widget/LoadingView; +HSPLorg/chromium/ui/widget/LoadingView;-><init>(Landroid/content/Context;)V +Lorg/chromium/ui/widget/LoadingView$1; +HSPLorg/chromium/ui/widget/LoadingView$1;-><init>(Lorg/chromium/ui/widget/LoadingView;I)V +Lorg/chromium/ui/widget/OptimizedFrameLayout; +HSPLorg/chromium/ui/widget/OptimizedFrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLorg/chromium/ui/widget/OptimizedFrameLayout;->onMeasure(II)V +Lorg/chromium/ui/widget/OptimizedFrameLayout$MeasurementState; +HSPLorg/chromium/ui/widget/OptimizedFrameLayout$MeasurementState;-><init>(Landroid/view/View;II)V +Lorg/chromium/ui/widget/RectProvider; +HSPLorg/chromium/ui/widget/RectProvider;-><init>()V +Lorg/chromium/ui/widget/RippleBackgroundHelper; +HSPLorg/chromium/ui/widget/RippleBackgroundHelper;-><init>(Landroid/view/View;II[FIII)V +HSPLorg/chromium/ui/widget/RippleBackgroundHelper;->setBackgroundColor(Landroid/content/res/ColorStateList;)V +Lorg/chromium/ui/widget/Toast; +Lorg/chromium/ui/widget/ViewRectProvider; +HSPLorg/chromium/ui/widget/ViewRectProvider;-><init>(Landroid/view/View;)V +Lorg/chromium/url/GURL; +HSPLorg/chromium/url/GURL;-><init>()V +HSPLorg/chromium/url/GURL;-><init>(Ljava/lang/String;)V +HSPLorg/chromium/url/GURL;->deserialize(Ljava/lang/String;)Lorg/chromium/url/GURL; +HSPLorg/chromium/url/GURL;->deserializeLatestVersionOnly(Ljava/lang/String;)Lorg/chromium/url/GURL; +HSPLorg/chromium/url/GURL;->emptyGURL()Lorg/chromium/url/GURL; +HSPLorg/chromium/url/GURL;->ensureNativeInitializedForGURL()V +HSPLorg/chromium/url/GURL;->equals(Ljava/lang/Object;)Z +HSPLorg/chromium/url/GURL;->getComponent(II)Ljava/lang/String; +HSPLorg/chromium/url/GURL;->getHost()Ljava/lang/String; +HSPLorg/chromium/url/GURL;->getOrigin()Lorg/chromium/url/GURL; +HSPLorg/chromium/url/GURL;->getScheme()Ljava/lang/String; +HSPLorg/chromium/url/GURL;->getSpec()Ljava/lang/String; +HSPLorg/chromium/url/GURL;->init(Ljava/lang/String;ZLorg/chromium/url/Parsed;)V +HSPLorg/chromium/url/GURL;->isEmpty()Z +HSPLorg/chromium/url/GURL;->isEmptyOrInvalid(Lorg/chromium/url/GURL;)Z +HSPLorg/chromium/url/GURL;->serialize()Ljava/lang/String; +HSPLorg/chromium/url/GURL;->toNativeGURL()J +Lorg/chromium/url/GURL$BadSerializerVersionException; +Lorg/chromium/url/GURL$Holder; +Lorg/chromium/url/Origin; +HSPLorg/chromium/url/Origin;-><init>(Ljava/lang/String;Ljava/lang/String;SZJJ)V +HSPLorg/chromium/url/Origin;->toNativeOrigin()J +Lorg/chromium/url/Parsed; +HSPLorg/chromium/url/Parsed;-><init>(IIIIIIIIIIIIIIIIZLorg/chromium/url/Parsed;)V +HSPLorg/chromium/url/Parsed;->deserialize(I[Ljava/lang/String;)Lorg/chromium/url/Parsed; +HSPLorg/chromium/url/Parsed;->serialize()Ljava/lang/String; +HSPLorg/chromium/url/Parsed;->toNativeParsed()J \ No newline at end of file
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni index 5e6f796..4f2bd39 100644 --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni
@@ -407,6 +407,7 @@ "java/res/drawable/ic_recent_tabs_bulk_20dp.xml", "java/res/drawable/ic_select_tabs.xml", "java/res/drawable/ic_select_window.xml", + "java/res/drawable/ic_selection_check_24dp.xml", "java/res/drawable/ic_signout_40dp.xml", "java/res/drawable/ic_site_timer.xml", "java/res/drawable/ic_storefront_blue.xml", @@ -441,6 +442,7 @@ "java/res/drawable/sharing_more.xml", "java/res/drawable/sharing_print.xml", "java/res/drawable/shield.xml", + "java/res/drawable/shopping_accessory_view_background.xml", "java/res/drawable/signin_header_animation.xml", "java/res/drawable/tab_indicator.xml", "java/res/drawable/tab_layout_background.xml", @@ -529,6 +531,9 @@ "java/res/layout/history_privacy_disclaimer_header.xml", "java/res/layout/history_toggle.xml", "java/res/layout/history_toolbar.xml", + "java/res/layout/improved_bookmark_row_end.xml", + "java/res/layout/improved_bookmark_row_layout.xml", + "java/res/layout/improved_bookmark_row_layout_visual.xml", "java/res/layout/incognito_description_layout.xml", "java/res/layout/incognito_history_placeholder.xml", "java/res/layout/incognito_toggle_tabs.xml", @@ -586,6 +591,7 @@ "java/res/layout/share_sheet_content.xml", "java/res/layout/share_sheet_item.xml", "java/res/layout/sheet_tab_toolbar.xml", + "java/res/layout/shopping_accessory_view_layout.xml", "java/res/layout/shopping_filter_row.xml", "java/res/layout/signin_activity.xml", "java/res/layout/status_indicator_container.xml",
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 2c951b7..e868e48 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -205,11 +205,15 @@ "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUiState.java", "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java", "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java", + "java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java", + "java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowProperties.java", + "java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowViewBinder.java", "java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkMetrics.java", "java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRow.java", "java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipList.java", "java/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkUtils.java", "java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java", + "java/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryView.java", "java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java", "java/src/org/chromium/chrome/browser/bookmarks/TestingDelegate.java", "java/src/org/chromium/chrome/browser/bookmarkswidget/BookmarkWidgetProvider.java",
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni index 468fb11e..9b04f5fe 100644 --- a/chrome/android/chrome_junit_test_java_sources.gni +++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -50,6 +50,7 @@ "junit/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowMediatorTest.java", "junit/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediatorTest.java", "junit/src/org/chromium/chrome/browser/bookmarks/BookmarkUiPrefsTest.java", + "junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java", "junit/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeaderTest.java", "junit/src/org/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorderTest.java", "junit/src/org/chromium/chrome/browser/browserservices/InstalledWebappBroadcastReceiverTest.java",
diff --git a/chrome/android/chrome_test_apk_tmpl.gni b/chrome/android/chrome_test_apk_tmpl.gni index 5ca00db6a..5812495 100644 --- a/chrome/android/chrome_test_apk_tmpl.gni +++ b/chrome/android/chrome_test_apk_tmpl.gni
@@ -48,7 +48,10 @@ } if (!is_java_debug) { proguard_enabled = true - proguard_configs = [ "//chrome/android/proguard/apk_for_test.flags" ] + proguard_configs = [ + "//chrome/android/proguard/apk_for_test.flags", + "//base/android/jni_generator/manual_jni_registration_proguard.flags", + ] if (defined(invoker.proguard_configs)) { proguard_configs += invoker.proguard_configs }
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni index 97f556e..5c9f099 100644 --- a/chrome/android/chrome_test_java_sources.gni +++ b/chrome/android/chrome_test_java_sources.gni
@@ -80,8 +80,10 @@ "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoDismissTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkPersonalizedSigninPromoTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/BookmarkSaveFlowTest.java", + "javatests/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowRenderTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkShoppingItemRowRenderTest.java", "javatests/src/org/chromium/chrome/browser/bookmarks/PowerBookmarkTagChipListRenderTest.java", + "javatests/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryViewRenderTest.java", "javatests/src/org/chromium/chrome/browser/browserservices/ManageTrustedWebActivityDataActivityTest.java", "javatests/src/org/chromium/chrome/browser/browserservices/QualityEnforcerTest.java", "javatests/src/org/chromium/chrome/browser/browserservices/RunningInChromeTest.java",
diff --git a/chrome/android/expectations/monochrome_public_bundle.proguard_flags.expected b/chrome/android/expectations/monochrome_public_bundle.proguard_flags.expected index 4ac19ae..a87420c3 100644 --- a/chrome/android/expectations/monochrome_public_bundle.proguard_flags.expected +++ b/chrome/android/expectations/monochrome_public_bundle.proguard_flags.expected
@@ -210,12 +210,8 @@ @androidx.annotation.Keep <methods>; } -# Even unused methods kept due to explicit jni registration: -# https://crbug.com/688465. --keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class !org.chromium.base.library_loader.**,** { - native <methods>; -} --keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class org.chromium.base.library_loader.** { +# Allow unused native methods to be removed, but prevent renaming on those that are kept. +-keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class ** { native <methods>; } @@ -331,6 +327,11 @@ -dontwarn com.google.common.logging.nano.Vr$** -dontwarn com.google.vr.** +# Since we manually register, we need to keep every native method. +-keepclasseswithmembers,includedescriptorclasses class com.google.vr.** { + native <methods>; +} + # File: ../../third_party/gvr-android-sdk/src/proguard-gvr.txt # Don't obfuscate any NDK/SDK code. This makes the debugging of stack traces # in release builds easier.
diff --git a/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java index 0e3150c..4e1396a 100644 --- a/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java +++ b/chrome/android/features/keyboard_accessory/junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java
@@ -12,7 +12,7 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static org.chromium.chrome.browser.keyboard_accessory.sheet_component.AccessorySheetProperties.ACTIVE_TAB_INDEX; @@ -232,11 +232,11 @@ } assertThat(keyboardCallback, is(notNullValue())); - verifyZeroInteractions(mSheetVisibilityDelegate); + verifyNoMoreInteractions(mSheetVisibilityDelegate); keyboardCallback.run(); - verifyZeroInteractions(mSheetVisibilityDelegate); + verifyNoMoreInteractions(mSheetVisibilityDelegate); mModel.set(ACTIVE_TAB_INDEX, 0);
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java index c12f463..2795a710 100644 --- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java +++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceBackButtonTest.java
@@ -57,7 +57,6 @@ import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; import org.chromium.chrome.test.R; -import org.chromium.chrome.test.util.ChromeApplicationTestUtils; import org.chromium.chrome.test.util.MenuUtils; import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures; @@ -351,7 +350,6 @@ @Feature({"StartSurface"}) // clang-format off @CommandLineFlags.Add({START_SURFACE_TEST_SINGLE_ENABLED_PARAMS}) - @DisabledTest(message = "https://crbug.com/1246457") @DisableFeatures({ChromeFeatureList.BACK_GESTURE_REFACTOR}) public void testSwipeBackOnStartSurfaceHomePage() throws ExecutionException { // clang-format on @@ -362,7 +360,6 @@ @MediumTest @Feature({"StartSurface"}) @CommandLineFlags.Add({START_SURFACE_TEST_SINGLE_ENABLED_PARAMS}) - @DisabledTest(message = "https://crbug.com/1246457") @EnableFeatures({ChromeFeatureList.BACK_GESTURE_REFACTOR}) public void testSwipeBackOnStartSurfaceHomePage_BackGestureRefactor() throws ExecutionException { @@ -451,10 +448,7 @@ StartSurfaceTestUtils.waitForStartSurfaceVisible(mLayoutChangedCallbackHelper, mCurrentlyActiveLayout, mActivityTestRule.getActivity()); - StartSurfaceTestUtils.gestureNavigateBack(mActivityTestRule); - - // Back gesture on the start surface puts Chrome background. - ChromeApplicationTestUtils.waitUntilChromeInBackground(); + StartSurfaceTestUtils.gestureNavigateBackToBringChromeBackground(mActivityTestRule); } /**
diff --git a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java index 7a2cc78..c8c5e44 100644 --- a/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java +++ b/chrome/android/features/start_surface/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceTestUtils.java
@@ -446,6 +446,21 @@ } /** + * Perform gesture navigate back action on the start surface to put Chrome background. + * @param activityTestRule The ChromeTabbedActivityTestRule under test. + */ + public static void gestureNavigateBackToBringChromeBackground( + ChromeTabbedActivityTestRule activityTestRule) { + AsyncInitializationActivity.interceptMoveTaskToBackForTesting(); + GestureNavigationUtils navUtils = new GestureNavigationUtils(activityTestRule); + navUtils.swipeFromLeftEdge(); + + // Back gesture on the start surface puts Chrome background. + CriteriaHelper.pollUiThread( + () -> AsyncInitializationActivity.wasMoveTaskToBackInterceptedForTesting()); + } + + /** * Click the first MV tile (Explore tile) in mv_tiles_layout. * @param cta The ChromeTabbedActivity under test. * @param currentTabCount The correct number of normal tabs.
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java index 65174a51..c7477c3e 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java
@@ -136,7 +136,7 @@ private @Nullable FeedListContentManager mContentManager; private @Nullable RecyclerView mRecyclerView; private @Nullable SurfaceScope mSurfaceScope; - private @Nullable FeedSurfaceScopeDependencyProvider mDependencyProvider; + private @Nullable FeedSurfaceScopeDependencyProviderImpl mDependencyProvider; private @Nullable HybridListRenderer mHybridListRenderer; // Used to handle things related to the main scrollable container of NTP surface. @@ -679,7 +679,7 @@ mContentManager = new FeedListContentManager(); ProcessScope processScope = FeedSurfaceTracker.getInstance().getXSurfaceProcessScope(); if (processScope != null) { - mDependencyProvider = new FeedSurfaceScopeDependencyProvider( + mDependencyProvider = new FeedSurfaceScopeDependencyProviderImpl( mActivity, mActivity, mShowDarkBackground); mSurfaceScope = processScope.obtainSurfaceScope(mDependencyProvider);
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java index 8e0aafd..c733703 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -48,8 +48,8 @@ import org.chromium.chrome.browser.ui.signin.PersonalizedSigninPromoView; import org.chromium.chrome.browser.ui.signin.SyncPromoController; import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger; -import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.StreamType; import org.chromium.chrome.browser.xsurface.ListLayoutHelper; +import org.chromium.chrome.browser.xsurface.feed.StreamType; import org.chromium.components.browser_ui.widget.listmenu.ListMenu; import org.chromium.components.browser_ui.widget.listmenu.ListMenuItemProperties; import org.chromium.components.feed.proto.wire.ReliabilityLoggingEnums.DiscoverLaunchResult;
diff --git a/chrome/android/java/res/drawable/ic_selection_check_24dp.xml b/chrome/android/java/res/drawable/ic_selection_check_24dp.xml new file mode 100644 index 0000000..f647fba --- /dev/null +++ b/chrome/android/java/res/drawable/ic_selection_check_24dp.xml
@@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +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" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <group> + <path + android:fillColor="@macro/default_icon_color_accent1" + android:pathData="M480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800ZM480,800Q346,800 253,707Q160,614 160,480Q160,346 253,253Q346,160 480,160Q614,160 707,253Q800,346 800,480Q800,614 707,707Q614,800 480,800Z"/> + </group> + <group> + <path + android:fillColor="@macro/default_icon_color_on_accent1" + android:pathData="M383,714L162,493L215.5,439.5L383,607L744.5,245.5L798,299L383,714Z"/> + </group> +</vector> \ No newline at end of file
diff --git a/chrome/android/java/res/drawable/shopping_accessory_view_background.xml b/chrome/android/java/res/drawable/shopping_accessory_view_background.xml new file mode 100644 index 0000000..d7c0e492 --- /dev/null +++ b/chrome/android/java/res/drawable/shopping_accessory_view_background.xml
@@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <corners android:radius="@dimen/card_rounded_corner_radius"/> + <solid android:color="@color/price_drop_annotation_bg_color"/> +</shape> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/improved_bookmark_row_end.xml b/chrome/android/java/res/layout/improved_bookmark_row_end.xml new file mode 100644 index 0000000..3314582 --- /dev/null +++ b/chrome/android/java/res/layout/improved_bookmark_row_end.xml
@@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<merge xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <org.chromium.components.browser_ui.widget.listmenu.ListMenuButton + android:id="@+id/more" + android:visibility="gone" + android:layout_width="@dimen/min_touch_target_size" + android:layout_height="match_parent" + android:background="@null" + android:src="@drawable/ic_more_vert_24dp" + app:tint="@color/default_icon_color_tint_list" + android:importantForAccessibility="no" /> + + <ImageView + android:id="@+id/check_image" + android:visibility="gone" + android:layout_width="@dimen/min_touch_target_size" + android:layout_height="match_parent" + android:src="@drawable/ic_selection_check_24dp" + android:scaleType="center" + android:importantForAccessibility="no" /> +</merge> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/improved_bookmark_row_layout.xml b/chrome/android/java/res/layout/improved_bookmark_row_layout.xml new file mode 100644 index 0000000..05c2ab34 --- /dev/null +++ b/chrome/android/java/res/layout/improved_bookmark_row_layout.xml
@@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/container" + android:gravity="center_vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingVertical="8dp" + android:background="@drawable/rounded_rectangle_surface_0"> + + <org.chromium.components.browser_ui.widget.RoundedCornerImageView + android:id="@+id/start_image" + android:layout_width="@dimen/improved_bookmark_icon_size" + android:layout_height="@dimen/improved_bookmark_icon_size" + android:layout_marginEnd="16dp" + android:scaleType="center" + android:importantForAccessibility="no" + android:background="@drawable/oval_surface_1" + app:cornerRadiusBottomStart="@dimen/default_rounded_corner_radius" + app:cornerRadiusBottomEnd="@dimen/default_rounded_corner_radius" + app:cornerRadiusTopStart="@dimen/default_rounded_corner_radius" + app:cornerRadiusTopEnd="@dimen/default_rounded_corner_radius" /> + + <!-- Common title/description shared between list item views. --> + <include layout="@layout/title_and_description_layout" /> + + <include layout="@layout/improved_bookmark_row_end" /> + +</LinearLayout> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/improved_bookmark_row_layout_visual.xml b/chrome/android/java/res/layout/improved_bookmark_row_layout_visual.xml new file mode 100644 index 0000000..5e5ee53 --- /dev/null +++ b/chrome/android/java/res/layout/improved_bookmark_row_layout_visual.xml
@@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2023 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/container" + android:gravity="center" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingStart="16dp" + android:paddingVertical="6dp" + android:background="@drawable/rounded_rectangle_surface_0"> + + <org.chromium.components.browser_ui.widget.RoundedCornerImageView + android:id="@+id/start_image" + android:layout_width="@dimen/improved_bookmark_icon_visual_size" + android:layout_height="@dimen/improved_bookmark_icon_visual_size" + android:layout_marginEnd="16dp" + android:scaleType="center" + android:importantForAccessibility="no" + android:background="@drawable/rounded_rectangle_surface_1" + app:cornerRadiusBottomStart="@dimen/default_rounded_corner_radius" + app:cornerRadiusBottomEnd="@dimen/default_rounded_corner_radius" + app:cornerRadiusTopStart="@dimen/default_rounded_corner_radius" + app:cornerRadiusTopEnd="@dimen/default_rounded_corner_radius" /> + + <!-- Common title/description shared between list item views. --> + <include layout="@layout/title_and_description_layout" /> + + <include layout="@layout/improved_bookmark_row_end" /> +</LinearLayout> \ No newline at end of file
diff --git a/chrome/android/java/res/layout/shopping_accessory_view_layout.xml b/chrome/android/java/res/layout/shopping_accessory_view_layout.xml new file mode 100644 index 0000000..a3510d2 --- /dev/null +++ b/chrome/android/java/res/layout/shopping_accessory_view_layout.xml
@@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright 2023 The Chromium Authors + Use of this source code is governed by a BSD-style license that can be + found in the LICENSE file. +--> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/container" + android:orientation="horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center" + android:paddingVertical="2dp" + android:paddingHorizontal="8dp" + android:background="@drawable/shopping_accessory_view_background"> + <ImageView + android:id="@+id/price_tracked_icon" + android:layout_width="14dp" + android:layout_height="14dp" + android:layout_marginEnd="5dp" + android:importantForAccessibility="no" + android:scaleType="centerInside" /> + <TextView + android:id="@+id/normal_price_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.TextMedium.Secondary" /> + <TextView + android:id="@+id/price_drop_text" + android:visibility="gone" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.ShoppingPriceDropText" + android:layout_marginEnd="5dp" /> + <TextView + android:id="@+id/original_price_text" + android:visibility="gone" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="@style/TextAppearance.TextMedium.Secondary" /> +</LinearLayout>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml index 8723345..ef1f863 100644 --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml
@@ -219,11 +219,13 @@ <dimen name="bookmark_list_view_padding_top">64dp</dimen> <dimen name="bookmark_dialog_toolbar_shadow_height">4dp</dimen> <dimen name="bookmark_reading_list_section_header_padding_top">15dp</dimen> + <!-- The size of the icon view, but not the size of the fetched image. --> + <dimen name="improved_bookmark_icon_size">48dp</dimen> + <!-- The size of the icon view and the size of the fetched image. --> + <dimen name="improved_bookmark_icon_visual_size">80dp</dimen> <!-- Bookmark visual refresh dimensions. --> <dimen name="bookmark_refresh_preferred_start_icon_size">32dp</dimen> - <!-- We intentionally use px to avoid showing fewer favicons in some UIs on higher density devices. --> - <dimen name="bookmark_refresh_min_start_icon_size" tools:ignore="PxUsage">32px</dimen> <dimen name="bookmark_refresh_circular_monogram_text_size">18dp</dimen> <!-- Bookmark widget dimensions -->
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java index 9f668023..a48d8f66 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
@@ -8,6 +8,7 @@ import org.chromium.build.BuildConfig; import org.chromium.chrome.browser.app.ChromeActivity; +import org.chromium.chrome.browser.back_press.MinimizeAppAndCloseTabBackPressHandler; import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.customtabs.CustomTabIntentDataProvider; @@ -171,7 +172,8 @@ TabManagementFieldTrial.TAB_STRIP_REDESIGN_ENABLE_FOLIO, TabManagementFieldTrial.TAB_STRIP_REDESIGN_ENABLE_DETACHED, VersionNumberGetter.MIN_SDK_VERSION, - ChromeActivity.CONTENT_VIS_DELAY_MS); + ChromeActivity.CONTENT_VIS_DELAY_MS, + MinimizeAppAndCloseTabBackPressHandler.SYSTEM_BACK); // clang-format on tryToCatchMissingParameters(fieldTrialsToCache); CachedFeatureFlags.cacheFieldTrialParameters(fieldTrialsToCache);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImpl.java index a8abfb2..bbf0a95 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImpl.java
@@ -15,18 +15,16 @@ import org.chromium.base.IntentUtils; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.Supplier; -import org.chromium.chrome.R; import org.chromium.chrome.browser.IntentHandler; -import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.document.ChromeLauncherActivity; -import org.chromium.chrome.browser.history.HistoryActivity; import org.chromium.chrome.browser.history_clusters.HistoryClustersCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.ActionChipsDelegate; import org.chromium.chrome.browser.omnibox.suggestions.SuggestionsMetrics; import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.settings.SettingsLauncherImpl; +import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.browser_ui.settings.SettingsLauncher; import org.chromium.components.browser_ui.settings.SettingsLauncher.SettingsFragment; import org.chromium.components.embedder_support.util.UrlConstants; @@ -37,7 +35,6 @@ import org.chromium.components.omnibox.action.OmniboxPedal; import org.chromium.components.omnibox.action.OmniboxPedalType; import org.chromium.content_public.browser.LoadUrlParams; -import org.chromium.ui.base.PageTransition; import org.chromium.ui.modaldialog.ModalDialogManager; import java.net.URISyntaxException; @@ -50,14 +47,17 @@ private final @NonNull SettingsLauncher mSettingsLauncher; private final @NonNull Supplier<HistoryClustersCoordinator> mHistoryClustersCoordinatorSupplier; private final @NonNull ObservableSupplier<ModalDialogManager> mModalDialogManagerSupplier; + private final @NonNull Supplier<Tab> mTabSupplier; public ActionChipsDelegateImpl(@NonNull Activity activity, @NonNull Supplier<HistoryClustersCoordinator> historyClustersCoordinatorSupplier, - @NonNull ObservableSupplier<ModalDialogManager> modalDialogManagerSupplier) { + @NonNull ObservableSupplier<ModalDialogManager> modalDialogManagerSupplier, + @NonNull Supplier<Tab> tabSupplier) { mActivity = activity; mSettingsLauncher = new SettingsLauncherImpl(); mHistoryClustersCoordinatorSupplier = historyClustersCoordinatorSupplier; mModalDialogManagerSupplier = modalDialogManagerSupplier; + mTabSupplier = tabSupplier; } private void executePedalAction(OmniboxPedal pedal) { @@ -84,6 +84,12 @@ case OmniboxPedalType.MANAGE_CHROME_ACCESSIBILITY: mSettingsLauncher.launchSettingsActivity(mActivity, SettingsFragment.ACCESSIBILITY); break; + case OmniboxPedalType.VIEW_CHROME_HISTORY: + loadPageInCurrentTab(UrlConstants.HISTORY_URL); + break; + case OmniboxPedalType.PLAY_CHROME_DINO_GAME: + loadPageInCurrentTab(UrlConstants.CHROME_DINO_URL); + break; case OmniboxPedalType.MANAGE_PASSWORDS: PasswordManagerLauncher.showPasswordSettings(mActivity, @@ -91,36 +97,8 @@ /*managePasskeys=*/false); break; case OmniboxPedalType.LAUNCH_INCOGNITO: - if (isChromeActivity()) { - ((ChromeActivity) mActivity) - .onMenuOrKeyboardAction( - R.id.new_incognito_tab_menu_id, /*fromMenu*/ false); - } else { - Intent intent = IntentHandler.createTrustedOpenNewTabIntent( - mActivity.getApplicationContext(), /*incognito=*/true); - startActivity(intent); - } - break; - case OmniboxPedalType.VIEW_CHROME_HISTORY: - if (isChromeActivity()) { - ((ChromeActivity) mActivity) - .onMenuOrKeyboardAction(R.id.open_history_menu_id, /*fromMenu*/ false); - } else { - Intent intent = new Intent(); - intent.setClass(mActivity.getApplicationContext(), HistoryActivity.class); - intent.putExtra(IntentHandler.EXTRA_INCOGNITO_MODE, false); - startActivity(intent); - } - break; - case OmniboxPedalType.PLAY_CHROME_DINO_GAME: - if (isChromeActivity()) { - ((ChromeActivity) mActivity) - .getActivityTab() - .loadUrl(new LoadUrlParams( - UrlConstants.CHROME_DINO_URL, PageTransition.GENERATED)); - } else { - startActivity(createDinoIntent()); - } + startActivity(IntentHandler.createTrustedOpenNewTabIntent( + mActivity.getApplicationContext(), /*incognito=*/true)); break; } SuggestionsMetrics.recordPedalUsed(pedalId); @@ -147,15 +125,24 @@ } } - /** Returns an intent to launch a new tab with chrome://dino/ URL. */ - private @NonNull Intent createDinoIntent() { - Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(UrlConstants.CHROME_DINO_URL)); - intent.setComponent( - new ComponentName(mActivity.getApplicationContext(), ChromeLauncherActivity.class)); - intent.putExtra(WebappConstants.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NEW_DOCUMENT); - - return intent; + /** + * Load the supplied URL in the current tab. + * If not possible, open a new tab and load the url there. Try to re-use existing tabs where + * possible. + * + * @param url the page URL to load + */ + private void loadPageInCurrentTab(String url) { + var tab = mTabSupplier.get(); + if (tab != null) { + tab.loadUrl(new LoadUrlParams(url)); + } else { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + intent.setComponent(new ComponentName( + mActivity.getApplicationContext(), ChromeLauncherActivity.class)); + intent.putExtra(WebappConstants.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true); + startActivity(intent); + } } /** @@ -168,14 +155,23 @@ var intent = Intent.parseUri( actionInSuggest.actionInfo.getActionUri(), Intent.URI_INTENT_SCHEME); - // Don't call directly. Use `DIAL` instead to let the user decide. - // Note also that ACTION_CALL requires a dedicated permission. - if (intent.getAction().equals(Intent.ACTION_CALL)) { - intent.setAction(Intent.ACTION_DIAL); - } + switch (actionInSuggest.actionInfo.getActionType()) { + case WEBSITE: + // Rather than invoking an intent that opens a new tab, load the page in the + // current tab. + loadPageInCurrentTab(intent.getDataString()); + break; - intent.putExtra(WebappConstants.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, true); - startActivity(intent); + case CALL: + // Don't call directly. Use `DIAL` instead to let the user decide. + // Note also that ACTION_CALL requires a dedicated permission. + intent.setAction(Intent.ACTION_DIAL); + // fall through. + case DIRECTIONS: + default: + startActivity(intent); + break; + } SuggestionsMetrics.recordActionInSuggestIntentResult( SuggestionsMetrics.ActionInSuggestIntentResult.SUCCESS); @@ -197,12 +193,4 @@ } mActivity.startActivity(intent); } - - /** - * Returns true, if the current activity type is regular Chrome activity. - * Other activity types (SearchActivity etc) return false. - */ - private boolean isChromeActivity() { - return mActivity instanceof ChromeActivity; - } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java index a4ec9df..7de208b 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkItemRow.java
@@ -37,8 +37,8 @@ */ public static BookmarkItemRow buildView(Context context, boolean isVisualRefreshEnabled) { BookmarkItemRow row = new BookmarkItemRow(context, null); - row.setupIconProperties(isVisualRefreshEnabled); BookmarkRow.buildView(row, context, isVisualRefreshEnabled); + row.setupIconProperties(isVisualRefreshEnabled); return row; } @@ -48,9 +48,7 @@ } void setupIconProperties(boolean isVisualRefreshEnabled) { - mMinIconSize = getResources().getDimensionPixelSize(isVisualRefreshEnabled - ? R.dimen.bookmark_refresh_min_start_icon_size - : R.dimen.default_favicon_min_size); + mMinIconSize = getResources().getDimensionPixelSize(R.dimen.default_favicon_min_size); mDisplayedIconSize = getResources().getDimensionPixelSize(isVisualRefreshEnabled ? R.dimen.bookmark_refresh_preferred_start_icon_size : R.dimen.default_favicon_size);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java index a25d5f6..b7f0ce0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java
@@ -248,7 +248,6 @@ clearHighlight(); mSearchText = EMPTY_QUERY; - mCurrentFolder = folder; mDragReorderableRecyclerViewAdapter.enableDrag(); if (topLevelFoldersShowing()) { @@ -356,7 +355,6 @@ // ViewType.PERSONALIZED_SIGNIN_PROMO, ViewType.SYNC_PROMO, or ViewType.INVALID. private @ViewType int mPromoHeaderType = ViewType.INVALID; private String mSearchText; - private BookmarkId mCurrentFolder; // Keep track of the currently highlighted bookmark - used for "show in folder" action. private BookmarkId mHighlightedBookmark; @@ -520,7 +518,7 @@ public void setOrder() { assert !topLevelFoldersShowing() : "Cannot reorder top-level folders!"; - assert mCurrentFolder.getType() + assert getCurrentFolderId().getType() != BookmarkType.PARTNER : "Cannot reorder partner bookmarks!"; assert getCurrentUiMode() == BookmarkUiMode.FOLDER : "Can only reorder items from folder mode!"; @@ -535,7 +533,7 @@ assert bookmarkItem != null; newOrder[i - startIndex] = bookmarkItem.getId().getId(); } - mBookmarkModel.reorderBookmarks(mCurrentFolder, newOrder); + mBookmarkModel.reorderBookmarks(getCurrentFolderId(), newOrder); if (mDragStateDelegate.getDragActive()) { RecordUserAction.record("MobileBookmarkManagerDragReorder"); } @@ -567,7 +565,7 @@ @Override public void simulateSignInForTesting() { mSyncStateChangedListener.syncStateChanged(); - mBookmarkUiObserver.onFolderStateSet(mCurrentFolder); + mBookmarkUiObserver.onFolderStateSet(getCurrentFolderId()); } // BookmarkDelegate implementation. @@ -736,6 +734,10 @@ // Private methods. + private @Nullable BookmarkId getCurrentFolderId() { + return mStateStack.isEmpty() ? null : mStateStack.peek().mFolder; + } + /** * Puts all UI elements to loading state. This state might be overridden synchronously by * {@link #updateForUrl(String)}, if the bookmark model is already loaded. @@ -855,7 +857,7 @@ // TODO(https://crbug.com/1413463): Rework promo/header methods to simplify initial index. int index = hasPromoHeader() ? 1 : 0; - if (BookmarkId.SHOPPING_FOLDER.equals(mCurrentFolder)) { + if (BookmarkId.SHOPPING_FOLDER.equals(getCurrentFolderId())) { filterForPriceTrackingCategory(bookmarks); } @@ -869,8 +871,8 @@ entryList.add(bookmarkListEntry); } - if (mCurrentFolder.getType() == BookmarkType.READING_LIST - && getCurrentUiMode() != BookmarkUiMode.SEARCHING) { + if (getCurrentUiMode() != BookmarkUiMode.SEARCHING + && getCurrentFolderId().getType() == BookmarkType.READING_LIST) { ReadingListSectionHeader.maybeSortAndInsertSectionHeaders(entryList); } @@ -1024,7 +1026,7 @@ * (which is true iff the top-level folders are showing) */ private boolean topLevelFoldersShowing() { - return mCurrentFolder.equals(mBookmarkModel.getRootFolderId()); + return Objects.equals(getCurrentFolderId(), mBookmarkModel.getRootFolderId()); } /** Clears the highlighted bookmark, if there is one. */ @@ -1058,7 +1060,7 @@ propertyModel.set(BookmarkManagerProperties.BOOKMARK_LIST_ENTRY, bookmarkListEntry); propertyModel.set(BookmarkManagerProperties.BOOKMARK_ID, bookmarkId); propertyModel.set(BookmarkManagerProperties.IS_FROM_FILTER_VIEW, - BookmarkId.SHOPPING_FOLDER.equals(mCurrentFolder)); + BookmarkId.SHOPPING_FOLDER.equals(getCurrentFolderId())); boolean isHighlighted = Objects.equals(bookmarkId, mHighlightedBookmark); propertyModel.set(BookmarkManagerProperties.IS_HIGHLIGHTED, isHighlighted);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java new file mode 100644 index 0000000..695c2ab6 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRow.java
@@ -0,0 +1,163 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import org.chromium.chrome.R; +import org.chromium.components.bookmarks.BookmarkId; +import org.chromium.components.browser_ui.widget.listmenu.ListMenu; +import org.chromium.components.browser_ui.widget.listmenu.ListMenuButton; +import org.chromium.components.browser_ui.widget.listmenu.ListMenuButton.PopupMenuShownListener; +import org.chromium.components.browser_ui.widget.selectable_list.SelectableItemViewBase; +import org.chromium.components.browser_ui.widget.selectable_list.SelectableListUtils; + +/** + * Common logic for improved bookmark and folder rows. + */ +public class ImprovedBookmarkRow extends SelectableItemViewBase<BookmarkId> { + private ViewGroup mContainer; + // The start image view which is shows the favicon. + private ImageView mStartImageView; + // Displays the title of the bookmark. + private TextView mTitleView; + // Displays the url of the bookmark. + private TextView mDescriptionView; + // Optional views that display below the description. Allows embedders to specify custom + // content without the row being aware of it. + private ViewGroup mAccessoryViewGroup; + // The end image view which is shows the checkmark. + private ImageView mCheckImageView; + // 3-dot menu which displays contextual actions. + private ListMenuButton mMoreButton; + + private boolean mDragEnabled; + private boolean mBookmarkIdEditable; + + private Runnable mOpenBookmarkCallback; + + /** + * Factory constructor for building the view programmatically. + * @param context The calling context, usually the parent view. + * @param isVisual Whether the visual row should be used. + */ + protected static ImprovedBookmarkRow buildView(Context context, boolean isVisual) { + ImprovedBookmarkRow row = new ImprovedBookmarkRow(context, null); + row.setLayoutParams(new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + + LayoutInflater.from(context).inflate(isVisual + ? org.chromium.chrome.R.layout.improved_bookmark_row_layout_visual + : org.chromium.chrome.R.layout.improved_bookmark_row_layout, + row); + row.onFinishInflate(); + return row; + } + + /** Constructor for inflating from XML. */ + public ImprovedBookmarkRow(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + + mContainer = findViewById(R.id.container); + + mStartImageView = findViewById(R.id.start_image); + + mTitleView = findViewById(R.id.title); + mDescriptionView = findViewById(R.id.description); + mAccessoryViewGroup = findViewById(R.id.custom_content_container); + + mCheckImageView = findViewById(R.id.check_image); + + mMoreButton = findViewById(R.id.more); + } + + void setTitle(String title) { + mTitleView.setText(title); + SelectableListUtils.setContentDescriptionContext(getContext(), mMoreButton, title, + SelectableListUtils.ContentDescriptionSource.MENU_BUTTON); + } + + void setDescription(String description) { + mDescriptionView.setText(description); + } + + void setIcon(Drawable icon) { + mStartImageView.setImageDrawable(icon); + } + + void setAccessoryView(@Nullable View view) { + mAccessoryViewGroup.removeAllViews(); + if (view == null) return; + mAccessoryViewGroup.addView(view); + } + + void setListMenu(ListMenu listMenu) { + mMoreButton.setDelegate(() -> listMenu); + mMoreButton.setVisibility(View.VISIBLE); + } + + void setPopupListener(PopupMenuShownListener listener) { + mMoreButton.addPopupListener(listener); + } + + void setIsSelected(boolean selected) { + setChecked(selected); + } + + void setSelectionEnabled(boolean selectionEnabled) { + mMoreButton.setClickable(!selectionEnabled); + mMoreButton.setEnabled(!selectionEnabled); + mMoreButton.setImportantForAccessibility(!selectionEnabled + ? IMPORTANT_FOR_ACCESSIBILITY_YES + : IMPORTANT_FOR_ACCESSIBILITY_NO); + } + + void setDragEnabled(boolean dragEnabled) { + mDragEnabled = dragEnabled; + } + + void setOpenBookmarkCallback(Runnable openBookmarkCallback) { + mOpenBookmarkCallback = openBookmarkCallback; + } + + void setBookmarkIdEditable(boolean bookmarkIdEditable) { + mBookmarkIdEditable = bookmarkIdEditable; + updateView(false); + } + + // SelectableItemViewBase implementation. + + @Override + protected void updateView(boolean animate) { + boolean selected = isChecked(); + mContainer.setBackgroundResource(selected ? R.drawable.rounded_rectangle_surface_1 + : R.drawable.rounded_rectangle_surface_0); + + boolean checkVisible = selected; + boolean moreVisible = !selected && mBookmarkIdEditable; + mCheckImageView.setVisibility(checkVisible ? View.VISIBLE : View.GONE); + mMoreButton.setVisibility(moreVisible ? View.VISIBLE : View.GONE); + } + + @Override + protected void onClick() { + mOpenBookmarkCallback.run(); + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowProperties.java new file mode 100644 index 0000000..931de6b --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowProperties.java
@@ -0,0 +1,34 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import android.graphics.drawable.Drawable; +import android.view.View; + +import org.chromium.components.browser_ui.widget.listmenu.ListMenu; +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey; +import org.chromium.ui.modelutil.PropertyModel.WritableObjectPropertyKey; + +/** Responsible for hosting properties of the improved bookmark row. */ +class ImprovedBookmarkRowProperties { + static final WritableObjectPropertyKey<String> TITLE = new WritableObjectPropertyKey<>(); + static final WritableObjectPropertyKey<String> DESCRIPTION = new WritableObjectPropertyKey<>(); + static final WritableObjectPropertyKey<Drawable> ICON = new WritableObjectPropertyKey<>(); + static final WritableObjectPropertyKey<View> ACCESSORY_VIEW = new WritableObjectPropertyKey<>(); + static final WritableObjectPropertyKey<ListMenu> LIST_MENU = new WritableObjectPropertyKey<>(); + static final WritableObjectPropertyKey<Runnable> POPUP_LISTENER = + new WritableObjectPropertyKey<>(); + static final WritableBooleanPropertyKey SELECTED = new WritableBooleanPropertyKey(); + static final WritableBooleanPropertyKey SELECTION_ACTIVE = new WritableBooleanPropertyKey(); + static final WritableBooleanPropertyKey DRAG_ENABLED = new WritableBooleanPropertyKey(); + static final WritableBooleanPropertyKey EDITABLE = new WritableBooleanPropertyKey(); + static final WritableObjectPropertyKey<Runnable> OPEN_BOOKMARK_CALLBACK = + new WritableObjectPropertyKey<>(); + + static final PropertyKey[] ALL_KEYS = {TITLE, DESCRIPTION, ICON, ACCESSORY_VIEW, LIST_MENU, + POPUP_LISTENER, SELECTED, SELECTION_ACTIVE, DRAG_ENABLED, EDITABLE, + OPEN_BOOKMARK_CALLBACK}; +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowViewBinder.java new file mode 100644 index 0000000..07a3aad --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowViewBinder.java
@@ -0,0 +1,42 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import android.view.View; + +import org.chromium.ui.modelutil.PropertyKey; +import org.chromium.ui.modelutil.PropertyModel; + +/** Binds model properties to view methods for ImprovedBookmarkRow. */ +class ImprovedBookmarkRowViewBinder { + static void bind(PropertyModel model, View view, PropertyKey key) { + ImprovedBookmarkRow row = (ImprovedBookmarkRow) view; + if (key == ImprovedBookmarkRowProperties.TITLE) { + row.setTitle(model.get(ImprovedBookmarkRowProperties.TITLE)); + } else if (key == ImprovedBookmarkRowProperties.DESCRIPTION) { + row.setDescription(model.get(ImprovedBookmarkRowProperties.DESCRIPTION)); + } else if (key == ImprovedBookmarkRowProperties.ICON) { + row.setIcon(model.get(ImprovedBookmarkRowProperties.ICON)); + } else if (key == ImprovedBookmarkRowProperties.ACCESSORY_VIEW) { + row.setAccessoryView(model.get(ImprovedBookmarkRowProperties.ACCESSORY_VIEW)); + } else if (key == ImprovedBookmarkRowProperties.LIST_MENU) { + row.setListMenu(model.get(ImprovedBookmarkRowProperties.LIST_MENU)); + } else if (key == ImprovedBookmarkRowProperties.POPUP_LISTENER) { + row.setPopupListener( + () -> model.get(ImprovedBookmarkRowProperties.POPUP_LISTENER).run()); + } else if (key == ImprovedBookmarkRowProperties.SELECTED) { + row.setIsSelected(model.get(ImprovedBookmarkRowProperties.SELECTED)); + } else if (key == ImprovedBookmarkRowProperties.SELECTION_ACTIVE) { + row.setSelectionEnabled(model.get(ImprovedBookmarkRowProperties.SELECTION_ACTIVE)); + } else if (key == ImprovedBookmarkRowProperties.DRAG_ENABLED) { + row.setDragEnabled(model.get(ImprovedBookmarkRowProperties.DRAG_ENABLED)); + } else if (key == ImprovedBookmarkRowProperties.EDITABLE) { + row.setBookmarkIdEditable(model.get(ImprovedBookmarkRowProperties.EDITABLE)); + } else if (key == ImprovedBookmarkRowProperties.OPEN_BOOKMARK_CALLBACK) { + row.setOpenBookmarkCallback( + model.get(ImprovedBookmarkRowProperties.OPEN_BOOKMARK_CALLBACK)); + } + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryView.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryView.java new file mode 100644 index 0000000..e7cda5b --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryView.java
@@ -0,0 +1,108 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; +import android.content.Context; +import android.content.res.ColorStateList; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.core.widget.ImageViewCompat; + +import org.chromium.chrome.R; +import org.chromium.components.browser_ui.styles.ChromeColors; +import org.chromium.components.browser_ui.styles.SemanticColorUtils; + +/** View for the shopping price chip. */ +public class ShoppingAccessoryView extends FrameLayout { + private ViewGroup mContainer; + private ImageView mPriceTrackedIcon; + // Used for when there's no price drop. + private TextView mNormalPriceText; + // Used for the new price when there's a price drop. + private TextView mPriceDropText; + // Used for the original price when there's a price drop. + private TextView mOriginalPriceText; + + /** + * Factory constructor for building the view programmatically. + * @param context The calling context, usually the parent view. + * @param visual Whether the visual row should be used. + */ + protected static ShoppingAccessoryView buildView(Context context) { + ShoppingAccessoryView view = new ShoppingAccessoryView(context, null); + view.setLayoutParams(new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + + LayoutInflater.from(context).inflate( + org.chromium.chrome.R.layout.shopping_accessory_view_layout, view); + view.onFinishInflate(); + return view; + } + + /** Constructor for inflating from XML. */ + public ShoppingAccessoryView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + + mContainer = findViewById(R.id.container); + + mPriceTrackedIcon = findViewById(R.id.price_tracked_icon); + mNormalPriceText = findViewById(R.id.normal_price_text); + mPriceDropText = findViewById(R.id.price_drop_text); + mOriginalPriceText = findViewById(R.id.original_price_text); + } + + void setPriceTracked(boolean tracked, boolean showIcon) { + mPriceTrackedIcon.setVisibility(showIcon ? View.VISIBLE : View.GONE); + mPriceTrackedIcon.setImageResource(tracked ? R.drawable.price_tracking_enabled_outline + : R.drawable.price_tracking_disabled); + } + + void setPriceInformation(long originalPrice, String originalPriceText, long currentPrice, + String currentPriceText) { + boolean priceDrop = originalPrice > currentPrice; + mNormalPriceText.setVisibility(priceDrop ? View.GONE : View.VISIBLE); + mPriceDropText.setVisibility(priceDrop ? View.VISIBLE : View.GONE); + mOriginalPriceText.setVisibility(priceDrop ? View.VISIBLE : View.GONE); + + if (priceDrop) { + mContainer.getBackground().setColorFilter( + getContext().getResources().getColor(R.color.price_drop_annotation_bg_color), + PorterDuff.Mode.SRC_ATOP); + ImageViewCompat.setImageTintList(mPriceTrackedIcon, + ColorStateList.valueOf(getContext().getResources().getColor( + R.color.price_drop_annotation_text_green))); + + // Primary text displays the current price. + mPriceDropText.setText(currentPriceText); + + // Secondary text displays the original price with a strikethrough. + mOriginalPriceText.setText(originalPriceText); + mOriginalPriceText.setPaintFlags( + mOriginalPriceText.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); + } else { + mContainer.getBackground().setColorFilter( + ChromeColors.getSurfaceColor(getContext(), R.dimen.default_elevation_2), + PorterDuff.Mode.SRC_ATOP); + + ImageViewCompat.setImageTintList(mPriceTrackedIcon, + ColorStateList.valueOf( + SemanticColorUtils.getDefaultIconColorSecondary(getContext()))); + + mNormalPriceText.setText(currentPriceText); + } + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java index a3a4124..9a426bfd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/SearchActivity.java
@@ -247,7 +247,7 @@ VoiceToolbarButtonController::isToolbarMicEnabled, /*merchantTrustSignalsCoordinatorSupplier=*/null, new ActionChipsDelegateImpl(this, new OneshotSupplierImpl<>(), - getModalDialogManagerSupplier()), null, + getModalDialogManagerSupplier(), () -> null), null, ChromePureJavaExceptionReporter::reportJavaException, backPressManager, /*OmniboxSuggestionsDropdownScrollListener=*/this, new OpenHistoryClustersDelegate() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java index 02d0064..455c81e8 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareDelegateImpl.java
@@ -6,6 +6,7 @@ import android.app.Activity; +import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.annotation.OptIn; import androidx.annotation.VisibleForTesting; @@ -22,6 +23,7 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.printing.TabPrinter; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.share.ShareContentTypeHelper.ContentType; import org.chromium.chrome.browser.share.android_share_sheet.AndroidShareSheetController; import org.chromium.chrome.browser.share.link_to_text.LinkToTextHelper; import org.chromium.chrome.browser.share.share_sheet.ShareSheetCoordinator; @@ -41,6 +43,8 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; +import java.util.Set; + /** * Implementation of share interface. Mostly a wrapper around ShareSheetCoordinator. */ @@ -286,12 +290,65 @@ AppHooks.get().getImageEditorModuleProvider(), TrackerFactory.getTrackerForProfile(profile), profile); coordinator.showInitialShareSheet(params, chromeShareExtras, shareStartTime); + RecordHistogram.recordEnumeratedHistogram( + "Sharing.SharingHubAndroid.ShareContentType", + getShareContentType(params, chromeShareExtras), ShareContentType.COUNT); } else { RecordHistogram.recordEnumeratedHistogram( "Sharing.DefaultSharesheetAndroid.Opened", shareOrigin, ShareOrigin.COUNT); + RecordHistogram.recordEnumeratedHistogram( + "Sharing.DefaultSharesheetAndroid.ShareContentType", + getShareContentType(params, chromeShareExtras), ShareContentType.COUNT); AndroidShareSheetController.showShareSheet(params, chromeShareExtras, controller, tabProvider, tabModelSelectorSupplier, profileSupplier, printCallback); + RecordHistogram.recordEnumeratedHistogram( + "Sharing.SharingHubAndroid.ShareContentType", + getShareContentType(params, chromeShareExtras), ShareContentType.COUNT); } } } + + // These values are recorded as histogram values. Entries should not be + // renumbered and numeric values should never be reused. + @IntDef({ShareContentType.UNKNOWN, ShareContentType.TEXT, ShareContentType.TEXT_WITH_LINK, + ShareContentType.LINK, ShareContentType.IMAGE, ShareContentType.IMAGE_WITH_LINK, + ShareContentType.FILES, ShareContentType.COUNT}) + @interface ShareContentType { + int UNKNOWN = 0; + int TEXT = 1; + int TEXT_WITH_LINK = 2; + int LINK = 3; + int IMAGE = 4; + int IMAGE_WITH_LINK = 5; + int FILES = 6; + + int COUNT = 7; + } + + static @ShareContentType int getShareContentType( + ShareParams params, ChromeShareExtras chromeShareExtras) { + @ContentType + Set<Integer> types = ShareContentTypeHelper.getContentTypes(params, chromeShareExtras); + if (types.contains(ContentType.OTHER_FILE_TYPE)) { + return ShareContentType.FILES; + } + if (types.contains(ContentType.IMAGE_AND_LINK)) { + return ShareContentType.IMAGE_WITH_LINK; + } + if (types.contains(ContentType.IMAGE)) { + return ShareContentType.IMAGE; + } + if (types.contains(ContentType.HIGHLIGHTED_TEXT) + || types.contains(ContentType.LINK_AND_TEXT)) { + return ShareContentType.TEXT_WITH_LINK; + } + if (types.contains(ContentType.LINK_PAGE_NOT_VISIBLE) + || types.contains(ContentType.LINK_PAGE_VISIBLE)) { + return ShareContentType.LINK; + } + if (types.contains(ContentType.TEXT)) { + return ShareContentType.TEXT; + } + return ShareContentType.UNKNOWN; + } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java index d4e5bba..667ec89 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -421,8 +421,9 @@ mMenuOrKeyboardActionController.registerMenuOrKeyboardActionHandler(this); mActivityTabProvider = tabProvider; - mActionChipsDelegate = new ActionChipsDelegateImpl( - mActivity, mHistoryClustersCoordinatorSupplier, mModalDialogManagerSupplier); + mActionChipsDelegate = + new ActionChipsDelegateImpl(mActivity, mHistoryClustersCoordinatorSupplier, + mModalDialogManagerSupplier, mActivityTabProvider); // This little bit of arithmetic is necessary because of Java doesn't like accepting // Supplier<BaseImpl> where Supplier<Base> is expected. We should remove the need for
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowRenderTest.java new file mode 100644 index 0000000..28d08934 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowRenderTest.java
@@ -0,0 +1,197 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import static org.chromium.components.browser_ui.widget.listmenu.BasicListMenu.buildMenuListItem; + +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +import androidx.test.filters.MediumTest; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +import org.chromium.base.test.BaseActivityTestRule; +import org.chromium.base.test.params.ParameterAnnotations; +import org.chromium.base.test.params.ParameterAnnotations.ClassParameter; +import org.chromium.base.test.params.ParameterSet; +import org.chromium.base.test.params.ParameterizedRunner; +import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.R; +import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; +import org.chromium.chrome.test.util.ChromeRenderTestRule; +import org.chromium.chrome.test.util.browser.Features; +import org.chromium.components.browser_ui.widget.listmenu.BasicListMenu; +import org.chromium.components.browser_ui.widget.listmenu.ListMenu; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.ui.modelutil.MVCListAdapter.ModelList; +import org.chromium.ui.test.util.BlankUiTestActivity; +import org.chromium.ui.test.util.DisableAnimationsTestRule; +import org.chromium.ui.test.util.NightModeTestUtils; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +/** + * Render tests for the improved bookmark row. + */ +@RunWith(ParameterizedRunner.class) +@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) +@Batch(Batch.PER_CLASS) +public class ImprovedBookmarkRowRenderTest { + @ClassParameter + private static List<ParameterSet> sClassParams = + Arrays.asList(new ParameterSet().value(true, true).name("VisualRow_NightModeEnabled"), + new ParameterSet().value(true, false).name("VisualRow_NightModeDisabled"), + new ParameterSet().value(false, true).name("CompactRow_NightModeEnabled"), + new ParameterSet().value(false, false).name("CompactRow_NightModeDisabled")); + + @Rule + public final DisableAnimationsTestRule mDisableAnimationsRule = new DisableAnimationsTestRule(); + + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Rule + public BaseActivityTestRule<BlankUiTestActivity> mActivityTestRule = + new BaseActivityTestRule<>(BlankUiTestActivity.class); + + @Rule + public ChromeRenderTestRule mRenderTestRule = + ChromeRenderTestRule.Builder.withPublicCorpus() + .setBugComponent(ChromeRenderTestRule.Component.UI_BROWSER_BOOKMARKS) + .build(); + + @Rule + public TestRule mProcessor = new Features.JUnitProcessor(); + + private boolean mUseVisualRowLayout; + private Bitmap mBitmap; + private ImprovedBookmarkRow mImprovedBookmarkRow; + private LinearLayout mContentView; + + public ImprovedBookmarkRowRenderTest(boolean useVisualRowLayout, boolean nightModeEnabled) { + mUseVisualRowLayout = useVisualRowLayout; + mRenderTestRule.setVariantPrefix(mUseVisualRowLayout ? "visual_" : "compact_"); + + // Sets a fake background color to make the screenshots easier to compare with bare eyes. + NightModeTestUtils.setUpNightModeForBlankUiTestActivity(nightModeEnabled); + mRenderTestRule.setNightModeEnabled(nightModeEnabled); + } + + @Before + public void setUp() throws Exception { + mActivityTestRule.launchActivity(null); + mActivityTestRule.getActivity().setTheme(R.style.Theme_BrowserUI_DayNight); + + int bitmapSize = mActivityTestRule.getActivity().getResources().getDimensionPixelSize( + mUseVisualRowLayout ? R.dimen.improved_bookmark_icon_visual_size + : R.dimen.default_favicon_size); + mBitmap = Bitmap.createBitmap(bitmapSize, bitmapSize, Bitmap.Config.ARGB_8888); + mBitmap.eraseColor(Color.GREEN); + + TestThreadUtils.runOnUiThreadBlocking(() -> { + mContentView = new LinearLayout(mActivityTestRule.getActivity()); + mContentView.setBackgroundColor(Color.WHITE); + + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + mActivityTestRule.getActivity().setContentView(mContentView, params); + + mImprovedBookmarkRow = ImprovedBookmarkRow.buildView( + mActivityTestRule.getActivity(), mUseVisualRowLayout); + mContentView.removeAllViews(); + mContentView.addView(mImprovedBookmarkRow); + mImprovedBookmarkRow.setTitle("test title"); + mImprovedBookmarkRow.setDescription("test description"); + mImprovedBookmarkRow.setIcon( + new BitmapDrawable(mActivityTestRule.getActivity().getResources(), mBitmap)); + mImprovedBookmarkRow.setListMenu(buildListMenu()); + mImprovedBookmarkRow.setIsSelected(false); + }); + } + + public static String getViewHierarchy(View v) { + StringBuilder desc = new StringBuilder(); + getViewHierarchy(v, desc, 0); + return desc.toString(); + } + + private static void getViewHierarchy(View v, StringBuilder desc, int margin) { + desc.append(getViewMessage(v, margin)); + if (v instanceof ViewGroup) { + margin++; + ViewGroup vg = (ViewGroup) v; + for (int i = 0; i < vg.getChildCount(); i++) { + getViewHierarchy(vg.getChildAt(i), desc, margin); + } + } + } + + private static String getViewMessage(View v, int marginOffset) { + String repeated = new String(new char[marginOffset]).replace("\0", " "); + try { + String resourceId = v.getResources() != null + ? (v.getId() > 0 ? v.getResources().getResourceName(v.getId()) : "no_id") + : "no_resources"; + return repeated + "[" + v.getClass().getSimpleName() + "] " + resourceId + " (" + + (v.getVisibility() == View.VISIBLE ? "Vis" : "Inv") + ")\n"; + } catch (Exception e) { + return repeated + "[" + v.getClass().getSimpleName() + "] name_not_found\n"; + } + } + + ListMenu buildListMenu() { + ModelList listItems = new ModelList(); + listItems.add(buildMenuListItem(R.string.bookmark_item_select, 0, 0)); + listItems.add(buildMenuListItem(R.string.bookmark_item_delete, 0, 0)); + listItems.add(buildMenuListItem(R.string.bookmark_item_edit, 0, 0)); + listItems.add(buildMenuListItem(R.string.bookmark_item_move, 0, 0)); + + ListMenu.Delegate delegate = item -> {}; + return new BasicListMenu(mActivityTestRule.getActivity(), listItems, delegate); + } + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testNormal() throws IOException { + mRenderTestRule.render(mContentView, "normal"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testSelected() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { mImprovedBookmarkRow.setIsSelected(true); }); + mRenderTestRule.render(mContentView, "selected"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testNormal_withAccessoryView() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { + ShoppingAccessoryView v = + ShoppingAccessoryView.buildView(mActivityTestRule.getActivity()); + v.setPriceTracked(true, true); + v.setPriceInformation(100L, "$100", 50L, "$50"); + if (mUseVisualRowLayout) mImprovedBookmarkRow.setAccessoryView(v); + }); + mRenderTestRule.render(mContentView, "normal_with_accessory"); + } +}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryViewRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryViewRenderTest.java new file mode 100644 index 0000000..3999180 --- /dev/null +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/bookmarks/ShoppingAccessoryViewRenderTest.java
@@ -0,0 +1,142 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import android.graphics.Color; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +import androidx.test.filters.MediumTest; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +import org.chromium.base.test.BaseActivityTestRule; +import org.chromium.base.test.params.ParameterAnnotations; +import org.chromium.base.test.params.ParameterAnnotations.ClassParameter; +import org.chromium.base.test.params.ParameterSet; +import org.chromium.base.test.params.ParameterizedRunner; +import org.chromium.base.test.util.Batch; +import org.chromium.base.test.util.Feature; +import org.chromium.chrome.R; +import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; +import org.chromium.chrome.test.util.ChromeRenderTestRule; +import org.chromium.chrome.test.util.browser.Features; +import org.chromium.content_public.browser.test.util.TestThreadUtils; +import org.chromium.ui.test.util.BlankUiTestActivity; +import org.chromium.ui.test.util.DisableAnimationsTestRule; +import org.chromium.ui.test.util.NightModeTestUtils; +import org.chromium.ui.test.util.NightModeTestUtils.NightModeParams; + +import java.io.IOException; +import java.util.List; + +/** + * Render tests for the improved bookmark row. + */ +@RunWith(ParameterizedRunner.class) +@ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) +@Batch(Batch.PER_CLASS) +public class ShoppingAccessoryViewRenderTest { + @ClassParameter + private static List<ParameterSet> sClassParams = new NightModeParams().getParameters(); + + @Rule + public final DisableAnimationsTestRule mDisableAnimationsRule = new DisableAnimationsTestRule(); + + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Rule + public BaseActivityTestRule<BlankUiTestActivity> mActivityTestRule = + new BaseActivityTestRule<>(BlankUiTestActivity.class); + + @Rule + public ChromeRenderTestRule mRenderTestRule = + ChromeRenderTestRule.Builder.withPublicCorpus() + .setBugComponent(ChromeRenderTestRule.Component.UI_BROWSER_BOOKMARKS) + .build(); + + @Rule + public TestRule mProcessor = new Features.JUnitProcessor(); + + private ShoppingAccessoryView mShoppingAccessoryView; + private LinearLayout mContentView; + + public ShoppingAccessoryViewRenderTest(boolean nightModeEnabled) { + // Sets a fake background color to make the screenshots easier to compare with bare eyes. + NightModeTestUtils.setUpNightModeForBlankUiTestActivity(nightModeEnabled); + mRenderTestRule.setNightModeEnabled(nightModeEnabled); + } + + @Before + public void setUp() throws Exception { + mActivityTestRule.launchActivity(null); + mActivityTestRule.getActivity().setTheme(R.style.Theme_BrowserUI_DayNight); + + TestThreadUtils.runOnUiThreadBlocking(() -> { + mContentView = new LinearLayout(mActivityTestRule.getActivity()); + mContentView.setBackgroundColor(Color.WHITE); + + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + mActivityTestRule.getActivity().setContentView(mContentView, params); + + mShoppingAccessoryView = + ShoppingAccessoryView.buildView(mActivityTestRule.getActivity()); + mContentView.addView(mShoppingAccessoryView); + }); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testNormal() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mShoppingAccessoryView.setPriceTracked(true, true); + mShoppingAccessoryView.setPriceInformation(10000L, "$100", 10000L, "$100"); + }); + mRenderTestRule.render(mContentView, "normal"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testNormal_noIcon() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mShoppingAccessoryView.setPriceTracked(true, false); + mShoppingAccessoryView.setPriceInformation(1999L, "$19.99", 1999L, "$19.99"); + }); + mRenderTestRule.render(mContentView, "normal_noIcon"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testPriceDrop() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mShoppingAccessoryView.setPriceTracked(true, true); + mShoppingAccessoryView.setPriceInformation(100L, "$100", 50L, "$50"); + }); + mRenderTestRule.render(mContentView, "priceDrop"); + } + + @Test + @MediumTest + @Feature({"RenderTest"}) + public void testPriceDrop_noIcon() throws IOException { + TestThreadUtils.runOnUiThreadBlocking(() -> { + mShoppingAccessoryView.setPriceTracked(true, false); + mShoppingAccessoryView.setPriceInformation(2999L, "$29.99", 1999L, "$19.99"); + }); + mRenderTestRule.render(mContentView, "priceDrop_noIcon"); + } +}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java index dc89536..0dcaa45 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/identity_disc/IdentityDiscControllerTest.java
@@ -16,7 +16,7 @@ import static org.hamcrest.Matchers.anyOf; import static org.hamcrest.Matchers.not; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import static org.chromium.ui.test.util.ViewUtils.waitForView; @@ -377,7 +377,7 @@ // If the button is tapped before native is initialized, the click shouldn't be recorded. identityDiscController.onClick(); - verifyZeroInteractions(mTracker); + verifyNoMoreInteractions(mTracker); } private void leaveNTP() {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalsTest.java index ba7509441..522285f 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxPedalsTest.java
@@ -441,27 +441,13 @@ checkPedalWasShown(OmniboxPedalType.VIEW_CHROME_HISTORY, /*expectShown=*/true); - if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(sActivityTestRule.getActivity())) { - // On the phone, the history setting page will be shown as a {@link Fragment}, but on - // the tablet, the history setting page will be shown as a native url. So we need to - // have a different way to verify if the history setting page is opened. - clickOnPedal(); - CriteriaHelper.pollUiThread(() -> { - Tab tab = sActivityTestRule.getActivity().getActivityTab(); - Criteria.checkThat(tab, Matchers.notNullValue()); - Criteria.checkThat(tab.getUrl().getSpec(), - Matchers.startsWith(UrlConstants.NATIVE_HISTORY_URL)); - }); - - histogramWatcher.assertExpected(); - return; - } - - HistoryActivity historyActivity = - clickOnPedalToSettings(HistoryActivity.class, OmniboxPedalType.VIEW_CHROME_HISTORY); - - // Make sure the history setting page was opened. - Assert.assertNotNull("Could not find the history activity", historyActivity); + clickOnPedal(); + CriteriaHelper.pollUiThread(() -> { + Tab tab = sActivityTestRule.getActivity().getActivityTab(); + Criteria.checkThat(tab, Matchers.notNullValue()); + Criteria.checkThat( + tab.getUrl().getSpec(), Matchers.startsWith(UrlConstants.HISTORY_URL)); + }); histogramWatcher.assertExpected(); }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImplUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImplUnitTest.java index b70b823..8e33e4c 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImplUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/app/omnibox/ActionChipsDelegateImplUnitTest.java
@@ -6,8 +6,10 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.robolectric.Shadows.shadowOf; @@ -24,6 +26,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @@ -37,18 +40,19 @@ import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragment; import org.chromium.chrome.browser.browserservices.intents.WebappConstants; import org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment; -import org.chromium.chrome.browser.history.HistoryActivity; import org.chromium.chrome.browser.history_clusters.HistoryClustersCoordinator; import org.chromium.chrome.browser.omnibox.suggestions.ActionChipsDelegate; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; import org.chromium.chrome.browser.settings.SettingsActivity; +import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; import org.chromium.components.browser_ui.site_settings.SiteSettings; import org.chromium.components.embedder_support.util.UrlConstants; @@ -57,6 +61,7 @@ import org.chromium.components.omnibox.action.OmniboxActionType; import org.chromium.components.omnibox.action.OmniboxPedal; import org.chromium.components.omnibox.action.OmniboxPedalType; +import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.Set; @@ -100,10 +105,12 @@ public @Rule MockitoRule mMockitoRule = MockitoJUnit.rule(); private @Mock HistoryClustersCoordinator mHistoryClustersCoordinator; + private @Mock Tab mTab; private ShadowActivity mShadowActivity; private ShadowLooper mShadowLooper; private OneshotSupplierImpl<HistoryClustersCoordinator> mHistoryClustersCoordinatorSupplier; + private ObservableSupplierImpl<Tab> mTabSupplier; private ActionChipsDelegate mDelegate; @Before @@ -113,9 +120,10 @@ mShadowLooper = ShadowLooper.shadowMainLooper(); mHistoryClustersCoordinatorSupplier = new OneshotSupplierImpl<>(); + mTabSupplier = new ObservableSupplierImpl<>(); - mDelegate = - new ActionChipsDelegateImpl(activity, mHistoryClustersCoordinatorSupplier, null); + mDelegate = new ActionChipsDelegateImpl( + activity, mHistoryClustersCoordinatorSupplier, null, mTabSupplier); } @After @@ -238,13 +246,27 @@ mDelegate.execute(buildPedal(OmniboxPedalType.VIEW_CHROME_HISTORY)); var intent = mShadowActivity.getNextStartedActivity(); - assertEquals(HistoryActivity.class.getName(), intent.getComponent().getClassName()); - assertFalse(intent.getBooleanExtra(IntentHandler.EXTRA_INCOGNITO_MODE, true)); - + assertEquals(Intent.ACTION_VIEW, intent.getAction()); + assertEquals(UrlConstants.HISTORY_URL, intent.getDataString()); + assertTrue( + intent.getBooleanExtra(WebappConstants.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, false)); checkOmniboxPedalUsageRecorded(OmniboxPedalType.VIEW_CHROME_HISTORY); } @Test + public void executePedal_viewChromeHistory_fromTabbedActivity() { + mTabSupplier.set(mTab); + mDelegate.execute(buildPedal(OmniboxPedalType.VIEW_CHROME_HISTORY)); + + var loadParamsCaptor = ArgumentCaptor.forClass(LoadUrlParams.class); + verify(mTab, times(1)).loadUrl(loadParamsCaptor.capture()); + + var loadUrlParams = loadParamsCaptor.getValue(); + assertNotNull(loadUrlParams); + assertEquals(UrlConstants.HISTORY_URL, loadUrlParams.getUrl()); + } + + @Test public void executePedal_playChromeDinoGame_fromCustomActivity() { mDelegate.execute(buildPedal(OmniboxPedalType.PLAY_CHROME_DINO_GAME));
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePromptTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePromptTest.java index aab8852..60dfa00 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePromptTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/SaveUpdateAddressProfilePromptTest.java
@@ -4,7 +4,7 @@ package org.chromium.chrome.browser.autofill; -import static org.mockito.ArgumentMatchers.anyObject; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -123,11 +123,9 @@ mModalDialogManager.clickPositiveButton(); Assert.assertNull(mModalDialogManager.getShownDialogModel()); verify(mPromptControllerJni, times(1)) - .onUserAccepted( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onUserAccepted(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); verify(mPromptControllerJni, times(1)) - .onPromptDismissed( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onPromptDismissed(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); } @Test @@ -139,11 +137,9 @@ mModalDialogManager.clickNegativeButton(); Assert.assertNull(mModalDialogManager.getShownDialogModel()); verify(mPromptControllerJni, times(1)) - .onUserDeclined( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onUserDeclined(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); verify(mPromptControllerJni, times(1)) - .onPromptDismissed( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onPromptDismissed(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); } @Test @@ -156,8 +152,7 @@ Assert.assertNull(mModalDialogManager.getShownDialogModel()); // Check that callback was still called when the dialog is dismissed. verify(mPromptControllerJni, times(1)) - .onPromptDismissed( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onPromptDismissed(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); } @Test @@ -298,13 +293,12 @@ View dialog = mPrompt.getDialogViewForTesting(); ImageButton editButton = dialog.findViewById(R.id.edit_button); editButton.performClick(); - verify(mAddressEditor).edit(anyObject(), mCallbackCaptor.capture(), anyObject()); + verify(mAddressEditor).edit(any(), mCallbackCaptor.capture(), any()); AutofillAddress autofillAddress = new AutofillAddress(mActivity, new AutofillProfile()); mCallbackCaptor.getValue().onResult(autofillAddress); Assert.assertNull(mModalDialogManager.getShownDialogModel()); verify(mPromptControllerJni, times(1)) - .onPromptDismissed( - eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), anyObject()); + .onPromptDismissed(eq(NATIVE_SAVE_UPDATE_ADDRESS_PROFILE_PROMPT_CONTROLLER), any()); } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java new file mode 100644 index 0000000..50d1f87 --- /dev/null +++ b/chrome/android/junit/src/org/chromium/chrome/browser/bookmarks/ImprovedBookmarkRowTest.java
@@ -0,0 +1,141 @@ +// Copyright 2023 The Chromium Authors +// 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.bookmarks; + +import android.app.Activity; +import android.graphics.drawable.Drawable; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.test.ext.junit.rules.ActivityScenarioRule; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.annotation.Config; + +import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.Batch; +import org.chromium.chrome.R; +import org.chromium.components.browser_ui.widget.listmenu.ListMenu; +import org.chromium.ui.base.TestActivity; +import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.ui.modelutil.PropertyModelChangeProcessor; + +/** Unit tests for {@link BookmarkToolbarMediator}. */ +@Batch(Batch.UNIT_TESTS) +@RunWith(BaseRobolectricTestRunner.class) +@Config(manifest = Config.NONE) +public class ImprovedBookmarkRowTest { + private static final String TITLE = "Test title"; + private static final String DESCRIPTION = "Test description"; + + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Rule + public ActivityScenarioRule<TestActivity> mActivityScenarioRule = + new ActivityScenarioRule<>(TestActivity.class); + + @Mock + Drawable mIcon; + @Mock + View mAccessoryView; + @Mock + ListMenu mListMenu; + @Mock + Runnable mPopupListener; + @Mock + Runnable mOpenBookmarkCallback; + + Activity mActivity; + ImprovedBookmarkRow mImprovedBookmarkRow; + PropertyModel mModel; + + @Before + public void setUp() { + mActivityScenarioRule.getScenario().onActivity((activity) -> mActivity = activity); + + mImprovedBookmarkRow = ImprovedBookmarkRow.buildView(mActivity, /*isVisual=*/true); + mModel = new PropertyModel.Builder(ImprovedBookmarkRowProperties.ALL_KEYS) + .with(ImprovedBookmarkRowProperties.TITLE, TITLE) + .with(ImprovedBookmarkRowProperties.DESCRIPTION, DESCRIPTION) + .with(ImprovedBookmarkRowProperties.ICON, mIcon) + .with(ImprovedBookmarkRowProperties.ACCESSORY_VIEW, mAccessoryView) + .with(ImprovedBookmarkRowProperties.LIST_MENU, mListMenu) + .with(ImprovedBookmarkRowProperties.POPUP_LISTENER, mPopupListener) + .with(ImprovedBookmarkRowProperties.OPEN_BOOKMARK_CALLBACK, + mOpenBookmarkCallback) + .with(ImprovedBookmarkRowProperties.EDITABLE, true) + .build(); + + PropertyModelChangeProcessor.create( + mModel, mImprovedBookmarkRow, ImprovedBookmarkRowViewBinder::bind); + } + + @Test + public void testTitleAndDescription() { + Assert.assertEquals( + TITLE, ((TextView) mImprovedBookmarkRow.findViewById(R.id.title)).getText()); + Assert.assertEquals(DESCRIPTION, + ((TextView) mImprovedBookmarkRow.findViewById(R.id.description)).getText()); + } + + @Test + public void testNullAccessoryViewClearsExistingViews() { + TextView tv = new TextView(mActivity); + mModel.set(ImprovedBookmarkRowProperties.ACCESSORY_VIEW, tv); + Assert.assertEquals(0, + ((ViewGroup) mImprovedBookmarkRow.findViewById(R.id.custom_content_container)) + .indexOfChild(tv)); + + mModel.set(ImprovedBookmarkRowProperties.ACCESSORY_VIEW, null); + Assert.assertEquals(-1, + ((ViewGroup) mImprovedBookmarkRow.findViewById(R.id.custom_content_container)) + .indexOfChild(tv)); + } + + @Test + public void testSelectedShowsCheck() { + mModel.set(ImprovedBookmarkRowProperties.SELECTED, true); + Assert.assertEquals( + View.VISIBLE, mImprovedBookmarkRow.findViewById(R.id.check_image).getVisibility()); + Assert.assertEquals( + View.GONE, mImprovedBookmarkRow.findViewById(R.id.more).getVisibility()); + } + + @Test + public void testUnselectedShowsMore() { + mModel.set(ImprovedBookmarkRowProperties.SELECTED, false); + Assert.assertEquals( + View.GONE, mImprovedBookmarkRow.findViewById(R.id.check_image).getVisibility()); + Assert.assertEquals( + View.VISIBLE, mImprovedBookmarkRow.findViewById(R.id.more).getVisibility()); + } + + @Test + public void testSelectionActive() { + mModel.set(ImprovedBookmarkRowProperties.SELECTION_ACTIVE, true); + Assert.assertFalse(mImprovedBookmarkRow.findViewById(R.id.more).isClickable()); + Assert.assertFalse(mImprovedBookmarkRow.findViewById(R.id.more).isEnabled()); + Assert.assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO, + mImprovedBookmarkRow.findViewById(R.id.more).getImportantForAccessibility()); + } + + @Test + public void testSelectionInactive() { + mModel.set(ImprovedBookmarkRowProperties.SELECTION_ACTIVE, false); + Assert.assertTrue(mImprovedBookmarkRow.findViewById(R.id.more).isClickable()); + Assert.assertTrue(mImprovedBookmarkRow.findViewById(R.id.more).isEnabled()); + Assert.assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, + mImprovedBookmarkRow.findViewById(R.id.more).getImportantForAccessibility()); + } +}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java index 686d55b..7e4dea3 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/feed/FeedSurfaceMediatorTest.java
@@ -53,9 +53,9 @@ import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger; -import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.StreamType; import org.chromium.chrome.browser.xsurface.HybridListRenderer; import org.chromium.chrome.browser.xsurface.ListLayoutHelper; +import org.chromium.chrome.browser.xsurface.feed.StreamType; import org.chromium.chrome.test.util.browser.Features; import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.components.feed.proto.wire.ReliabilityLoggingEnums.DiscoverLaunchResult;
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/share/ShareDelegateImplUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/share/ShareDelegateImplUnitTest.java index f03525f..8c83567 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/share/ShareDelegateImplUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/share/ShareDelegateImplUnitTest.java
@@ -5,6 +5,7 @@ package org.chromium.chrome.browser.share; import android.app.Activity; +import android.net.Uri; import androidx.annotation.NonNull; import androidx.core.os.BuildCompat; @@ -27,6 +28,7 @@ import org.chromium.base.Callback; import org.chromium.base.supplier.Supplier; import org.chromium.base.test.BaseRobolectricTestRunner; +import org.chromium.base.test.util.HistogramWatcher; import org.chromium.base.test.util.JniMocker; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.AppHooksImpl; @@ -34,7 +36,9 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.share.ChromeShareExtras.DetailedContentType; import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; +import org.chromium.chrome.browser.share.ShareDelegateImpl.ShareContentType; import org.chromium.chrome.browser.share.ShareDelegateImpl.ShareSheetDelegate; import org.chromium.chrome.browser.share.ShareDelegateImplUnitTest.ShadowAndroidShareSheetController; import org.chromium.chrome.browser.share.ShareDelegateImplUnitTest.ShadowBuildCompatForU; @@ -52,8 +56,12 @@ import org.chromium.components.favicon.LargeIconBridgeJni; import org.chromium.components.feature_engagement.Tracker; import org.chromium.ui.base.WindowAndroid; +import org.chromium.url.JUnitTestGURLs; +import org.chromium.url.ShadowGURL; import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; /** * Unit test for {@link ShareDelegateImpl} that mocked out most native class calls. @@ -120,12 +128,18 @@ public void shareWithSharingHub() { Assert.assertTrue("ShareHub not enabled.", mShareDelegate.isSharingHubEnabled()); + HistogramWatcher histogramWatcher = + HistogramWatcher.newBuilder() + .expectAnyRecord("Sharing.SharingHubAndroid.ShareContentType") + .expectAnyRecord("Sharing.SharingHubAndroid.Opened") + .build(); ShareParams shareParams = new ShareParams.Builder(mWindowAndroid, "", "").build(); ChromeShareExtras chromeShareExtras = new ChromeShareExtras.Builder().build(); mShareDelegate.share(shareParams, chromeShareExtras, ShareOrigin.OVERFLOW_MENU); Assert.assertTrue("ShareSheetCoordinator not used.", ShadowShareSheetCoordinator.sChromeShareSheetShowed); + histogramWatcher.assertExpected(); } @Test @@ -133,6 +147,11 @@ public void shareLastUsedComponent() { Assert.assertTrue("ShareHub not enabled.", mShareDelegate.isSharingHubEnabled()); + HistogramWatcher histogramWatcher = + HistogramWatcher.newBuilder() + .expectNoRecords("Sharing.SharingHubAndroid.ShareContentType") + .expectNoRecords("Sharing.SharingHubAndroid.Opened") + .build(); ShareParams shareParams = new ShareParams.Builder(mWindowAndroid, "", "").build(); ChromeShareExtras chromeShareExtras = new ChromeShareExtras.Builder().setShareDirectly(true).build(); @@ -142,6 +161,7 @@ ShadowShareSheetCoordinator.sChromeShareSheetShowed); Assert.assertTrue("ShareWithLastUsedComponentCalled not called.", ShadowShareHelper.sShareWithLastUsedComponentCalled); + histogramWatcher.assertExpected(); } @Test @@ -149,6 +169,12 @@ ShadowBuildCompatForU.sIsAtLeastU = true; Assert.assertFalse("ShareHub enabled.", mShareDelegate.isSharingHubEnabled()); + HistogramWatcher histogramWatcher = + HistogramWatcher.newBuilder() + .expectAnyRecord("Sharing.DefaultSharesheetAndroid.ShareContentType") + .expectAnyRecord("Sharing.DefaultSharesheetAndroid.Opened") + .build(); + ShareParams shareParams = new ShareParams.Builder(mWindowAndroid, "", "").build(); ChromeShareExtras chromeShareExtras = new ChromeShareExtras.Builder().build(); mShareDelegate.share(shareParams, chromeShareExtras, ShareOrigin.OVERFLOW_MENU); @@ -157,6 +183,7 @@ ShadowShareSheetCoordinator.sChromeShareSheetShowed); Assert.assertTrue("shareWithSystemShareSheetUi not called.", ShadowAndroidShareSheetController.sShareWithSystemShareSheetUiCalled); + histogramWatcher.assertExpected(); } @Test @@ -164,6 +191,132 @@ Assert.assertTrue("ShareHub should be enabled T-.", mShareDelegate.isSharingHubEnabled()); } + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_link() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", JUnitTestGURLs.EXAMPLE_URL) + .setBypassFixingDomDistillerUrl(true) + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.LINK.", ShareContentType.LINK, + ShareDelegateImpl.getShareContentType(params, extras)); + + params = new ShareParams.Builder(mWindowAndroid, "title", JUnitTestGURLs.EXAMPLE_URL) + .setPreviewImageUri(Uri.parse("content://path/to/preview")) + .setBypassFixingDomDistillerUrl(true) + .build(); + extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals( + "Title and preview does not impact types. Expected ShareContentType.LINK.", + ShareContentType.LINK, ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_linkWithText() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", JUnitTestGURLs.EXAMPLE_URL) + .setBypassFixingDomDistillerUrl(true) + .setText("text") + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.TEXT_WITH_LINK.", + ShareContentType.TEXT_WITH_LINK, + ShareDelegateImpl.getShareContentType(params, extras)); + + params = new ShareParams.Builder(mWindowAndroid, "", JUnitTestGURLs.TEXT_FRAGMENT_URL) + .setBypassFixingDomDistillerUrl(true) + .setText("text") + .setLinkToTextSuccessful(true) + .build(); + extras = new ChromeShareExtras.Builder() + .setDetailedContentType(DetailedContentType.HIGHLIGHTED_TEXT) + .build(); + Assert.assertEquals("Expected ShareContentType.TEXT_WITH_LINK.", + ShareContentType.TEXT_WITH_LINK, + ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_Image() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", "") + .setBypassFixingDomDistillerUrl(true) + .setSingleImageUri(Uri.parse("content://path/to/image1")) + .setFileContentType("image/png") + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.IMAGE.", ShareContentType.IMAGE, + ShareDelegateImpl.getShareContentType(params, extras)); + + // Multiple image should be the same. + params = new ShareParams.Builder(mWindowAndroid, "", "") + .setBypassFixingDomDistillerUrl(true) + .setFileUris(new ArrayList<>(List.of(Uri.parse("content://path/to/image1"), + Uri.parse("content://path/to/image2")))) + .setLinkToTextSuccessful(true) + .setFileContentType("image/png") + .build(); + extras = new ChromeShareExtras.Builder() + .setDetailedContentType(DetailedContentType.HIGHLIGHTED_TEXT) + .build(); + Assert.assertEquals("Expected ShareContentType.IMAGE.", ShareContentType.IMAGE, + ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_imageWithLink() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", JUnitTestGURLs.EXAMPLE_URL) + .setBypassFixingDomDistillerUrl(true) + .setSingleImageUri(Uri.parse("content://path/to/image1")) + .setFileContentType("image/png") + .setText("text") // text is ignored. + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.IMAGE_WITH_LINK.", + ShareContentType.IMAGE_WITH_LINK, + ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_files() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", JUnitTestGURLs.EXAMPLE_URL) + .setBypassFixingDomDistillerUrl(true) + .setSingleImageUri(Uri.parse("content://path/to/video1")) + .setFileContentType("video/mp4") + .setText("text") // text is ignored. + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.FILES.", ShareContentType.FILES, + ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_text() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", "") + .setBypassFixingDomDistillerUrl(true) + .setPreviewImageUri(Uri.parse( + "content://path/to/preview")) // preview is ignored. + .setText("text") + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.TEXT.", ShareContentType.TEXT, + ShareDelegateImpl.getShareContentType(params, extras)); + } + + @Test + @Config(shadows = ShadowGURL.class) + public void testGetShareContentType_unknown() { + ShareParams params = new ShareParams.Builder(mWindowAndroid, "", "") + .setBypassFixingDomDistillerUrl(true) + .build(); + ChromeShareExtras extras = new ChromeShareExtras.Builder().build(); + Assert.assertEquals("Expected ShareContentType.UNKNOWN.", ShareContentType.UNKNOWN, + ShareDelegateImpl.getShareContentType(params, extras)); + } + @Implements(ShareHelper.class) static class ShadowShareHelper { static boolean sShareWithLastUsedComponentCalled;
diff --git a/chrome/android/modules/chrome_bundle_tmpl.gni b/chrome/android/modules/chrome_bundle_tmpl.gni index 1d18e0c8..40f565c 100644 --- a/chrome/android/modules/chrome_bundle_tmpl.gni +++ b/chrome/android/modules/chrome_bundle_tmpl.gni
@@ -185,6 +185,7 @@ [ "add_view_trace_events", "base_module_target", + "baseline_profile_path", "bundle_name", "compress_shared_libraries", "enable_lint",
diff --git a/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py b/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py index 1c65e4cb..32b0869 100644 --- a/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py +++ b/chrome/android/monochrome/scripts/monochrome_apk_checker_test.py
@@ -32,6 +32,8 @@ r'res/.*-v1\d/.*\.xml', r'res/.*-v2[0-3]/.*\.xml', r'META-INF/.*', + r'assets/dexopt/baseline.prof', + r'assets/dexopt/baseline.profm', r'assets/metaresources.arsc', r'assets/AndroidManifest.xml')
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index adea353..66179457 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -7484,6 +7484,9 @@ <message name="IDS_ACCNAME_SIDE_PANEL_SELECTOR" is_accessibility_with_no_ui="true" desc="Screen reader announcement when the side panel header combobox is focused."> Side Panel Selector </message> + <message name="IDS_SIDE_PANEL_COMPANION_TITLE" desc="The name of the companion feature in the side panel combo box."> + Google + </message> <message name="IDS_SIDE_PANEL_CUSTOMIZE_CHROME_TITLE" desc="The name of the Customize Chrome feature in the side panel combo box."> Customize Chrome </message> @@ -14152,12 +14155,18 @@ <message name="IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION" desc="Description shown in the Android message when the account tailored security setting changes for a consented primary account"> You’re on Chrome’s strongest security </message> + <message name="IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED" desc="Description shown in the Android message when the account tailored security setting changes for a consented primary account"> + You have Chrome’s strongest security against harmful websites + </message> <message name="IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_TITLE" desc="Title shown in the Android message when the account tailored security setting changes for a consented primary account"> Enhanced Safe Browsing is off </message> <message name="IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION" desc="Description shown in the Android message when the account tailored security setting changes for a consented primary account"> You’re getting standard protection </message> + <message name="IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED" desc="Description shown in the Android message when the account tailored security setting changes for a consented primary account"> + You’re getting standard security protection for this Chrome profile + </message> <message name="IDS_TAILORED_SECURITY_CONSENTED_MESSAGE_OK_BUTTON" desc="The text on the ok button in the Android message when the account tailored security setting changes for a consented primary account"> OK </message>
diff --git a/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1 b/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1 new file mode 100644 index 0000000..c64c0c3 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1
@@ -0,0 +1 @@ +b378647903e9b0c19714efa6ceb56ca3e6e41b0d \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1 b/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1 new file mode 100644 index 0000000..3abc57d --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED.png.sha1
@@ -0,0 +1 @@ +64fe53ea91c970f334f9bc9aa24d3e8035c6df32 \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 1084b3a..9a7b1700 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -3883,6 +3883,8 @@ "new_tab_page/modules/drive/drive_service_factory.h", "new_tab_page/modules/feed/feed_handler.cc", "new_tab_page/modules/feed/feed_handler.h", + "new_tab_page/modules/history_clusters/cart/cart_processor.cc", + "new_tab_page/modules/history_clusters/cart/cart_processor.h", "new_tab_page/modules/history_clusters/history_clusters_page_handler.cc", "new_tab_page/modules/history_clusters/history_clusters_page_handler.h", "new_tab_page/modules/modules_switches.cc", @@ -4367,6 +4369,7 @@ "//chrome/browser/new_tab_page/modules/drive:mojo_bindings", "//chrome/browser/new_tab_page/modules/feed:mojo_bindings", "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings", + "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings", "//chrome/browser/new_tab_page/modules/photos:mojo_bindings", "//chrome/browser/new_tab_page/modules/recipes:mojo_bindings", "//chrome/browser/new_tab_page/modules/safe_browsing:mojo_bindings",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index fd90aee..2cbb850f 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -2022,7 +2022,7 @@ const FeatureEntry::FeatureVariation kCodeBasedRBDVariations[] = { {"code-based RBD", kCodeBasedRBDEnabled, std::size(kCodeBasedRBDEnabled), - nullptr}, + "t3362898"}, }; // The following is Merchant wide promotion variation. @@ -2937,6 +2937,7 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) constexpr char kBorealisBigGlInternalName[] = "borealis-big-gl"; +constexpr char kBorealisDGPUInternalName[] = "borealis-dgpu"; constexpr char kBorealisDiskManagementInternalName[] = "borealis-disk-management"; constexpr char kBorealisForceBetaClientInternalName[] = @@ -6927,10 +6928,6 @@ kOsAndroid, FEATURE_VALUE_TYPE(switches::kGaiaIdCacheInAccountManagerFacade)}, - {"gainmap-hdr-images", flag_descriptions::kGainmapHdrImagesName, - flag_descriptions::kGainmapHdrImagesDescription, kOsAll, - FEATURE_VALUE_TYPE(blink::features::kGainmapHdrImages)}, - {"tangible-sync", flag_descriptions::kTangibleSyncName, flag_descriptions::kTangibleSyncDescription, kOsAndroid, FEATURE_WITH_PARAMS_VALUE_TYPE(switches::kTangibleSync, @@ -6943,6 +6940,10 @@ FEATURE_VALUE_TYPE(switches::kIdentityStatusConsistency)}, #endif // BUILDFLAG(IS_ANDROID) + {"gainmap-hdr-images", flag_descriptions::kGainmapHdrImagesName, + flag_descriptions::kGainmapHdrImagesDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kGainmapHdrImages)}, + {"autofill-use-improved-label-disambiguation", flag_descriptions::kAutofillUseImprovedLabelDisambiguationName, flag_descriptions::kAutofillUseImprovedLabelDisambiguationDescription, @@ -8650,6 +8651,9 @@ {kBorealisBigGlInternalName, flag_descriptions::kBorealisBigGlName, flag_descriptions::kBorealisBigGlDescription, kOsCrOS, FEATURE_VALUE_TYPE(ash::features::kBorealisBigGl)}, + {kBorealisDGPUInternalName, flag_descriptions::kBorealisDGPUName, + flag_descriptions::kBorealisDGPUDescription, kOsCrOS, + FEATURE_VALUE_TYPE(ash::features::kBorealisDGPU)}, {kBorealisDiskManagementInternalName, flag_descriptions::kBorealisDiskManagementName, flag_descriptions::kBorealisDiskManagementDescription, kOsCrOS, @@ -10180,6 +10184,10 @@ return !base::FeatureList::IsEnabled(features::kBorealis); } + if (!strcmp(kBorealisDGPUInternalName, entry.internal_name)) { + return !base::FeatureList::IsEnabled(features::kBorealis); + } + if (!strcmp(kBorealisDiskManagementInternalName, entry.internal_name)) { return !base::FeatureList::IsEnabled(features::kBorealis); }
diff --git a/chrome/browser/ash/app_list/search/files/file_result.cc b/chrome/browser/ash/app_list/search/files/file_result.cc index 2363bcb..4921a18 100644 --- a/chrome/browser/ash/app_list/search/files/file_result.cc +++ b/chrome/browser/ash/app_list/search/files/file_result.cc
@@ -8,7 +8,6 @@ #include <utility> #include <vector> -#include "ash/constants/ash_features.h" #include "ash/public/cpp/app_list/app_list_types.h" #include "ash/public/cpp/style/dark_light_mode_controller.h" #include "base/files/file.h" @@ -250,24 +249,13 @@ } void FileResult::UpdateIcon() { - // Launcher search results UI is dark by default, so use icons for dark - // background if dark/light mode feature is not enabled. - const bool is_dark_light_enabled = ash::features::IsDarkLightModeEnabled(); // DarkLightModeController might be nullptr in tests. auto* dark_light_mode_controller = ash::DarkLightModeController::Get(); - const bool is_dark_mode_enabled = - dark_light_mode_controller && - dark_light_mode_controller->IsDarkModeEnabled(); - const bool dark_background = !is_dark_light_enabled || is_dark_mode_enabled; + const bool dark_background = dark_light_mode_controller && + dark_light_mode_controller->IsDarkModeEnabled(); if (display_type() == DisplayType::kContinue) { - // For Continue Section, if dark/light mode is disabled, we should use the - // icon and not the chip icon with a dark background as default. - const gfx::ImageSkia chip_icon = - is_dark_light_enabled - ? chromeos::GetChipIconForPath(filepath_, dark_background) - : chromeos::GetIconForPath(filepath_, /*dark_background=*/true); - SetChipIcon(chip_icon); + SetChipIcon(chromeos::GetChipIconForPath(filepath_, dark_background)); } else { switch (type_) { case Type::kFile:
diff --git a/chrome/browser/ash/arc/bluetooth/arc_floss_bridge.cc b/chrome/browser/ash/arc/bluetooth/arc_floss_bridge.cc index 4184f85c..c3f0ffcf 100644 --- a/chrome/browser/ash/arc/bluetooth/arc_floss_bridge.cc +++ b/chrome/browser/ash/arc/bluetooth/arc_floss_bridge.cc
@@ -45,7 +45,9 @@ } void ArcFlossBridge::HandlePoweredOn() { - floss::FlossDBusManager::Get()->GetAdapterClient()->AddObserver(this); + if (!floss::FlossDBusManager::Get()->GetAdapterClient()->HasObserver(this)) { + floss::FlossDBusManager::Get()->GetAdapterClient()->AddObserver(this); + } } void ArcFlossBridge::OnSdpSearchResult(mojom::BluetoothAddressPtr remote_addr,
diff --git a/chrome/browser/ash/borealis/borealis_task.cc b/chrome/browser/ash/borealis/borealis_task.cc index 7f09c13..da8f905 100644 --- a/chrome/browser/ash/borealis/borealis_task.cc +++ b/chrome/browser/ash/borealis/borealis_task.cc
@@ -254,6 +254,9 @@ if (base::FeatureList::IsEnabled(ash::features::kBorealisStorageBallooning)) { request.set_storage_ballooning(true); } + if (base::FeatureList::IsEnabled(ash::features::kBorealisDGPU)) { + request.set_enable_dgpu_passthrough(true); + } vm_tools::concierge::DiskImage* disk_image = request.add_disks(); disk_image->set_path(context->disk_path().AsUTF8Unsafe());
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc index 3668565..03aaa08 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -3134,8 +3134,12 @@ CHECK(base::Contains(swa_web_contents_, *app_id)) << "Couldn't find the SWA WebContents for appId: " << *app_id; web_contents = swa_web_contents_[*app_id]; - SimulateMouseClickAt(web_contents, 0 /* modifiers */, - blink::WebMouseEvent::Button::kLeft, + + absl::optional<bool> leftClick = value.FindBool("leftClick"); + ASSERT_TRUE(leftClick); + auto button = leftClick ? blink::WebMouseEvent::Button::kLeft + : blink::WebMouseEvent::Button::kRight; + SimulateMouseClickAt(web_contents, 0 /* modifiers */, button, gfx::Point(*click_x, *click_y)); return; }
diff --git a/chrome/browser/ash/input_method/ui/colors.cc b/chrome/browser/ash/input_method/ui/colors.cc index 0e5099e..c027d6c 100644 --- a/chrome/browser/ash/input_method/ui/colors.cc +++ b/chrome/browser/ash/input_method/ui/colors.cc
@@ -4,7 +4,6 @@ #include "chrome/browser/ash/input_method/ui/colors.h" -#include "ash/constants/ash_features.h" #include "ash/style/dark_light_mode_controller_impl.h" namespace ui { @@ -14,8 +13,7 @@ auto* dark_light_mode_controller = ash::DarkLightModeControllerImpl::Get(); if (!dark_light_mode_controller) return false; - return (ash::features::IsDarkLightModeEnabled() && - dark_light_mode_controller->IsDarkModeEnabled()); + return dark_light_mode_controller->IsDarkModeEnabled(); } SkColor ResolveSemanticColor(const cros_styles::ColorName& color_name) {
diff --git a/chrome/browser/ash/login/oobe_interactive_ui_test.cc b/chrome/browser/ash/login/oobe_interactive_ui_test.cc index dc13dd2..8c9cbda 100644 --- a/chrome/browser/ash/login/oobe_interactive_ui_test.cc +++ b/chrome/browser/ash/login/oobe_interactive_ui_test.cc
@@ -659,10 +659,7 @@ HandleGestureNavigationScreen(); } - if (features::IsDarkLightModeEnabled()) { - HandleThemeSelectionScreen(); - } - + HandleThemeSelectionScreen(); HandleMarketingOptInScreen(); } @@ -974,10 +971,7 @@ HandleAppDownloadingScreen(); } - if (features::IsDarkLightModeEnabled()) { - HandleThemeSelectionScreen(); - } - + HandleThemeSelectionScreen(); WaitForActiveSession(); }
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/BUILD.gn b/chrome/browser/ash/login/oobe_quick_start/connectivity/BUILD.gn index 2efae0bb..ff7ee96 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/BUILD.gn +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/BUILD.gn
@@ -22,8 +22,6 @@ "//url", ] sources = [ - "authenticated_connection.cc", - "authenticated_connection.h", "connection.cc", "connection.h", "fast_pair_advertiser.cc", @@ -80,7 +78,6 @@ "//url", ] sources = [ - "authenticated_connection_unittest.cc", "connection_unittest.cc", "fast_pair_advertiser_unittest.cc", "target_device_connection_broker_impl_unittest.cc",
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.cc deleted file mode 100644 index c0bac74..0000000 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.cc +++ /dev/null
@@ -1,163 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h" - -#include "base/functional/bind.h" -#include "base/functional/callback_helpers.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" -#include "chrome/browser/ash/login/oobe_quick_start/logging/logging.h" -#include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" -#include "chromeos/ash/components/quick_start/quick_start_message.h" -#include "chromeos/ash/components/quick_start/quick_start_requests.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom-shared.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom.h" - -namespace ash::quick_start { - -namespace { - -const char kNotifySourceOfUpdateMessageKey[] = "isForcedUpdateRequired"; - -} // namespace - -AuthenticatedConnection::AuthenticatedConnection( - NearbyConnection* nearby_connection, - mojo::SharedRemote<mojom::QuickStartDecoder> remote, - RandomSessionId session_id, - SharedSecret shared_secret, - base::OnceClosure on_connection_closed) - : Connection(nearby_connection, - session_id, - shared_secret, - std::move(on_connection_closed)) { - decoder_ = std::move(remote); -} - -AuthenticatedConnection::~AuthenticatedConnection() = default; - -void AuthenticatedConnection::RequestAccountTransferAssertion( - const std::string& challenge_b64url, - RequestAccountTransferAssertionCallback callback) { - auto parse_assertion_response = base::BindOnce( - &AuthenticatedConnection::OnRequestAccountTransferAssertionResponse, - weak_ptr_factory_.GetWeakPtr(), std::move(callback)); - - auto request_assertion = - base::IgnoreArgs<absl::optional<std::vector<uint8_t>>>(base::BindOnce( - &AuthenticatedConnection::SendMessage, weak_ptr_factory_.GetWeakPtr(), - requests::BuildAssertionRequestMessage(challenge_b64url), - std::move(parse_assertion_response))); - - // Set up a callback to call GetInfo, calling back into RequestAssertion (and - // ignoring the results of GetInfo) after the call succeeds. - auto get_info = - base::IgnoreArgs<absl::optional<std::vector<uint8_t>>>(base::BindOnce( - &AuthenticatedConnection::SendMessage, weak_ptr_factory_.GetWeakPtr(), - requests::BuildGetInfoRequestMessage(), - std::move(request_assertion))); - - // Call into SetBootstrapOptions, starting the chain of callbacks. - SendMessage(requests::BuildBootstrapOptionsRequest(), std::move(get_info)); -} - -void AuthenticatedConnection::NotifySourceOfUpdate() { - base::Value::Dict message_payload; - message_payload.Set(kNotifySourceOfUpdateMessageKey, true); - SendPayload(message_payload); -} - -void AuthenticatedConnection::RequestWifiCredentials( - int32_t session_id, - RequestWifiCredentialsCallback callback) { - // Build the Wifi Credential Request payload - std::string shared_secret_str(secondary_shared_secret_.begin(), - secondary_shared_secret_.end()); - SendMessage( - requests::BuildRequestWifiCredentialsMessage(session_id, - shared_secret_str), - base::BindOnce(&AuthenticatedConnection::OnRequestWifiCredentialsResponse, - weak_ptr_factory_.GetWeakPtr(), std::move(callback))); -} - -void AuthenticatedConnection::OnRequestWifiCredentialsResponse( - RequestWifiCredentialsCallback callback, - absl::optional<std::vector<uint8_t>> response_bytes) { - if (!response_bytes.has_value()) { - QS_LOG(ERROR) << "No response bytes received for wifi credentials request"; - std::move(callback).Run(absl::nullopt); - return; - } - - auto parse_mojo_response_callback = - base::BindOnce(&AuthenticatedConnection::ParseWifiCredentialsResponse, - weak_ptr_factory_.GetWeakPtr(), std::move(callback)); - - decoder_->DecodeWifiCredentialsResponse( - response_bytes.value(), std::move(parse_mojo_response_callback)); -} - -void AuthenticatedConnection::ParseWifiCredentialsResponse( - RequestWifiCredentialsCallback callback, - ::ash::quick_start::mojom::GetWifiCredentialsResponsePtr response) { - if (!response->is_credentials()) { - std::move(callback).Run(absl::nullopt); - return; - } - - WifiCredentials credentials; - credentials.ssid = response->get_credentials()->ssid; - credentials.password = response->get_credentials()->password; - credentials.is_hidden = response->get_credentials()->is_hidden; - credentials.security_type = response->get_credentials()->security_type; - std::move(callback).Run(std::move(credentials)); -} - -void AuthenticatedConnection::OnRequestAccountTransferAssertionResponse( - RequestAccountTransferAssertionCallback callback, - absl::optional<std::vector<uint8_t>> response_bytes) { - if (!response_bytes.has_value()) { - std::move(callback).Run(absl::nullopt); - return; - } - - auto parse_mojo_response_callback = - base::BindOnce(&AuthenticatedConnection::GenerateFidoAssertionInfo, - weak_ptr_factory_.GetWeakPtr(), std::move(callback)); - - decoder_->DecodeGetAssertionResponse(response_bytes.value(), - std::move(parse_mojo_response_callback)); -} - -void AuthenticatedConnection::GenerateFidoAssertionInfo( - RequestAccountTransferAssertionCallback callback, - ::ash::quick_start::mojom::GetAssertionResponsePtr response) { - mojom::GetAssertionResponse::GetAssertionStatus success = - mojom::GetAssertionResponse::GetAssertionStatus::kSuccess; - - if (response->status != success) { - std::move(callback).Run(absl::nullopt); - return; - } - - FidoAssertionInfo assertion_info; - assertion_info.email = response->email; - assertion_info.credential_id = response->credential_id; - assertion_info.authenticator_data = response->auth_data; - assertion_info.signature = response->signature; - - std::move(callback).Run(assertion_info); -} - -void AuthenticatedConnection::SendMessage( - std::unique_ptr<QuickStartMessage> message, - ConnectionResponseCallback callback) { - SendPayload(*message->GenerateEncodedMessage()); - nearby_connection_->Read(std::move(callback)); -} - -} // namespace ash::quick_start
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h deleted file mode 100644 index d4f6ccc..0000000 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h +++ /dev/null
@@ -1,83 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_ASH_LOGIN_OOBE_QUICK_START_CONNECTIVITY_AUTHENTICATED_CONNECTION_H_ -#define CHROME_BROWSER_ASH_LOGIN_OOBE_QUICK_START_CONNECTIVITY_AUTHENTICATED_CONNECTION_H_ - -#include <memory> -#include <vector> - -#include "base/functional/callback_forward.h" -#include "base/memory/weak_ptr.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" -#include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" -#include "chromeos/ash/components/quick_start/quick_start_message.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" -#include "mojo/public/cpp/bindings/shared_remote.h" -namespace ash::quick_start { - -// Represents a connection that's been authenticated by the shapes verification -// or QR code flow. -class AuthenticatedConnection : public Connection { - public: - using RequestAccountTransferAssertionCallback = - base::OnceCallback<void(absl::optional<FidoAssertionInfo>)>; - - using RequestWifiCredentialsCallback = - base::OnceCallback<void(absl::optional<WifiCredentials>)>; - - AuthenticatedConnection(NearbyConnection* nearby_connection, - mojo::SharedRemote<mojom::QuickStartDecoder> remote, - RandomSessionId session_id, - SharedSecret shared_secret, - base::OnceClosure on_connection_closed); - - AuthenticatedConnection(AuthenticatedConnection&) = delete; - AuthenticatedConnection& operator=(AuthenticatedConnection&) = delete; - ~AuthenticatedConnection() override; - - void RequestAccountTransferAssertion( - const std::string& challenge_b64url, - RequestAccountTransferAssertionCallback callback); - - void RequestWifiCredentials(int32_t session_id, - RequestWifiCredentialsCallback callback); - - void NotifySourceOfUpdate(); - - private: - using ConnectionResponseCallback = - base::OnceCallback<void(absl::optional<std::vector<uint8_t>>)>; - - // Parses a raw response and converts it to a WifiCredentialsResponse - void OnRequestWifiCredentialsResponse( - RequestWifiCredentialsCallback callback, - absl::optional<std::vector<uint8_t>> response_bytes); - - // Parses a raw AssertionResponse and converts it into a FidoAssertionInfo - void OnRequestAccountTransferAssertionResponse( - RequestAccountTransferAssertionCallback callback, - absl::optional<std::vector<uint8_t>> response_bytes); - - void ParseWifiCredentialsResponse( - RequestWifiCredentialsCallback callback, - ::ash::quick_start::mojom::GetWifiCredentialsResponsePtr response); - - void GenerateFidoAssertionInfo( - RequestAccountTransferAssertionCallback callback, - ::ash::quick_start::mojom::GetAssertionResponsePtr response); - - void SendMessage(std::unique_ptr<QuickStartMessage> message, - ConnectionResponseCallback callback); - mojo::SharedRemote<mojom::QuickStartDecoder> decoder_; - - base::WeakPtrFactory<AuthenticatedConnection> weak_ptr_factory_{this}; -}; - -} // namespace ash::quick_start - -#endif // CHROME_BROWSER_ASH_LOGIN_OOBE_QUICK_START_CONNECTIVITY_AUTHENTICATED_CONNECTION_H_
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection_unittest.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection_unittest.cc deleted file mode 100644 index 167063fa..0000000 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection_unittest.cc +++ /dev/null
@@ -1,296 +0,0 @@ -// Copyright 2022 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h" - -#include "base/base64.h" -#include "base/functional/bind.h" -#include "base/functional/callback_helpers.h" -#include "base/json/json_reader.h" -#include "base/run_loop.h" -#include "base/test/task_environment.h" -#include "base/test/test_future.h" -#include "base/values.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fake_quick_start_decoder.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" -#include "chrome/browser/nearby_sharing/fake_nearby_connection.h" -#include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" -#include "chromeos/ash/components/quick_start/quick_start_message.h" -#include "chromeos/ash/components/quick_start/quick_start_requests.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom-shared.h" -#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom.h" -#include "components/cbor/reader.h" -#include "components/cbor/values.h" -#include "content/public/test/browser_task_environment.h" -#include "fido_authentication_message_helper.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" -#include "url/origin.h" - -namespace ash::quick_start { -using ash::quick_start::requests::GenerateGetAssertionRequest; -using message_helper::BuildEncodedResponseData; - -using QuickStartMessage = ash::quick_start::QuickStartMessage; - -namespace { -const char kAccountRequirementKey[] = "accountRequirement"; -const char kFlowTypeKey[] = "flowType"; -const int kAccountRequirementSingle = 2; -const int kFlowTypeTargetChallenge = 2; - -const char kChallengeBase64Url[] = "testchallenge"; - -const std::vector<uint8_t> kTestBytes = {0x00, 0x01, 0x02}; -const std::vector<uint8_t> kExpectedGetInfoRequest = {0x04}; - -const char kNotifySourceOfUpdateMessageKey[] = "isForcedUpdateRequired"; -constexpr uint8_t kSuccess = 0x00; - -// 32 random bytes to use as the shared secret. -constexpr std::array<uint8_t, 32> kSharedSecret = { - 0x54, 0xbd, 0x40, 0xcf, 0x8a, 0x7c, 0x2f, 0x6a, 0xca, 0x15, 0x59, - 0xcf, 0xf3, 0xeb, 0x31, 0x08, 0x90, 0x73, 0xef, 0xda, 0x87, 0xd4, - 0x23, 0xc0, 0x55, 0xd5, 0x83, 0x5b, 0x04, 0x28, 0x49, 0xf2}; - -// 6 random bytes to use as the RandomSessionId. -constexpr std::array<uint8_t, 6> kRandomSessionId = {0x6b, 0xb3, 0x85, - 0x27, 0xbb, 0x28}; -} // namespace - -class AuthenticatedConnectionTest : public testing::Test { - public: - AuthenticatedConnectionTest() = default; - AuthenticatedConnectionTest(AuthenticatedConnectionTest&) = delete; - AuthenticatedConnectionTest& operator=(AuthenticatedConnectionTest&) = delete; - ~AuthenticatedConnectionTest() override = default; - - void SetUp() override { - // Since this test doesn't run in a sandbox, disable the sandbox checks - // on QuickStartMessage. Without this, the Message class will fail. - QuickStartMessage::DisableSandboxCheckForTesting(); - - fake_nearby_connection_ = std::make_unique<FakeNearbyConnection>(); - fake_quick_start_decoder_ = std::make_unique<FakeQuickStartDecoder>(); - NearbyConnection* nearby_connection = fake_nearby_connection_.get(); - authenticated_connection_ = std::make_unique<AuthenticatedConnection>( - nearby_connection, - mojo::SharedRemote<ash::quick_start::mojom::QuickStartDecoder>( - fake_quick_start_decoder_->GetRemote()), - session_id_, kSharedSecret, base::DoNothing()); - } - - void VerifyAssertionInfo(absl::optional<FidoAssertionInfo> assertion_info) { - ran_assertion_response_callback_ = true; - assertion_info_ = assertion_info; - } - - protected: - RandomSessionId session_id_ = RandomSessionId(kRandomSessionId); - base::test::SingleThreadTaskEnvironment task_environment_; - bool ran_assertion_response_callback_ = false; - std::unique_ptr<AuthenticatedConnection> authenticated_connection_; - std::unique_ptr<FakeNearbyConnection> fake_nearby_connection_; - std::unique_ptr<FakeQuickStartDecoder> fake_quick_start_decoder_; - absl::optional<FidoAssertionInfo> assertion_info_; -}; - -TEST_F(AuthenticatedConnectionTest, RequestWifiCredentials) { - // Random Session ID for testing - int32_t session_id = 1; - - fake_quick_start_decoder_->SetWifiCredentialsResponse( - mojom::GetWifiCredentialsResponse::NewCredentials( - mojom::WifiCredentials::New("ssid", mojom::WifiSecurityType::kPSK, - true, "password"))); - - base::test::TestFuture<absl::optional<WifiCredentials>> future; - - authenticated_connection_->RequestWifiCredentials(session_id, - future.GetCallback()); - - fake_nearby_connection_->AppendReadableData({0x00, 0x01, 0x02}); - std::vector<uint8_t> wifi_request = fake_nearby_connection_->GetWrittenData(); - std::string wifi_request_string(wifi_request.begin(), wifi_request.end()); - absl::optional<base::Value> parsed_wifi_request_json = - base::JSONReader::Read(wifi_request_string); - ASSERT_TRUE(parsed_wifi_request_json); - ASSERT_TRUE(parsed_wifi_request_json->is_dict()); - base::Value::Dict& written_wifi_credentials_request = - parsed_wifi_request_json.value().GetDict(); - - // Try to decode the payload written to Nearby Connections - std::string base64_encoded_payload = - *written_wifi_credentials_request.FindString("quickStartPayload"); - - absl::optional<std::vector<uint8_t>> parsed_payload = - base::Base64Decode(base64_encoded_payload); - - EXPECT_TRUE(parsed_payload.has_value()); - std::string parsed_payload_string(parsed_payload->begin(), - parsed_payload->end()); - - absl::optional<base::Value> parsed_wifi_request_payload_json = - base::JSONReader::Read(parsed_payload_string); - ASSERT_TRUE(parsed_wifi_request_payload_json); - ASSERT_TRUE(parsed_wifi_request_payload_json->is_dict()); - base::Value::Dict& wifi_request_payload = - parsed_wifi_request_payload_json.value().GetDict(); - - EXPECT_TRUE(wifi_request_payload.FindBool("request_wifi")); - EXPECT_EQ(wifi_request_payload.FindInt("SESSION_ID"), session_id); - - // TODO(b/234655072): Create kSecondarySharedSecret const and check value - // equals after AuthenticatedConnection refactor is merged. - EXPECT_TRUE(wifi_request_payload.FindString("shared_secret")); - - const absl::optional<WifiCredentials>& credentials = future.Get(); - EXPECT_TRUE(credentials.has_value()); - EXPECT_EQ(credentials->ssid, "ssid"); - EXPECT_EQ(credentials->password, "password"); - EXPECT_EQ(credentials->security_type, - ash::quick_start::mojom::WifiSecurityType::kPSK); - EXPECT_TRUE(credentials->is_hidden); -} - -TEST_F(AuthenticatedConnectionTest, - RequestWifiCredentialsReturnsEmptyOnFailure) { - // Random Session ID for testing - int32_t session_id = 1; - fake_quick_start_decoder_->SetWifiCredentialsResponse( - mojom::GetWifiCredentialsResponse::NewFailureReason( - mojom::GetWifiCredentialsFailureReason::kMissingWifiHiddenStatus)); - - base::test::TestFuture<absl::optional<WifiCredentials>> future; - - authenticated_connection_->RequestWifiCredentials(session_id, - future.GetCallback()); - - fake_nearby_connection_->AppendReadableData({0x00, 0x01, 0x02}); - - absl::optional<WifiCredentials> credentials = future.Get(); - EXPECT_FALSE(future.Get().has_value()); -} - -TEST_F(AuthenticatedConnectionTest, RequestAccountTransferAssertion) { - // Start the Quick Start account transfer flow by initially sending - // BootstrapOptions. - authenticated_connection_->RequestAccountTransferAssertion( - kChallengeBase64Url, - base::BindOnce(&AuthenticatedConnectionTest::VerifyAssertionInfo, - base::Unretained(this))); - - std::vector<uint8_t> bootstrap_options_data = - fake_nearby_connection_->GetWrittenData(); - std::unique_ptr<ash::quick_start::QuickStartMessage> - bootstrap_options_message = - ash::quick_start::QuickStartMessage::ReadMessage( - bootstrap_options_data, - QuickStartMessageType::kBootstrapConfigurations); - ASSERT_TRUE(bootstrap_options_message != nullptr); - base::Value::Dict& bootstrap_options = - *bootstrap_options_message->GetPayload(); - - // Verify that BootstrapOptions is written as expected. - EXPECT_EQ(*bootstrap_options.FindInt(kAccountRequirementKey), - kAccountRequirementSingle); - EXPECT_EQ(*bootstrap_options.FindInt(kFlowTypeKey), kFlowTypeTargetChallenge); - - // Emulate a BootstrapConfigurations response. - fake_nearby_connection_->AppendReadableData(kTestBytes); - - // OnBootstrapOptionsResponse should trigger a write of FIDO GetInfo - // request. - std::vector<uint8_t> fido_get_info_data = - fake_nearby_connection_->GetWrittenData(); - - std::unique_ptr<ash::quick_start::QuickStartMessage> fido_message = - ash::quick_start::QuickStartMessage::ReadMessage( - fido_get_info_data, QuickStartMessageType::kSecondDeviceAuthPayload); - ASSERT_TRUE(fido_message != nullptr); - - // Verify that FIDO GetInfo request is written as expected - base::Value::Dict* get_info_payload = fido_message->GetPayload(); - std::string get_info_message = *get_info_payload->FindString("fidoMessage"); - absl::optional<std::vector<uint8_t>> get_info_command = - base::Base64Decode(get_info_message); - EXPECT_TRUE(get_info_command); - EXPECT_EQ(*get_info_command, kExpectedGetInfoRequest); - - // Emulate a GetInfo response. - fake_nearby_connection_->AppendReadableData(kTestBytes); - - // OnFidoGetInfoResponse should trigger a write of FIDO GetAssertion - // request. - std::vector<uint8_t> fido_assertion_request_data = - fake_nearby_connection_->GetWrittenData(); - - std::unique_ptr<ash::quick_start::QuickStartMessage> assertion_message = - ash::quick_start::QuickStartMessage::ReadMessage( - fido_assertion_request_data, - QuickStartMessageType::kSecondDeviceAuthPayload); - - ASSERT_TRUE(assertion_message != nullptr); - - std::string get_assertion_message_payload = - *assertion_message->GetPayload()->FindString("fidoMessage"); - absl::optional<std::vector<uint8_t>> get_assertion_command = - base::Base64Decode(get_assertion_message_payload); - EXPECT_TRUE(get_assertion_command); - cbor::Value request = GenerateGetAssertionRequest(kChallengeBase64Url); - std::vector<uint8_t> cbor_encoded_request = - requests::CBOREncodeGetAssertionRequest(std::move(request)); - EXPECT_EQ(*get_assertion_command, cbor_encoded_request); - - // Emulate a GetAssertion response. - std::vector<uint8_t> credential_id = {0x01, 0x02, 0x03}; - std::string expected_credential_id(credential_id.begin(), - credential_id.end()); - std::vector<uint8_t> auth_data = {0x02, 0x03, 0x04}; - std::vector<uint8_t> signature = {0x03, 0x04, 0x05}; - std::string email = "testcase@google.com"; - std::vector<uint8_t> user_id(email.begin(), email.end()); - // kSuccess - uint8_t status = kSuccess; - std::vector<uint8_t> data = BuildEncodedResponseData( - credential_id, auth_data, signature, user_id, status); - - fake_quick_start_decoder_->SetExpectedData(data); - fake_quick_start_decoder_->SetAssertionResponse( - /*status=*/mojom::GetAssertionResponse::GetAssertionStatus::kSuccess, - /*decoder_status=*/kSuccess, - /*decoder_error=*/kSuccess, /*email=*/email, - /*credential_id=*/expected_credential_id, - /*signature=*/signature, auth_data); - fake_nearby_connection_->AppendReadableData(data); - EXPECT_FALSE(fake_nearby_connection_->IsClosed()); - - // Wait for callback to finish and verify response - base::RunLoop().RunUntilIdle(); - ASSERT_TRUE(assertion_info_.has_value()); - EXPECT_EQ(email, assertion_info_->email); - EXPECT_EQ(expected_credential_id, assertion_info_->credential_id); - EXPECT_EQ(auth_data, assertion_info_->authenticator_data); - EXPECT_EQ(signature, assertion_info_->signature); -} - -TEST_F(AuthenticatedConnectionTest, NotifySourceOfUpdate) { - authenticated_connection_->NotifySourceOfUpdate(); - - std::vector<uint8_t> written_payload = - fake_nearby_connection_->GetWrittenData(); - std::string written_payload_string(written_payload.begin(), - written_payload.end()); - absl::optional<base::Value> parsed_json = - base::JSONReader::Read(written_payload_string); - ASSERT_TRUE(parsed_json); - ASSERT_TRUE(parsed_json->is_dict()); - base::Value::Dict& parsed_json_dict = parsed_json.value().GetDict(); - EXPECT_EQ(*parsed_json_dict.FindBool(kNotifySourceOfUpdateMessageKey), true); -} - -} // namespace ash::quick_start
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc index 75f42cf1..da15642 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.cc
@@ -4,34 +4,41 @@ #include "chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h" +#include "base/functional/bind.h" #include "base/json/json_writer.h" +#include "base/notreached.h" #include "base/values.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" +#include "chrome/browser/ash/login/oobe_quick_start/logging/logging.h" #include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" +#include "chromeos/ash/components/quick_start/quick_start_message.h" +#include "chromeos/ash/components/quick_start/quick_start_requests.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom-shared.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom.h" #include "crypto/random.h" namespace ash::quick_start { -Connection::Connection(NearbyConnection* nearby_connection, - RandomSessionId session_id, - SharedSecret shared_secret, - base::OnceClosure on_connection_closed) +namespace { + +const char kNotifySourceOfUpdateMessageKey[] = "isForcedUpdateRequired"; + +} // namespace + +Connection::Connection( + NearbyConnection* nearby_connection, + RandomSessionId session_id, + SharedSecret shared_secret, + base::OnceClosure on_connection_closed, + ConnectionAuthenticatedCallback on_connection_authenticated) : nearby_connection_(nearby_connection), random_session_id_(session_id), shared_secret_(shared_secret), - on_connection_closed_(std::move(on_connection_closed)) { - crypto::RandBytes(secondary_shared_secret_); - nearby_connection->SetDisconnectionListener(base::BindOnce( - &Connection::OnConnectionClosed, weak_ptr_factory_.GetWeakPtr())); -} - -Connection::Connection(NearbyConnection* nearby_connection, - RandomSessionId session_id, - base::OnceClosure on_connection_closed) - : nearby_connection_(nearby_connection), - random_session_id_(session_id), - on_connection_closed_(std::move(on_connection_closed)) { - crypto::RandBytes(shared_secret_); + on_connection_closed_(std::move(on_connection_closed)), + on_connection_authenticated_(std::move(on_connection_authenticated)) { crypto::RandBytes(secondary_shared_secret_); nearby_connection->SetDisconnectionListener(base::BindOnce( &Connection::OnConnectionClosed, weak_ptr_factory_.GetWeakPtr())); @@ -39,6 +46,131 @@ Connection::~Connection() = default; +void Connection::MarkConnectionAuthenticated() { + authenticated_ = true; + if (on_connection_authenticated_) { + std::move(on_connection_authenticated_).Run(weak_ptr_factory_.GetWeakPtr()); + } +} + +void Connection::RequestWifiCredentials( + int32_t session_id, + RequestWifiCredentialsCallback callback) { + // Build the Wifi Credential Request payload + std::string shared_secret_str(secondary_shared_secret_.begin(), + secondary_shared_secret_.end()); + SendMessage( + requests::BuildRequestWifiCredentialsMessage(session_id, + shared_secret_str), + base::BindOnce(&Connection::OnRequestWifiCredentialsResponse, + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); +} + +void Connection::NotifySourceOfUpdate() { + base::Value::Dict message_payload; + message_payload.Set(kNotifySourceOfUpdateMessageKey, true); + SendPayload(message_payload); +} + +void Connection::RequestAccountTransferAssertion( + const std::string& challenge_b64url, + RequestAccountTransferAssertionCallback callback) { + auto parse_assertion_response = + base::BindOnce(&Connection::OnRequestAccountTransferAssertionResponse, + weak_ptr_factory_.GetWeakPtr(), std::move(callback)); + + auto request_assertion = + base::IgnoreArgs<absl::optional<std::vector<uint8_t>>>(base::BindOnce( + &Connection::SendMessage, weak_ptr_factory_.GetWeakPtr(), + requests::BuildAssertionRequestMessage(challenge_b64url), + std::move(parse_assertion_response))); + + // Set up a callback to call GetInfo, calling back into RequestAssertion (and + // ignoring the results of GetInfo) after the call succeeds. + auto get_info = base::IgnoreArgs<absl::optional<std::vector<uint8_t>>>( + base::BindOnce(&Connection::SendMessage, weak_ptr_factory_.GetWeakPtr(), + requests::BuildGetInfoRequestMessage(), + std::move(request_assertion))); + + // Call into SetBootstrapOptions, starting the chain of callbacks. + SendMessage(requests::BuildBootstrapOptionsRequest(), std::move(get_info)); +} + +void Connection::OnRequestWifiCredentialsResponse( + RequestWifiCredentialsCallback callback, + absl::optional<std::vector<uint8_t>> response_bytes) { + if (!response_bytes.has_value()) { + QS_LOG(ERROR) << "No response bytes received for wifi credentials request"; + std::move(callback).Run(absl::nullopt); + return; + } + + auto parse_mojo_response_callback = + base::BindOnce(&Connection::ParseWifiCredentialsResponse, + weak_ptr_factory_.GetWeakPtr(), std::move(callback)); + + decoder_->DecodeWifiCredentialsResponse( + response_bytes.value(), std::move(parse_mojo_response_callback)); +} + +void Connection::ParseWifiCredentialsResponse( + RequestWifiCredentialsCallback callback, + ::ash::quick_start::mojom::GetWifiCredentialsResponsePtr response) { + if (!response->is_credentials()) { + std::move(callback).Run(absl::nullopt); + return; + } + + WifiCredentials credentials; + credentials.ssid = response->get_credentials()->ssid; + credentials.password = response->get_credentials()->password; + credentials.is_hidden = response->get_credentials()->is_hidden; + credentials.security_type = response->get_credentials()->security_type; + std::move(callback).Run(std::move(credentials)); +} + +void Connection::OnRequestAccountTransferAssertionResponse( + RequestAccountTransferAssertionCallback callback, + absl::optional<std::vector<uint8_t>> response_bytes) { + if (!response_bytes.has_value()) { + std::move(callback).Run(absl::nullopt); + return; + } + + auto parse_mojo_response_callback = + base::BindOnce(&Connection::GenerateFidoAssertionInfo, + weak_ptr_factory_.GetWeakPtr(), std::move(callback)); + + decoder_->DecodeGetAssertionResponse(response_bytes.value(), + std::move(parse_mojo_response_callback)); +} + +void Connection::GenerateFidoAssertionInfo( + RequestAccountTransferAssertionCallback callback, + ::ash::quick_start::mojom::GetAssertionResponsePtr response) { + mojom::GetAssertionResponse::GetAssertionStatus success = + mojom::GetAssertionResponse::GetAssertionStatus::kSuccess; + + if (response->status != success) { + std::move(callback).Run(absl::nullopt); + return; + } + + FidoAssertionInfo assertion_info; + assertion_info.email = response->email; + assertion_info.credential_id = response->credential_id; + assertion_info.authenticator_data = response->auth_data; + assertion_info.signature = response->signature; + + std::move(callback).Run(assertion_info); +} + +void Connection::SendMessage(std::unique_ptr<QuickStartMessage> message, + ConnectionResponseCallback callback) { + SendPayload(*message->GenerateEncodedMessage()); + nearby_connection_->Read(std::move(callback)); +} + void Connection::SendPayload(const base::Value::Dict& message_payload) { std::string json_serialized_payload; CHECK(base::JSONWriter::Write(message_payload, &json_serialized_payload));
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h index a586951..aa2d04ef 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h
@@ -5,38 +5,87 @@ #ifndef CHROME_BROWSER_ASH_LOGIN_OOBE_QUICK_START_CONNECTIVITY_CONNECTION_H_ #define CHROME_BROWSER_ASH_LOGIN_OOBE_QUICK_START_CONNECTIVITY_CONNECTION_H_ +#include <memory> +#include <vector> + #include "base/functional/callback_forward.h" +#include "base/memory/weak_ptr.h" #include "base/values.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" #include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" +#include "components/cbor/values.h" +#include "mojo/public/cpp/bindings/shared_remote.h" +#include "url/origin.h" namespace ash::quick_start { +class QuickStartMessage; + // Represents a connection to the remote source device and is an abstraction of // a Nearby Connection. -class Connection { +class Connection + : public TargetDeviceConnectionBroker::AuthenticatedConnection { public: - using SharedSecret = std::array<uint8_t, 32>; - - Connection(NearbyConnection* nearby_connection, - RandomSessionId session_id, - base::OnceClosure on_connection_closed); + using SharedSecret = TargetDeviceConnectionBroker::SharedSecret; + using ConnectionAuthenticatedCallback = base::OnceCallback<void( + base::WeakPtr<TargetDeviceConnectionBroker::AuthenticatedConnection>)>; Connection(NearbyConnection* nearby_connection, RandomSessionId session_id, SharedSecret shared_secret, - base::OnceClosure on_connection_closed); + base::OnceClosure on_connection_closed, + ConnectionAuthenticatedCallback on_connection_authenticated); Connection(const Connection&) = delete; Connection& operator=(const Connection&) = delete; - virtual ~Connection(); + ~Connection() override; + + // Changes the connection state to authenticated and invokes the + // ConnectionAuthenticatedCallback. The caller must ensure that the connection + // is authenticated before calling this function. + void MarkConnectionAuthenticated(); protected: friend class ConnectionTest; + using ConnectionResponseCallback = + base::OnceCallback<void(absl::optional<std::vector<uint8_t>>)>; using PayloadResponseCallback = base::OnceCallback<void(absl::optional<std::vector<uint8_t>>)>; + // TargetDeviceConnectionBroker::AuthenticatedConnection + void RequestWifiCredentials(int32_t session_id, + RequestWifiCredentialsCallback callback) override; + void NotifySourceOfUpdate() override; + void RequestAccountTransferAssertion( + const std::string& challenge_b64url, + RequestAccountTransferAssertionCallback callback) override; + + // Parses a raw response and converts it to a WifiCredentialsResponse + void OnRequestWifiCredentialsResponse( + RequestWifiCredentialsCallback callback, + absl::optional<std::vector<uint8_t>> response_bytes); + + void ParseWifiCredentialsResponse( + RequestWifiCredentialsCallback callback, + ::ash::quick_start::mojom::GetWifiCredentialsResponsePtr response); + + // Parses a raw AssertionResponse and converts it into a FidoAssertionInfo + void OnRequestAccountTransferAssertionResponse( + RequestAccountTransferAssertionCallback callback, + absl::optional<std::vector<uint8_t>> response_bytes); + + void GenerateFidoAssertionInfo( + RequestAccountTransferAssertionCallback callback, + ::ash::quick_start::mojom::GetAssertionResponsePtr response); + + void SendMessage(std::unique_ptr<QuickStartMessage> message, + ConnectionResponseCallback callback); + // Reusable method to serialize a payload into JSON bytes and send via Nearby // Connections. void SendPayload(const base::Value::Dict& message_payload); @@ -51,6 +100,10 @@ SharedSecret shared_secret_; SharedSecret secondary_shared_secret_; base::OnceClosure on_connection_closed_; + bool authenticated_ = false; + ConnectionAuthenticatedCallback on_connection_authenticated_; + std::string challenge_b64url_; + mojo::SharedRemote<mojom::QuickStartDecoder> decoder_; base::WeakPtrFactory<Connection> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc index 32f572b..42d865e 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/connection_unittest.cc
@@ -4,24 +4,56 @@ #include "connection.h" +#include "base/base64.h" +#include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/json/json_reader.h" +#include "base/memory/weak_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" #include "base/test/task_environment.h" #include "base/test/test_future.h" +#include "base/values.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fake_quick_start_decoder.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/fido_assertion_info.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/wifi_credentials.h" #include "chrome/browser/nearby_sharing/fake_nearby_connection.h" #include "chrome/browser/nearby_sharing/public/cpp/nearby_connection.h" +#include "chromeos/ash/components/quick_start/quick_start_message.h" +#include "chromeos/ash/components/quick_start/quick_start_requests.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder.mojom.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom-shared.h" +#include "chromeos/ash/services/nearby/public/mojom/quick_start_decoder_types.mojom.h" +#include "components/cbor/reader.h" +#include "components/cbor/values.h" +#include "content/public/test/browser_task_environment.h" +#include "fido_authentication_message_helper.h" #include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" +#include "url/origin.h" namespace ash::quick_start { -namespace { +using message_helper::BuildEncodedResponseData; +namespace { constexpr char kTestMessagePayloadKey[] = "bootstrapOptions"; constexpr char kTestMessagePayloadValue[] = "testValue"; -constexpr char kTestBytes[] = "testbytes"; + +const char kAccountRequirementKey[] = "accountRequirement"; +const char kFlowTypeKey[] = "flowType"; +const int kAccountRequirementSingle = 2; +const int kFlowTypeTargetChallenge = 2; + +const char kChallengeBase64Url[] = "testchallenge"; + +const std::vector<uint8_t> kTestBytes = {0x00, 0x01, 0x02}; +const std::vector<uint8_t> kExpectedGetInfoRequest = {0x04}; + +const char kNotifySourceOfUpdateMessageKey[] = "isForcedUpdateRequired"; +constexpr uint8_t kSuccess = 0x00; // 32 random bytes to use as the shared secret. constexpr std::array<uint8_t, 32> kSharedSecret = { @@ -35,12 +67,15 @@ class FakeConnection : public Connection { public: - explicit FakeConnection(NearbyConnection* nearby_connection, - base::OnceClosure on_connection_closed) + explicit FakeConnection( + NearbyConnection* nearby_connection, + base::OnceClosure on_connection_closed, + Connection::ConnectionAuthenticatedCallback on_connection_authenticated) : Connection(nearby_connection, RandomSessionId(kRandomSessionId), kSharedSecret, - std::move(on_connection_closed)) {} + std::move(on_connection_closed), + std::move(on_connection_authenticated)) {} void SendPayloadAndReadResponseWrapperForTesting( const base::Value::Dict& message_payload, @@ -59,17 +94,248 @@ ~ConnectionTest() override = default; void SetUp() override { + // Since this test doesn't run in a sandbox, disable the sandbox checks + // on QuickStartMessage. Without this, the Message class will fail. + QuickStartMessage::DisableSandboxCheckForTesting(); + fake_nearby_connection_ = std::make_unique<FakeNearbyConnection>(); NearbyConnection* nearby_connection = fake_nearby_connection_.get(); - connection_ = - std::make_unique<FakeConnection>(nearby_connection, base::DoNothing()); + fake_quick_start_decoder_ = std::make_unique<FakeQuickStartDecoder>(); + connection_ = std::make_unique<FakeConnection>( + nearby_connection, /*on_connection_closed=*/base::DoNothing(), + /*on_connection_authenticated=*/ + base::BindLambdaForTesting( + [&](base::WeakPtr< + TargetDeviceConnectionBroker::AuthenticatedConnection> + authenticated_connection) { + ran_connection_authenticated_callback_ = true; + authenticated_connection_ = authenticated_connection; + })); + connection_->decoder_ = + mojo::SharedRemote<ash::quick_start::mojom::QuickStartDecoder>( + fake_quick_start_decoder_->GetRemote()); + } + + void MarkConnectionAuthenticated() { + ASSERT_FALSE(ran_connection_authenticated_callback_); + connection_->MarkConnectionAuthenticated(); + ASSERT_TRUE(ran_connection_authenticated_callback_); + ASSERT_TRUE(authenticated_connection_); + } + + void VerifyAssertionInfo(absl::optional<FidoAssertionInfo> assertion_info) { + ran_assertion_response_callback_ = true; + assertion_info_ = assertion_info; } base::test::SingleThreadTaskEnvironment task_environment_; std::unique_ptr<FakeNearbyConnection> fake_nearby_connection_; std::unique_ptr<FakeConnection> connection_; + RandomSessionId session_id_ = RandomSessionId(kRandomSessionId); + bool ran_assertion_response_callback_ = false; + bool ran_connection_authenticated_callback_ = false; + base::WeakPtr<TargetDeviceConnectionBroker::AuthenticatedConnection> + authenticated_connection_; + std::unique_ptr<FakeQuickStartDecoder> fake_quick_start_decoder_; + absl::optional<FidoAssertionInfo> assertion_info_; }; +TEST_F(ConnectionTest, RequestWifiCredentials) { + MarkConnectionAuthenticated(); + // Arbitrary Session ID for testing + int32_t session_id = 1; + + fake_quick_start_decoder_->SetWifiCredentialsResponse( + mojom::GetWifiCredentialsResponse::NewCredentials( + mojom::WifiCredentials::New("ssid", mojom::WifiSecurityType::kPSK, + true, "password"))); + + base::test::TestFuture<absl::optional<WifiCredentials>> future; + + authenticated_connection_->RequestWifiCredentials(session_id, + future.GetCallback()); + + fake_nearby_connection_->AppendReadableData({0x00, 0x01, 0x02}); + std::vector<uint8_t> wifi_request = fake_nearby_connection_->GetWrittenData(); + std::string wifi_request_string(wifi_request.begin(), wifi_request.end()); + absl::optional<base::Value> parsed_wifi_request_json = + base::JSONReader::Read(wifi_request_string); + ASSERT_TRUE(parsed_wifi_request_json); + ASSERT_TRUE(parsed_wifi_request_json->is_dict()); + base::Value::Dict& written_wifi_credentials_request = + parsed_wifi_request_json.value().GetDict(); + + // Try to decode the payload written to Nearby Connections + std::string base64_encoded_payload = + *written_wifi_credentials_request.FindString("quickStartPayload"); + + absl::optional<std::vector<uint8_t>> parsed_payload = + base::Base64Decode(base64_encoded_payload); + + EXPECT_TRUE(parsed_payload.has_value()); + std::string parsed_payload_string(parsed_payload->begin(), + parsed_payload->end()); + + absl::optional<base::Value> parsed_wifi_request_payload_json = + base::JSONReader::Read(parsed_payload_string); + ASSERT_TRUE(parsed_wifi_request_payload_json); + ASSERT_TRUE(parsed_wifi_request_payload_json->is_dict()); + base::Value::Dict& wifi_request_payload = + parsed_wifi_request_payload_json.value().GetDict(); + + EXPECT_TRUE(wifi_request_payload.FindBool("request_wifi")); + EXPECT_EQ(wifi_request_payload.FindInt("SESSION_ID"), session_id); + // TODO(b/234655072): Create kSecondarySharedSecret const and check value + // equals after AuthenticatedConnection refactor is merged. + EXPECT_TRUE(wifi_request_payload.FindString("shared_secret")); + + const absl::optional<WifiCredentials>& credentials = future.Get(); + EXPECT_TRUE(credentials.has_value()); + EXPECT_EQ(credentials->ssid, "ssid"); + EXPECT_EQ(credentials->password, "password"); + EXPECT_EQ(credentials->security_type, + ash::quick_start::mojom::WifiSecurityType::kPSK); + EXPECT_TRUE(credentials->is_hidden); +} + +TEST_F(ConnectionTest, RequestWifiCredentialsReturnsEmptyOnFailure) { + MarkConnectionAuthenticated(); + // Random Session ID for testing + int32_t session_id = 1; + fake_quick_start_decoder_->SetWifiCredentialsResponse( + mojom::GetWifiCredentialsResponse::NewFailureReason( + mojom::GetWifiCredentialsFailureReason::kMissingWifiHiddenStatus)); + + base::test::TestFuture<absl::optional<WifiCredentials>> future; + + authenticated_connection_->RequestWifiCredentials(session_id, + future.GetCallback()); + + fake_nearby_connection_->AppendReadableData({0x00, 0x01, 0x02}); + + absl::optional<WifiCredentials> credentials = future.Get(); + EXPECT_FALSE(future.Get().has_value()); +} + +TEST_F(ConnectionTest, RequestAccountTransferAssertion) { + MarkConnectionAuthenticated(); + // Start the Quick Start account transfer flow by initially sending + // BootstrapOptions. + authenticated_connection_->RequestAccountTransferAssertion( + kChallengeBase64Url, base::BindOnce(&ConnectionTest::VerifyAssertionInfo, + base::Unretained(this))); + + std::vector<uint8_t> bootstrap_options_data = + fake_nearby_connection_->GetWrittenData(); + std::unique_ptr<ash::quick_start::QuickStartMessage> + bootstrap_options_message = + ash::quick_start::QuickStartMessage::ReadMessage( + bootstrap_options_data, + QuickStartMessageType::kBootstrapConfigurations); + ASSERT_TRUE(bootstrap_options_message != nullptr); + base::Value::Dict& bootstrap_options = + *bootstrap_options_message->GetPayload(); + + // Verify that BootstrapOptions is written as expected. + EXPECT_EQ(*bootstrap_options.FindInt(kAccountRequirementKey), + kAccountRequirementSingle); + EXPECT_EQ(*bootstrap_options.FindInt(kFlowTypeKey), kFlowTypeTargetChallenge); + + // Emulate a BootstrapConfigurations response. + fake_nearby_connection_->AppendReadableData(kTestBytes); + + // OnBootstrapOptionsResponse should trigger a write of FIDO GetInfo + // request. + std::vector<uint8_t> fido_get_info_data = + fake_nearby_connection_->GetWrittenData(); + + std::unique_ptr<ash::quick_start::QuickStartMessage> fido_message = + ash::quick_start::QuickStartMessage::ReadMessage( + fido_get_info_data, QuickStartMessageType::kSecondDeviceAuthPayload); + ASSERT_TRUE(fido_message != nullptr); + + // Verify that FIDO GetInfo request is written as expected + base::Value::Dict* get_info_payload = fido_message->GetPayload(); + std::string get_info_message = *get_info_payload->FindString("fidoMessage"); + absl::optional<std::vector<uint8_t>> get_info_command = + base::Base64Decode(get_info_message); + EXPECT_TRUE(get_info_command); + EXPECT_EQ(*get_info_command, kExpectedGetInfoRequest); + + // Emulate a GetInfo response. + fake_nearby_connection_->AppendReadableData(kTestBytes); + + // OnFidoGetInfoResponse should trigger a write of FIDO GetAssertion + // request. + std::vector<uint8_t> fido_assertion_request_data = + fake_nearby_connection_->GetWrittenData(); + + std::unique_ptr<ash::quick_start::QuickStartMessage> assertion_message = + ash::quick_start::QuickStartMessage::ReadMessage( + fido_assertion_request_data, + QuickStartMessageType::kSecondDeviceAuthPayload); + + ASSERT_TRUE(assertion_message != nullptr); + + std::string get_assertion_message_payload = + *assertion_message->GetPayload()->FindString("fidoMessage"); + absl::optional<std::vector<uint8_t>> get_assertion_command = + base::Base64Decode(get_assertion_message_payload); + EXPECT_TRUE(get_assertion_command); + cbor::Value request = + requests::GenerateGetAssertionRequest(kChallengeBase64Url); + std::vector<uint8_t> cbor_encoded_request = + requests::CBOREncodeGetAssertionRequest(std::move(request)); + EXPECT_EQ(*get_assertion_command, cbor_encoded_request); + + // Emulate a GetAssertion response. + std::vector<uint8_t> credential_id = {0x01, 0x02, 0x03}; + std::string expected_credential_id(credential_id.begin(), + credential_id.end()); + std::vector<uint8_t> auth_data = {0x02, 0x03, 0x04}; + std::vector<uint8_t> signature = {0x03, 0x04, 0x05}; + std::string email = "testcase@google.com"; + std::vector<uint8_t> user_id(email.begin(), email.end()); + // kSuccess + uint8_t status = kSuccess; + std::vector<uint8_t> data = BuildEncodedResponseData( + credential_id, auth_data, signature, user_id, status); + + fake_quick_start_decoder_->SetExpectedData(data); + fake_quick_start_decoder_->SetAssertionResponse( + /*status=*/mojom::GetAssertionResponse::GetAssertionStatus::kSuccess, + /*decoder_status=*/kSuccess, + /*decoder_error=*/kSuccess, /*email=*/email, + /*credential_id=*/expected_credential_id, + /*signature=*/signature, auth_data); + fake_nearby_connection_->AppendReadableData(data); + EXPECT_FALSE(fake_nearby_connection_->IsClosed()); + + // Wait for callback to finish and verify response + base::RunLoop().RunUntilIdle(); + ASSERT_TRUE(assertion_info_.has_value()); + EXPECT_EQ(email, assertion_info_->email); + EXPECT_EQ(expected_credential_id, assertion_info_->credential_id); + EXPECT_EQ(auth_data, assertion_info_->authenticator_data); + EXPECT_EQ(signature, assertion_info_->signature); +} + +TEST_F(ConnectionTest, NotifySourceOfUpdate) { + MarkConnectionAuthenticated(); + authenticated_connection_->NotifySourceOfUpdate(); + + std::vector<uint8_t> written_payload = + fake_nearby_connection_->GetWrittenData(); + std::string written_payload_string(written_payload.begin(), + written_payload.end()); + absl::optional<base::Value> parsed_json = + base::JSONReader::Read(written_payload_string); + ASSERT_TRUE(parsed_json); + ASSERT_TRUE(parsed_json->is_dict()); + base::Value::Dict& parsed_json_dict = parsed_json.value().GetDict(); + EXPECT_EQ(*parsed_json_dict.FindBool(kNotifySourceOfUpdateMessageKey), true); +} + TEST_F(ConnectionTest, SendPayloadAndReadResponse) { base::Value::Dict message_payload; message_payload.Set(kTestMessagePayloadKey, kTestMessagePayloadValue); @@ -103,8 +369,10 @@ TEST_F(ConnectionTest, TestDisconnectionTriggersListener) { base::test::TestFuture<void> future; std::unique_ptr<Connection> connection_under_test = - std::make_unique<FakeConnection>(fake_nearby_connection_.get(), - future.GetCallback()); + std::make_unique<FakeConnection>( + fake_nearby_connection_.get(), + /*on_connection_closed=*/future.GetCallback(), + /*on_connection_authenticated=*/base::DoNothing()); ASSERT_FALSE(future.IsReady());
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.cc index 5893580..b2b6f927 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.cc
@@ -6,6 +6,7 @@ #include "base/functional/callback_helpers.h" #include "base/memory/weak_ptr.h" +#include "chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/fake_quick_start_decoder.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h" @@ -80,32 +81,26 @@ void FakeTargetDeviceConnectionBroker::AuthenticateConnection( const std::string& source_device_id) { - fake_connection_.reset(); fake_nearby_connection_ = std::make_unique<FakeNearbyConnection>(); NearbyConnection* nearby_connection = fake_nearby_connection_.get(); mojo::PendingRemote<mojom::QuickStartDecoder> remote; fake_quick_start_decoder_ = std::make_unique<FakeQuickStartDecoder>(); auto random_session_id = RandomSessionId(); - auto fake_authenticated_connection = - std::make_unique<FakeAuthenticatedConnection>( - nearby_connection, - mojo::SharedRemote<ash::quick_start::mojom::QuickStartDecoder>( - fake_quick_start_decoder_->GetRemote()), - random_session_id, kSharedSecret, base::DoNothing()); - connection_lifecycle_listener_->OnConnectionAuthenticated( - source_device_id, fake_authenticated_connection->AsWeakPtr()); - - fake_connection_ = std::move(fake_authenticated_connection); + auto connection = std::make_unique<Connection>( + nearby_connection, random_session_id, kSharedSecret, base::DoNothing(), + base::BindOnce( + &FakeTargetDeviceConnectionBroker::OnConnectionAuthenticated, + weak_ptr_factory_.GetWeakPtr())); + connection->MarkConnectionAuthenticated(); } -void FakeTargetDeviceConnectionBroker::RejectConnection( - const std::string& source_device_id) { - connection_lifecycle_listener_->OnConnectionRejected(source_device_id); +void FakeTargetDeviceConnectionBroker::RejectConnection() { + connection_lifecycle_listener_->OnConnectionRejected(); } void FakeTargetDeviceConnectionBroker::CloseConnection( - const std::string& source_device_id) { - connection_lifecycle_listener_->OnConnectionClosed(source_device_id); + ConnectionClosedReason reason) { + connection_lifecycle_listener_->OnConnectionClosed(reason); } } // namespace ash::quick_start
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.h index f6c347e1d..f9f8dc5 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/fake_target_device_connection_broker.h
@@ -8,7 +8,7 @@ #include <memory> #include <vector> -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h" +#include "base/memory/weak_ptr.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_factory.h" @@ -49,13 +49,6 @@ std::vector<FakeTargetDeviceConnectionBroker*> instances_; }; - class FakeAuthenticatedConnection - : public AuthenticatedConnection, - public base::SupportsWeakPtr<FakeAuthenticatedConnection> { - public: - using AuthenticatedConnection::AuthenticatedConnection; - }; - FakeTargetDeviceConnectionBroker(); FakeTargetDeviceConnectionBroker(FakeTargetDeviceConnectionBroker&) = delete; FakeTargetDeviceConnectionBroker& operator=( @@ -68,10 +61,11 @@ bool use_pin_authentication, ResultCallback on_start_advertising_callback) override; void StopAdvertising(base::OnceClosure on_stop_advertising_callback) override; + void InitiateConnection(const std::string& source_device_id); void AuthenticateConnection(const std::string& source_device_id); - void RejectConnection(const std::string& source_device_id); - void CloseConnection(const std::string& source_device_id); + void RejectConnection(); + void CloseConnection(ConnectionClosedReason reason); void set_feature_support_status(FeatureSupportStatus feature_support_status) { feature_support_status_ = feature_support_status; @@ -107,12 +101,13 @@ size_t num_stop_advertising_calls_ = 0; FeatureSupportStatus feature_support_status_ = FeatureSupportStatus::kSupported; - ConnectionLifecycleListener* connection_lifecycle_listener_ = nullptr; ResultCallback on_start_advertising_callback_; base::OnceClosure on_stop_advertising_callback_; - std::unique_ptr<Connection> fake_connection_; std::unique_ptr<FakeNearbyConnection> fake_nearby_connection_; std::unique_ptr<FakeQuickStartDecoder> fake_quick_start_decoder_; + + base::WeakPtrFactory<FakeTargetDeviceConnectionBroker> weak_ptr_factory_{ + this}; }; } // namespace ash::quick_start
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.cc index 64229175..3a2cff1 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.cc
@@ -31,9 +31,16 @@ } } +void TargetDeviceConnectionBroker::OnConnectionAuthenticated( + base::WeakPtr<AuthenticatedConnection> authenticated_connection) { + CHECK(connection_lifecycle_listener_); + connection_lifecycle_listener_->OnConnectionAuthenticated( + authenticated_connection); +} + std::vector<uint8_t> TargetDeviceConnectionBroker::GetQrCodeData( const RandomSessionId& random_session_id, - const Connection::SharedSecret shared_secret) const { + const SharedSecret shared_secret) const { std::string shared_secret_str(shared_secret.begin(), shared_secret.end()); std::string shared_secret_base64; base::Base64UrlEncode(shared_secret_str,
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h index d6d576d..37f6655 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h
@@ -8,13 +8,13 @@ #include <vector> #include "base/functional/callback.h" -#include "base/memory/weak_ptr.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/connection.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/random_session_id.h" +#include "third_party/abseil-cpp/absl/types/optional.h" namespace ash::quick_start { -class AuthenticatedConnection; +struct FidoAssertionInfo; +struct WifiCredentials; // TargetDeviceConnectionBroker is the entrypoint for consuming the Quick Start // connectivity component. Calling code is expected to get an instance of this @@ -27,6 +27,7 @@ class TargetDeviceConnectionBroker { public: using ResultCallback = base::OnceCallback<void(bool success)>; + using SharedSecret = std::array<uint8_t, 32>; enum class FeatureSupportStatus { kUndetermined = 0, @@ -34,6 +35,47 @@ kSupported }; + enum class ConnectionClosedReason { + kComplete, + kUserAborted, + kAuthenticationFailed, + kConnectionLost, + kRequestTimedOut, + kUnknownError, + }; + + class AuthenticatedConnection { + public: + using RequestWifiCredentialsCallback = + base::OnceCallback<void(absl::optional<WifiCredentials>)>; + using RequestAccountTransferAssertionCallback = + base::OnceCallback<void(absl::optional<FidoAssertionInfo>)>; + + // Request wifi credentials from target Android device. The session_id is + // used to identify this QuickStart session and is distinct from the + // RandomSessionId. + virtual void RequestWifiCredentials( + int32_t session_id, + RequestWifiCredentialsCallback callback) = 0; + + // Notify Android device that the Chromebook will download an update and + // reboot. + virtual void NotifySourceOfUpdate() = 0; + + // Begin the account transfer process and retrieve + // an Assertion from the source device. The user will be asked to confirm + // their lock screen PIN/pattern/etc. on the source device. + // This object's client must provide a "challenge" to be sent to the remote + // source device. + virtual void RequestAccountTransferAssertion( + const std::string& challenge_b64url, + RequestAccountTransferAssertionCallback callback) = 0; + + protected: + AuthenticatedConnection() = default; + virtual ~AuthenticatedConnection() = default; + }; + // Clients of TargetDeviceConnectionBroker should implement this interface, // and provide a self-reference when calling TargetDeviceConnectionBroker:: // StartAdvertising(). @@ -74,14 +116,13 @@ // Use source_device_id to understand which connection // OnConnectionClosed() refers to. virtual void OnConnectionAuthenticated( - const std::string& source_device_id, - base::WeakPtr<AuthenticatedConnection> connection) = 0; + base::WeakPtr<AuthenticatedConnection> authenticated_connection) = 0; // Called if the source device rejected the connection. - virtual void OnConnectionRejected(const std::string& source_device_id) = 0; + virtual void OnConnectionRejected() = 0; // Called when the source device is disconnected or has become unreachable. - virtual void OnConnectionClosed(const std::string& source_device_id) = 0; + virtual void OnConnectionClosed(ConnectionClosedReason reason) = 0; }; TargetDeviceConnectionBroker(); @@ -124,12 +165,13 @@ protected: void MaybeNotifyFeatureStatus(); + void OnConnectionAuthenticated( + base::WeakPtr<AuthenticatedConnection> authenticated_connection); // Returns a deep link URL as a vector of bytes that will form the QR code // used to authenticate the connection. - std::vector<uint8_t> GetQrCodeData( - const RandomSessionId& random_session_id, - const Connection::SharedSecret shared_secret) const; + std::vector<uint8_t> GetQrCodeData(const RandomSessionId& random_session_id, + const SharedSecret shared_secret) const; // Derive a 4-digit decimal pin code from the authentication token. This is // meant to match the Android implementation found here: @@ -140,6 +182,8 @@ // request pin verification or QR code verification. bool use_pin_authentication_ = false; + ConnectionLifecycleListener* connection_lifecycle_listener_ = nullptr; + private: std::vector<FeatureSupportStatusCallback> feature_status_callbacks_; };
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.cc b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.cc index bb96fdbd..5d017d24 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.cc +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.cc
@@ -402,14 +402,18 @@ QS_LOG(INFO) << "Incoming Nearby Connection Accepted: endpoint_id=" << endpoint_id; - // TODO: Handle Connection Closed in the Connection Broker + // TODO(b/234655072): Handle Connection Closed in the Connection Broker connection_ = std::make_unique<Connection>( - nearby_connection, random_session_id_, shared_secret_, base::DoNothing()); + nearby_connection, random_session_id_, shared_secret_, base::DoNothing(), + base::BindOnce( + &TargetDeviceConnectionBrokerImpl::OnConnectionAuthenticated, + weak_ptr_factory_.GetWeakPtr())); - // TODO(b/234655072): Mark the connection_ authenticated if - // |use_pin_authentication_| is true. For pin verification, if the source - // device has accepted the Nearby Connection, then the connection is - // authenticated. + if (use_pin_authentication_) { + // For pin verification, if the source device has accepted the Nearby + // Connection, then the connection is authenticated. + connection_->MarkConnectionAuthenticated(); + } } } // namespace ash::quick_start
diff --git a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.h b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.h index 8b6f9c91..7e74b9ee 100644 --- a/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.h +++ b/chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_impl.h
@@ -102,7 +102,6 @@ std::unique_ptr<FastPairAdvertiser> fast_pair_advertiser_; RandomSessionId random_session_id_; Connection::SharedSecret shared_secret_; - ConnectionLifecycleListener* connection_lifecycle_listener_ = nullptr; std::unique_ptr<Connection> connection_; base::WeakPtr<NearbyConnectionsManager> nearby_connections_manager_;
diff --git a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc index 293bb98..5315b55 100644 --- a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc +++ b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.cc
@@ -7,7 +7,6 @@ #include "base/check_op.h" #include "base/containers/contains.h" #include "base/functional/bind.h" -#include "chrome/browser/ash/login/oobe_quick_start/connectivity/authenticated_connection.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker.h" #include "chrome/browser/ash/login/oobe_quick_start/connectivity/target_device_connection_broker_factory.h" #include "chrome/browser/ash/login/oobe_quick_start/oobe_quick_start_pref_names.h" @@ -140,8 +139,8 @@ } void TargetDeviceBootstrapController::OnConnectionAuthenticated( - const std::string& source_device_id, - base::WeakPtr<AuthenticatedConnection> connection) { + base::WeakPtr<TargetDeviceConnectionBroker::AuthenticatedConnection> + authenticated_connection) { constexpr Step kPossibleSteps[] = {Step::QR_CODE_VERIFICATION}; CHECK(base::Contains(kPossibleSteps, status_.step)); @@ -150,15 +149,14 @@ NotifyObservers(); } -void TargetDeviceBootstrapController::OnConnectionRejected( - const std::string& source_device_id) { +void TargetDeviceBootstrapController::OnConnectionRejected() { status_.step = Step::ERROR; status_.payload = ErrorCode::CONNECTION_REJECTED; NotifyObservers(); } void TargetDeviceBootstrapController::OnConnectionClosed( - const std::string& source_device_id) { + TargetDeviceConnectionBroker::ConnectionClosedReason reason) { status_.step = Step::ERROR; status_.payload = ErrorCode::CONNECTION_CLOSED; NotifyObservers();
diff --git a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h index 34bbd31..33d9c01 100644 --- a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h +++ b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller.h
@@ -18,8 +18,6 @@ namespace ash::quick_start { -class AuthenticatedConnection; - class TargetDeviceBootstrapController : public TargetDeviceConnectionBroker::ConnectionLifecycleListener { public: @@ -93,10 +91,11 @@ void OnQRCodeVerificationRequested( const std::vector<uint8_t>& qr_code_data) override; void OnConnectionAuthenticated( - const std::string& source_device_id, - base::WeakPtr<AuthenticatedConnection> connection) override; - void OnConnectionRejected(const std::string& source_device_id) override; - void OnConnectionClosed(const std::string& source_device_id) override; + base::WeakPtr<TargetDeviceConnectionBroker::AuthenticatedConnection> + authenticated_connection) override; + void OnConnectionRejected() override; + void OnConnectionClosed( + TargetDeviceConnectionBroker::ConnectionClosedReason reason) override; private: void NotifyObservers();
diff --git a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller_unittest.cc b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller_unittest.cc index d50ece5..61a93762 100644 --- a/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller_unittest.cc +++ b/chrome/browser/ash/login/oobe_quick_start/target_device_bootstrap_controller_unittest.cc
@@ -29,6 +29,8 @@ using Status = TargetDeviceBootstrapController::Status; using Step = TargetDeviceBootstrapController::Step; using ErrorCode = TargetDeviceBootstrapController::ErrorCode; +using ConnectionClosedReason = + TargetDeviceConnectionBroker::ConnectionClosedReason; class FakeObserver : public Observer { public: @@ -192,7 +194,7 @@ connection_broker()->on_start_advertising_callback().Run(/*success=*/true); connection_broker()->InitiateConnection(kSourceDeviceId); - connection_broker()->RejectConnection(kSourceDeviceId); + connection_broker()->RejectConnection(); EXPECT_EQ(fake_observer_->last_status.step, Step::ERROR); ASSERT_TRUE( @@ -206,7 +208,7 @@ connection_broker()->on_start_advertising_callback().Run(/*success=*/true); connection_broker()->InitiateConnection(kSourceDeviceId); - connection_broker()->CloseConnection(kSourceDeviceId); + connection_broker()->CloseConnection(ConnectionClosedReason::kConnectionLost); EXPECT_EQ(fake_observer_->last_status.step, Step::ERROR); ASSERT_TRUE( @@ -250,7 +252,7 @@ // Pref shouldn't change until the connection is closed. EXPECT_FALSE( GetLocalState()->GetBoolean(prefs::kShouldResumeQuickStartAfterReboot)); - connection_broker()->CloseConnection(kSourceDeviceId); + connection_broker()->CloseConnection(ConnectionClosedReason::kConnectionLost); EXPECT_TRUE( GetLocalState()->GetBoolean(prefs::kShouldResumeQuickStartAfterReboot)); GetLocalState()->ClearPref(prefs::kShouldResumeQuickStartAfterReboot);
diff --git a/chrome/browser/ash/login/screens/theme_selection_screen.cc b/chrome/browser/ash/login/screens/theme_selection_screen.cc index 6d63edd..424f70a 100644 --- a/chrome/browser/ash/login/screens/theme_selection_screen.cc +++ b/chrome/browser/ash/login/screens/theme_selection_screen.cc
@@ -82,8 +82,7 @@ const PrefService::Preference* pref = ProfileManager::GetActiveUserProfile()->GetPrefs()->FindPreference( prefs::kDarkModeScheduleType); - if (pref->IsManaged() || pref->IsRecommended() || - !features::IsDarkLightModeEnabled()) { + if (pref->IsManaged() || pref->IsRecommended()) { return true; }
diff --git a/chrome/browser/ash/login/wizard_controller_browsertest.cc b/chrome/browser/ash/login/wizard_controller_browsertest.cc index 4af1709..8e830a8 100644 --- a/chrome/browser/ash/login/wizard_controller_browsertest.cc +++ b/chrome/browser/ash/login/wizard_controller_browsertest.cc
@@ -6,7 +6,6 @@ #include <memory> -#include "ash/constants/ash_features.h" #include "ash/constants/ash_switches.h" #include "ash/public/cpp/login_screen_test_api.h" #include "base/command_line.h" @@ -106,7 +105,6 @@ #include "chromeos/ash/components/system/fake_statistics_provider.h" #include "chromeos/ash/components/system/statistics_provider.h" #include "chromeos/ash/components/timezone/timezone_request.h" -#include "chromeos/constants/chromeos_features.h" #include "chromeos/dbus/constants/dbus_switches.h" #include "chromeos/test/chromeos_test_utils.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h" @@ -3015,49 +3013,14 @@ EXPECT_EQ(*guid, "wpa-psk-network-guid"); } -class WizardControllerThemeSelectionDefaultSettingsTest - : public WizardControllerTest { - public: - WizardControllerThemeSelectionDefaultSettingsTest() { - feature_list_.InitWithFeatures( - /*enabled_features=*/{}, - /*disabled_features=*/{chromeos::features::kDarkLightMode}); - } - +class WizardControllerThemeSelectionTest : public WizardControllerTest { protected: - DeviceStateMixin device_state_{ - &mixin_host_, DeviceStateMixin::State::OOBE_COMPLETED_UNOWNED}; FakeGaiaMixin gaia_mixin_{&mixin_host_}; LoginManagerMixin login_mixin_{&mixin_host_, LoginManagerMixin::UserList(), &gaia_mixin_}; - AccountId user_{ - AccountId::FromUserEmailGaiaId(test::kTestEmail, test::kTestGaiaId)}; - - base::test::ScopedFeatureList feature_list_; }; -IN_PROC_BROWSER_TEST_F(WizardControllerThemeSelectionDefaultSettingsTest, - SkipThemeSelection) { - LoginDisplayHost::default_host()->GetWizardContext()->is_branded_build = true; - login_mixin_.LoginAsNewRegularUser(); - WizardController::default_controller()->AdvanceToScreen( - GestureNavigationScreenView::kScreenId); - OobeScreenWaiter(MarketingOptInScreenView::kScreenId).Wait(); -} - -class WizardControllerThemeSelectionEnabledTest - : public WizardControllerThemeSelectionDefaultSettingsTest { - public: - WizardControllerThemeSelectionEnabledTest() { - feature_list_.InitWithFeatures( - /*enabled_features=*/{chromeos::features::kDarkLightMode}, - /*disabled_features=*/{}); - } - - base::test::ScopedFeatureList feature_list_; -}; - -IN_PROC_BROWSER_TEST_F(WizardControllerThemeSelectionEnabledTest, +IN_PROC_BROWSER_TEST_F(WizardControllerThemeSelectionTest, TransitionToMarketingOptIn) { LoginDisplayHost::default_host()->GetWizardContext()->is_branded_build = true; login_mixin_.LoginAsNewRegularUser(); @@ -3067,7 +3030,7 @@ OobeScreenWaiter(MarketingOptInScreenView::kScreenId).Wait(); } -IN_PROC_BROWSER_TEST_F(WizardControllerThemeSelectionEnabledTest, +IN_PROC_BROWSER_TEST_F(WizardControllerThemeSelectionTest, TransitionToThemeSelection) { login_mixin_.LoginAsNewRegularUser(); WizardController::default_controller()->AdvanceToScreen(
diff --git a/chrome/browser/ash/phonehub/camera_roll_download_manager_impl.cc b/chrome/browser/ash/phonehub/camera_roll_download_manager_impl.cc index 9197576a..3268550c 100644 --- a/chrome/browser/ash/phonehub/camera_roll_download_manager_impl.cc +++ b/chrome/browser/ash/phonehub/camera_roll_download_manager_impl.cc
@@ -167,8 +167,8 @@ } const std::string& holding_space_item_id = - holding_space_keyed_service_->AddPhoneHubCameraRollItem( - file_path, + holding_space_keyed_service_->AddItemOfType( + HoldingSpaceItem::Type::kPhoneHubCameraRoll, file_path, ash::HoldingSpaceProgress(/*current_bytes=*/0, /*total_bytes=*/file_size_bytes)); if (holding_space_item_id.empty()) {
diff --git a/chrome/browser/ash/web_applications/face_ml_system_web_app_info.cc b/chrome/browser/ash/web_applications/face_ml_system_web_app_info.cc index 24e14c5..b0864e7 100644 --- a/chrome/browser/ash/web_applications/face_ml_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/face_ml_system_web_app_info.cc
@@ -38,19 +38,13 @@ }, *info); - // Support Dark/Light mode. - if (ash::features::IsDarkLightModeEnabled()) { - info->theme_color = cros_styles::ResolveColor( - cros_styles::ColorName::kBgColor, /*is_dark_mode=*/false); - info->dark_mode_theme_color = - cros_styles::ResolveColor(cros_styles::ColorName::kBgColor, - /*is_dark_mode=*/true); - info->background_color = info->theme_color; - info->dark_mode_background_color = info->dark_mode_theme_color; - } else { - info->theme_color = 0xffffffff; - info->background_color = 0xffffffff; - } + info->theme_color = cros_styles::ResolveColor( + cros_styles::ColorName::kBgColor, /*is_dark_mode=*/false); + info->dark_mode_theme_color = + cros_styles::ResolveColor(cros_styles::ColorName::kBgColor, + /*is_dark_mode=*/true); + info->background_color = info->theme_color; + info->dark_mode_background_color = info->dark_mode_theme_color; info->display_mode = blink::mojom::DisplayMode::kStandalone; info->user_display_mode = web_app::mojom::UserDisplayMode::kStandalone;
diff --git a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc index dab6ee8f..3d60ffa 100644 --- a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc +++ b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc
@@ -4,7 +4,6 @@ #include <utility> -#include "ash/constants/ash_features.h" #include "ash/constants/ash_switches.h" #include "ash/webui/media_app_ui/buildflags.h" #include "ash/webui/media_app_ui/test/media_app_ui_browsertest.h" @@ -205,28 +204,6 @@ } }; -class MediaAppIntegrationDarkLightModeEnabledTest - : public MediaAppIntegrationTest { - public: - MediaAppIntegrationDarkLightModeEnabledTest() { - feature_list_.InitAndEnableFeature(chromeos::features::kDarkLightMode); - } - - private: - base::test::ScopedFeatureList feature_list_; -}; - -class MediaAppIntegrationDarkLightModeDisabledTest - : public MediaAppIntegrationTest { - public: - MediaAppIntegrationDarkLightModeDisabledTest() { - feature_list_.InitAndDisableFeature(chromeos::features::kDarkLightMode); - } - - private: - base::test::ScopedFeatureList feature_list_; -}; - using MediaAppIntegrationAllProfilesTest = MediaAppIntegrationTest; using MediaAppIntegrationWithFilesAppAllProfilesTest = MediaAppIntegrationWithFilesAppTest; @@ -1134,7 +1111,7 @@ histograms.ExpectBucketCount("Apps.MediaApp.Load.OtherOpenWindowCount", 0, 1); } -IN_PROC_BROWSER_TEST_P(MediaAppIntegrationDarkLightModeEnabledTest, +IN_PROC_BROWSER_TEST_P(MediaAppIntegrationTest, HasCorrectThemeAndBackgroundColor) { web_app::AppId app_id = MediaAppAppId(); @@ -1148,17 +1125,6 @@ gfx::kGoogleGrey900); } -IN_PROC_BROWSER_TEST_P(MediaAppIntegrationDarkLightModeDisabledTest, - HasCorrectThemeAndBackgroundColor) { - web_app::AppId app_id = MediaAppAppId(); - - web_app::WebAppRegistrar& registrar = - web_app::WebAppProvider::GetForTest(profile())->registrar_unsafe(); - - EXPECT_EQ(registrar.GetAppThemeColor(app_id), gfx::kGoogleGrey900); - EXPECT_EQ(registrar.GetAppBackgroundColor(app_id), gfx::kGoogleGrey800); -} - // Ensures both the "audio" and "gallery" flavours of the MediaApp can be // launched at the same time when launched via the files app. IN_PROC_BROWSER_TEST_P(MediaAppIntegrationTest, @@ -1682,12 +1648,6 @@ } INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P( - MediaAppIntegrationDarkLightModeEnabledTest); - -INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P( - MediaAppIntegrationDarkLightModeDisabledTest); - -INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_REGULAR_PROFILE_P( MediaAppIntegrationTest); INSTANTIATE_SYSTEM_WEB_APP_MANAGER_TEST_SUITE_ALL_PROFILE_TYPES_P(
diff --git a/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc b/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc index 0ee36528..12209e0 100644 --- a/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc +++ b/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc
@@ -7,7 +7,6 @@ #include <memory> #include <string> -#include "ash/constants/ash_features.h" #include "ash/webui/grit/ash_media_app_resources.h" #include "ash/webui/media_app_ui/buildflags.h" #include "ash/webui/media_app_ui/media_app_guest_ui.h" @@ -257,26 +256,21 @@ }, *info); - if (ash::features::IsDarkLightModeEnabled()) { - info->theme_color = cros_styles::ResolveColor( - cros_styles::ColorName::kBgColor, /*is_dark_mode=*/false); - info->dark_mode_theme_color = cros_styles::ResolveColor( - cros_styles::ColorName::kBgColor, /*is_dark_mode=*/true); - info->background_color = info->theme_color; - info->dark_mode_background_color = info->dark_mode_theme_color; - } else { - info->theme_color = 0xff202124; - info->background_color = 0xff3c4043; - } + info->theme_color = cros_styles::ResolveColor( + cros_styles::ColorName::kBgColor, /*is_dark_mode=*/false); + info->dark_mode_theme_color = cros_styles::ResolveColor( + cros_styles::ColorName::kBgColor, /*is_dark_mode=*/true); + info->background_color = info->theme_color; + info->dark_mode_background_color = info->dark_mode_theme_color; info->display_mode = blink::mojom::DisplayMode::kStandalone; info->user_display_mode = web_app::mojom::UserDisplayMode::kStandalone; // Add handlers for image+video and audio. We keep them separate since their - // UX are sufficiently different (we don't want audio files to have a carousel - // since this would be a second layer of navigation in conjunction with the - // play queue). Order matters here; the Files app will prefer earlier - // handlers. + // UX are sufficiently different (we don't want audio files to have a + // carousel since this would be a second layer of navigation in conjunction + // with the play queue). Order matters here; the Files app will prefer + // earlier handlers. apps::FileHandler image_video_handler; image_video_handler.action = GURL(ash::kChromeUIMediaAppURL); image_video_handler.accept = MakeFileHandlerAccept(kFileHandlers); @@ -290,8 +284,8 @@ apps::FileHandler pdf_handler; pdf_handler.action = GURL(ash::kChromeUIMediaAppURL); pdf_handler.accept = MakeFileHandlerAccept(kPdfFileHandlers); - // Note setting `apps::FileHandler::LaunchType::kMultipleClients` here has no - // effect for system web apps (see comments in + // Note setting `apps::FileHandler::LaunchType::kMultipleClients` here has + // no effect for system web apps (see comments in // WebAppPublisherHelper::OnFileHandlerDialogCompleted()). The PDF-specifc // behavior to spawn multiple launches occurs in an override of // LaunchAndNavigateSystemWebApp().
diff --git a/chrome/browser/autofill/autofill_image_fetcher_impl.cc b/chrome/browser/autofill/autofill_image_fetcher_impl.cc index 6fbdbe2..6746df4 100644 --- a/chrome/browser/autofill/autofill_image_fetcher_impl.cc +++ b/chrome/browser/autofill/autofill_image_fetcher_impl.cc
@@ -8,6 +8,7 @@ #include "chrome/browser/profiles/profile_key.h" #include "components/autofill/core/browser/data_model/credit_card_art_image.h" #include "components/autofill/core/browser/metrics/autofill_metrics.h" +#include "components/autofill/core/browser/payments/constants.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_tick_clock.h" #include "components/image_fetcher/core/cached_image_fetcher.h" @@ -198,18 +199,15 @@ GURL url; // TODO(crbug.com/1313616): There is only one gstatic card art image we are - // using currently. Remove this logic and append FIFE URL suffix by default - // when the static image is deprecated. + // using currently, that returns as metadata when it isn't. Remove this logic + // and append FIFE URL suffix by default when the static image is deprecated, + // and we send rich card art instead. // Check if the image is stored in Static Content Service. If not append the // FIFE URL option to fetch the correct image. - if (card_art_url == - GURL( - "https://www.gstatic.com/autofill/virtualcard/icon/capitalone.png")) { + if (card_art_url.spec() == kCapitalOneCardArtUrl) { url = base::FeatureList::IsEnabled( features::kAutofillEnableNewCardArtAndNetworkImages) - ? GURL( - "https://www.gstatic.com/autofill/virtualcard/icon/" - "capitalone_40_24.png") + ? GURL(kCapitalOneLargeCardArtUrl) : card_art_url; } else { // A FIFE image fetching param suffix is appended to the URL. The image
diff --git a/chrome/browser/back_press/android/BUILD.gn b/chrome/browser/back_press/android/BUILD.gn index 228f42e..a195957 100644 --- a/chrome/browser/back_press/android/BUILD.gn +++ b/chrome/browser/back_press/android/BUILD.gn
@@ -33,6 +33,7 @@ "//base:base_java_test_support", "//base:base_junit_test_support", "//base/test:test_support_java", + "//chrome/browser/flags:java", "//components/browser_ui/widget/android:java", "//third_party/androidx:androidx_activity_activity_java", "//third_party/junit:junit",
diff --git a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManager.java b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManager.java index 0ccafb0..05885ab5 100644 --- a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManager.java +++ b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManager.java
@@ -73,6 +73,7 @@ static final String FAILURE_HISTOGRAM = "Android.BackPress.Failure"; private final BackPressHandler[] mHandlers = new BackPressHandler[Type.NUM_TYPES]; + private final boolean mUseSystemBack; private final Callback<Boolean>[] mObserverCallbacks = new Callback[Type.NUM_TYPES]; private Runnable mFallbackOnBackPressed; @@ -115,6 +116,8 @@ public BackPressManager() { mFallbackOnBackPressed = () -> {}; + mUseSystemBack = MinimizeAppAndCloseTabBackPressHandler.shouldUseSystemBack(); + backPressStateChanged(); } /** @@ -179,7 +182,11 @@ } private void backPressStateChanged() { - mCallback.setEnabled(shouldInterceptBackPress()); + boolean intercept = shouldInterceptBackPress(); + // If not using system back and MINIMIZE_APP_AND_CLOSE_TAB has registered, this must be + // true, since MINIMIZE_APP_AND_CLOSE_TAB unconditionally consumes last back press. + assert mUseSystemBack || !has(Type.MINIMIZE_APP_AND_CLOSE_TAB) || intercept; + mCallback.setEnabled(intercept || !mUseSystemBack); } private void handleBackPress() { @@ -213,12 +220,10 @@ removeHandler(i); } } - // All handlers have been removed, so no handler will consume the back event. As a result, - // the callback should be disabled so that the OS can handle the back press. - assert !mCallback.isEnabled(); } - private boolean shouldInterceptBackPress() { + @VisibleForTesting + boolean shouldInterceptBackPress() { for (BackPressHandler handler : mHandlers) { if (handler == null) continue; if (!Boolean.TRUE.equals(handler.getHandleBackPressChangedSupplier().get())) continue;
diff --git a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManagerUnitTest.java b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManagerUnitTest.java index 9d5d466cb..fec4d59 100644 --- a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManagerUnitTest.java +++ b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/BackPressManagerUnitTest.java
@@ -4,7 +4,10 @@ package org.chromium.chrome.browser.back_press; +import android.os.Build; + import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; @@ -41,6 +44,13 @@ } @Test + @Before + public void setup() { + MinimizeAppAndCloseTabBackPressHandler.setVersionForTesting(Build.VERSION_CODES.TIRAMISU); + MinimizeAppAndCloseTabBackPressHandler.SYSTEM_BACK.setForTesting(true); + } + + @Test public void testBasic() { BackPressManager manager = new BackPressManager(); EmptyBackPressHandler h1 = new EmptyBackPressHandler(); @@ -259,6 +269,23 @@ manager.getCallback().isEnabled()); } + // Test callback is always enabled to trigger fallbacks for groups without system back. + @Test + public void testAlwaysEnabledCallback() { + MinimizeAppAndCloseTabBackPressHandler.SYSTEM_BACK.setForTesting(false); + BackPressManager manager = new BackPressManager(); + EmptyBackPressHandler h1 = new EmptyBackPressHandler(); + EmptyBackPressHandler h2 = new EmptyBackPressHandler(); + manager.addHandler(h1, 0); + manager.addHandler(h2, 1); + h1.getHandleBackPressChangedSupplier().set(true); + Assert.assertTrue("Callback should be enabled if any of handlers are enabled", + manager.getCallback().isEnabled()); + h1.getHandleBackPressChangedSupplier().set(false); + Assert.assertFalse("No handler is enabled", manager.shouldInterceptBackPress()); + Assert.assertTrue("Callback is always enabled", manager.getCallback().isEnabled()); + } + private int getHandlerCount(BackPressManager manager) { int count = 0; for (BackPressHandler handler : manager.getHandlersForTesting()) {
diff --git a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandler.java b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandler.java index 3afd921..5eb644d 100644 --- a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandler.java +++ b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandler.java
@@ -16,6 +16,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.supplier.Supplier; +import org.chromium.chrome.browser.flags.BooleanCachedFieldTrialParameter; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.layouts.LayoutStateProvider; import org.chromium.chrome.browser.layouts.LayoutType; @@ -32,6 +33,10 @@ * to manually minimize app and close tab if necessary. */ public class MinimizeAppAndCloseTabBackPressHandler implements BackPressHandler, Destroyable { + public static final BooleanCachedFieldTrialParameter SYSTEM_BACK = + new BooleanCachedFieldTrialParameter( + ChromeFeatureList.BACK_GESTURE_REFACTOR, "system_back", false); + static final String HISTOGRAM = "Android.BackPress.MinimizeAppAndCloseTab"; // An always-enabled supplier since this handler is the final step of back press handling. @@ -130,6 +135,10 @@ minimizeApp = true; shouldCloseTab = false; } else { + // TAB history handler has a higher priority and should navigate page back before + // minimizing app and closing tab. + assert !currentTab.canGoBack() + : "Tab should be navigated back before closing or exiting app"; // At this point we know either the tab will close or the app will minimize. NativePage nativePage = currentTab.getNativePage(); if (nativePage != null) { @@ -177,15 +186,13 @@ mBackPressSupplier.set(tab != null && mBackShouldCloseTab.test(tab)); } - private static boolean shouldUseSystemBack() { + static boolean shouldUseSystemBack() { // https://developer.android.com/about/versions/12/behavior-changes-all#back-press // Starting from 12, root launcher activities are no longer finished on Back press. // Limiting to T, since some OEMs seem to still finish activity on 12. boolean isAtLeastT = (sVersionForTesting == null ? VERSION.SDK_INT : sVersionForTesting) >= VERSION_CODES.TIRAMISU; - return isAtLeastT - && ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean( - ChromeFeatureList.BACK_GESTURE_REFACTOR, "system_back", false); + return isAtLeastT && SYSTEM_BACK.getValue(); } static void setVersionForTesting(Integer version) {
diff --git a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandlerUnitTest.java b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandlerUnitTest.java index 20b1ecb..5e533968 100644 --- a/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandlerUnitTest.java +++ b/chrome/browser/back_press/android/java/src/org/chromium/chrome/browser/back_press/MinimizeAppAndCloseTabBackPressHandlerUnitTest.java
@@ -231,9 +231,8 @@ private void createBackPressHandler(boolean systemBack) { TestValues testValues = new TestValues(); testValues.addFeatureFlagOverride(ChromeFeatureList.BACK_GESTURE_REFACTOR, true); - testValues.addFieldTrialParamOverride( - ChromeFeatureList.BACK_GESTURE_REFACTOR, "system_back", systemBack + ""); FeatureList.setTestValues(testValues); + MinimizeAppAndCloseTabBackPressHandler.SYSTEM_BACK.setForTesting(systemBack); if (systemBack) { MinimizeAppAndCloseTabBackPressHandler.setVersionForTesting(VERSION_CODES.TIRAMISU); }
diff --git a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc index 0d3c0190..eb30ff5d 100644 --- a/chrome/browser/bluetooth/web_bluetooth_browsertest.cc +++ b/chrome/browser/bluetooth/web_bluetooth_browsertest.cc
@@ -562,13 +562,12 @@ // Make sure we can use Web Bluetooth after the tab crashes. // Set up adapter with one device. adapter_->SetIsPresent(false); - std::string result; - EXPECT_TRUE(content::ExecuteScriptAndExtractString( - web_contents_.get(), - "navigator.bluetooth.requestDevice({filters: [{services: [0x180d]}]})" - " .catch(e => domAutomationController.send(e.toString()));", - &result)); - EXPECT_EQ("NotFoundError: Bluetooth adapter not available.", result); + EXPECT_EQ( + "NotFoundError: Bluetooth adapter not available.", + content::EvalJs( + web_contents_.get(), + "navigator.bluetooth.requestDevice({filters: [{services: [0x180d]}]})" + " .catch(e => e.toString());")); // Crash the renderer process. content::RenderProcessHost* process = @@ -584,14 +583,12 @@ browser()->tab_strip_model()->GetActiveWebContents())); // Use Web Bluetooth again. - std::string result_after_crash; - EXPECT_TRUE(content::ExecuteScriptAndExtractString( - web_contents_.get(), - "navigator.bluetooth.requestDevice({filters: [{services: [0x180d]}]})" - " .catch(e => domAutomationController.send(e.toString()));", - &result_after_crash)); - EXPECT_EQ("NotFoundError: Bluetooth adapter not available.", - result_after_crash); + EXPECT_EQ( + "NotFoundError: Bluetooth adapter not available.", + content::EvalJs( + web_contents_.get(), + "navigator.bluetooth.requestDevice({filters: [{services: [0x180d]}]})" + " .catch(e => e.toString());")); } IN_PROC_BROWSER_TEST_F(WebBluetoothTest, KillSwitchShouldBlock) { @@ -610,15 +607,14 @@ permissions::PermissionContextBase::kPermissionsKillSwitchFieldStudy, "TestGroup"); - std::string rejection; - EXPECT_TRUE(content::ExecuteScriptAndExtractString( - web_contents_.get(), - "navigator.bluetooth.requestDevice({filters: [{name: 'Hello'}]})" - " .then(() => { domAutomationController.send('Success'); }," - " reason => {" - " domAutomationController.send(reason.name + ': ' + reason.message);" - " });", - &rejection)); + std::string rejection = + content::EvalJs( + web_contents_.get(), + "navigator.bluetooth.requestDevice({filters: [{name: 'Hello'}]})" + " .then(() => 'Success'," + " reason => reason.name + ': ' + reason.message" + " );") + .ExtractString(); EXPECT_THAT(rejection, testing::MatchesRegex("NotFoundError: .*globally disabled.*")); } @@ -651,15 +647,14 @@ "TestGroup"); } - std::string rejection; - EXPECT_TRUE(content::ExecuteScriptAndExtractString( - web_contents_.get(), - "navigator.bluetooth.requestDevice({filters: [{services: [0xed5f25a4]}]})" - " .then(() => { domAutomationController.send('Success'); }," - " reason => {" - " domAutomationController.send(reason.name + ': ' + reason.message);" - " });", - &rejection)); + std::string rejection = + content::EvalJs(web_contents_.get(), + "navigator.bluetooth.requestDevice({filters: [{services: " + "[0xed5f25a4]}]})" + " .then(() => 'Success'," + " reason => reason.name + ': ' + reason.message" + " );") + .ExtractString(); EXPECT_THAT(rejection, testing::MatchesRegex("SecurityError: .*blocklisted UUID.*")); }
diff --git a/chrome/browser/cart/cart_service.cc b/chrome/browser/cart/cart_service.cc index 68ebf76d..fbd4a23 100644 --- a/chrome/browser/cart/cart_service.cc +++ b/chrome/browser/cart/cart_service.cc
@@ -505,7 +505,7 @@ should_show &= (last_dismissed_time == base::Time() || reshow_time_delta.is_negative()) && - last_dismissed_count < + last_dismissed_count <= commerce::kNtpChromeCartModuleDiscountConsentMaxDismissalCount .Get(); }
diff --git a/chrome/browser/cart/cart_service.h b/chrome/browser/cart/cart_service.h index 5e17699..08e0a21 100644 --- a/chrome/browser/cart/cart_service.h +++ b/chrome/browser/cart/cart_service.h
@@ -69,7 +69,7 @@ // Load the cart for a domain. void LoadCart(const std::string& domain, CartDB::LoadCallback callback); // Load all active carts in this service. - void LoadAllActiveCarts(CartDB::LoadCallback callback); + virtual void LoadAllActiveCarts(CartDB::LoadCallback callback); // Add a cart to the cart service. void AddCart(const GURL& navigation_url, const absl::optional<GURL>& cart_url,
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc index 628b0148..80ec7b81 100644 --- a/chrome/browser/chrome_browser_interface_binders.cc +++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -988,7 +988,7 @@ ash::FirmwareUpdateAppUI, ash::ScanningUI, ash::OSFeedbackUI, ash::ShortcutCustomizationAppUI, ash::printing::printing_manager::PrintManagementUI, - ash::InternetDetailDialogUI, ash::SetTimeUI, + ash::InternetConfigDialogUI, ash::InternetDetailDialogUI, ash::SetTimeUI, #endif NewTabPageUI, OmniboxPopupUI, BookmarksSidePanelUI, CustomizeChromeUI>( map);
diff --git a/chrome/browser/companion/core/features.cc b/chrome/browser/companion/core/features.cc index 10b20b26..373e5ed 100644 --- a/chrome/browser/companion/core/features.cc +++ b/chrome/browser/companion/core/features.cc
@@ -19,6 +19,11 @@ base::FEATURE_DISABLED_BY_DEFAULT); constexpr base::FeatureParam<std::string> kHomepageURLForCompanion{ &kSidePanelCompanion, "companion-homepage-url", "https://www.example.com"}; +constexpr base::FeatureParam<std::string> kImageUploadURLForCompanion{ + &kSidePanelCompanion, "companion-image-upload-url", + "https://www.example.com"}; +constexpr base::FeatureParam<bool> kEnableOpenCompanionForImageSearch{ + &kSidePanelCompanion, "open-companion-for-image-search", true}; } // namespace features
diff --git a/chrome/browser/companion/core/features.h b/chrome/browser/companion/core/features.h index eb38810..41af4039 100644 --- a/chrome/browser/companion/core/features.h +++ b/chrome/browser/companion/core/features.h
@@ -14,6 +14,8 @@ BASE_DECLARE_FEATURE(kSidePanelCompanion); extern const base::FeatureParam<std::string> kHomepageURLForCompanion; +extern const base::FeatureParam<std::string> kImageUploadURLForCompanion; +extern const base::FeatureParam<bool> kEnableOpenCompanionForImageSearch; } // namespace features
diff --git a/chrome/browser/companion/core/mojom/companion.mojom b/chrome/browser/companion/core/mojom/companion.mojom index b4d86e38..25c11c8 100644 --- a/chrome/browser/companion/core/mojom/companion.mojom +++ b/chrome/browser/companion/core/mojom/companion.mojom
@@ -48,6 +48,22 @@ kRejected = 3, }; +// Data for uploading an image query. +struct ImageQuery { + // URL to upload the image query to. + url.mojom.Url upload_url; + // URL of the image if it exists. + url.mojom.Url image_url; + // Content type representing the image to pass in the POST form. + string content_type; + // Array of image bytes to query. + array<uint8> image_bytes; + // Height of the image before transformations. + uint32 height; + // Width of the image before transformations. + uint32 width; +}; + // Factory method for creating a new WebUI page handler. interface CompanionPageHandlerFactory { // The WebUI calls this method when the page is first initialized. @@ -82,4 +98,8 @@ // Results in a postmessage() call to the companion with the encoded protobuf // representation of the update params. UpdateCompanionPage(string companion_update_proto); + + // Pass a new companion URL needed along with a byte string representing the + // image bytes that should be used for the query. + OnImageQuery(ImageQuery image_query); };
diff --git a/chrome/browser/companion/text_finder/text_finder.cc b/chrome/browser/companion/text_finder/text_finder.cc index d5dc371c..188b401 100644 --- a/chrome/browser/companion/text_finder/text_finder.cc +++ b/chrome/browser/companion/text_finder/text_finder.cc
@@ -47,7 +47,8 @@ is_found_ = !rect.IsEmpty(); if (did_finish_callback_) { - std::move(did_finish_callback_).Run(is_found_); + std::move(did_finish_callback_) + .Run(std::make_pair(text_directive_, is_found_)); } // Close the mojo binding to remove the annotation agent in the renderer
diff --git a/chrome/browser/companion/text_finder/text_finder.h b/chrome/browser/companion/text_finder/text_finder.h index 4750188..f63ecd2 100644 --- a/chrome/browser/companion/text_finder/text_finder.h +++ b/chrome/browser/companion/text_finder/text_finder.h
@@ -26,10 +26,11 @@ // See crbug.com/1430306. class TextFinder : public blink::mojom::AnnotationAgentHost { public: - // The callback type invoked when text search in the renderer is finished. - // A boolean parameter, indicating the result of text search (true if - // found), is passed to the callback from the caller. - using FinishedCallback = base::OnceCallback<void(bool)>; + // The callback type invoked when text search in the renderer is finished. The + // input param is a pair of a text string and its bool search result (true if + // found). + using FinishedCallback = + base::OnceCallback<void(std::pair<std::string, bool>)>; using AgentDisconnectHandler = base::OnceClosure; TextFinder(
diff --git a/chrome/browser/companion/text_finder/text_finder_manager.cc b/chrome/browser/companion/text_finder/text_finder_manager.cc index 0ef4d19..9a8e5c2 100644 --- a/chrome/browser/companion/text_finder/text_finder_manager.cc +++ b/chrome/browser/companion/text_finder/text_finder_manager.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/barrier_callback.h" #include "base/functional/bind.h" #include "base/unguessable_token.h" #include "chrome/browser/companion/text_finder/text_finder.h" @@ -40,6 +41,17 @@ return id; } +void TextFinderManager::CreateTextFinders( + const std::vector<std::string>& text_directives, + AllDoneCallback all_done_callback) { + const auto finished_callback = + base::BarrierCallback<std::pair<std::string, bool>>( + text_directives.size(), std::move(all_done_callback)); + for (const auto& text_directive : text_directives) { + CreateTextFinder(text_directive, finished_callback); + } +} + void TextFinderManager::RemoveTextFinder(base::UnguessableToken id) { finder_map_.erase(id); }
diff --git a/chrome/browser/companion/text_finder/text_finder_manager.h b/chrome/browser/companion/text_finder/text_finder_manager.h index 0e815a3..547d9b8 100644 --- a/chrome/browser/companion/text_finder/text_finder_manager.h +++ b/chrome/browser/companion/text_finder/text_finder_manager.h
@@ -7,6 +7,7 @@ #include <memory> #include <unordered_map> +#include <vector> #include "base/memory/weak_ptr.h" #include "base/unguessable_token.h" @@ -19,6 +20,9 @@ class TextFinderManager : public content::PageUserData<TextFinderManager> { public: + using AllDoneCallback = base::OnceCallback<void( + const std::vector<std::pair<std::string, bool>>&)>; + ~TextFinderManager() override; TextFinderManager(const TextFinderManager&) = delete; @@ -33,13 +37,20 @@ const std::string& text_directive, TextFinder::FinishedCallback callback); + // Creates multiple text finders for a vector of text directives. Calls + // `all_done_callback` when all text finders finish searching (via + // `base::BarrierCallback`). + void CreateTextFinders(const std::vector<std::string>& text_directives, + AllDoneCallback all_done_callback); + // Returns the number of text finder instances. size_t Size() const; private: friend class content::PageUserData<TextFinderManager>; friend class TextFinderManagerBaseTest; - FRIEND_TEST_ALL_PREFIXES(TextFinderManagerTest, TextFinderTest); + FRIEND_TEST_ALL_PREFIXES(TextFinderManagerTest, SingleTextFinderTest); + FRIEND_TEST_ALL_PREFIXES(TextFinderManagerTest, MultiTextFindersTest); explicit TextFinderManager(content::Page& page);
diff --git a/chrome/browser/companion/text_finder/text_finder_manager_unittest.cc b/chrome/browser/companion/text_finder/text_finder_manager_unittest.cc index 9c4f7b5..4526d55 100644 --- a/chrome/browser/companion/text_finder/text_finder_manager_unittest.cc +++ b/chrome/browser/companion/text_finder/text_finder_manager_unittest.cc
@@ -24,7 +24,7 @@ void SetUp() override { TextFinderManagerBaseTest::SetUp(); } }; -TEST_F(TextFinderManagerTest, TextFinderTest) { +TEST_F(TextFinderManagerTest, SingleTextFinderTest) { // Set up a text finder manager bound to the mock agent container. MockAnnotationAgentContainer mock_agent_container; TextFinderManager* manager = @@ -32,8 +32,9 @@ // Create a new text finder. const std::string text_directive = "ab,cd"; - base::OnceCallback<void(bool)> finished_finding_callback = - base::BindOnce([](bool is_found) { return; }); + base::OnceCallback<void(std::pair<std::string, bool>)> + finished_finding_callback = base::BindOnce( + [](std::pair<std::string, bool> text_found) { return; }); const auto id = manager->CreateTextFinder( text_directive, std::move(finished_finding_callback)); EXPECT_EQ(manager->Size(), 1u); @@ -43,4 +44,36 @@ EXPECT_EQ(manager->Size(), 0u); } +TEST_F(TextFinderManagerTest, MultiTextFindersTest) { + // Set up a text finder manager bound to the mock agent container. + MockAnnotationAgentContainer mock_agent_container; + TextFinderManager* manager = + CreateTextFinderManagerForTest(&mock_agent_container); + + // Create multiple text finders. + const std::vector<std::string> text_directives = {"ab,cd", "def"}; + TextFinderManager::AllDoneCallback all_done_callback = base::BindOnce( + [](const std::vector<std::pair<std::string, bool>>& text_found) { + ASSERT_EQ(text_found.size(), 2u); + // One found, one not found. + EXPECT_TRUE(text_found[0].second || text_found[1].second); + EXPECT_FALSE(text_found[0].second && text_found[1].second); + }); + manager->CreateTextFinders(text_directives, std::move(all_done_callback)); + EXPECT_EQ(manager->Size(), 2u); + + gfx::Rect rect_1(2, 4), rect_2; + for (const auto& id_and_text_finder : manager->finder_map_) { + EXPECT_TRUE(id_and_text_finder.second->GetTextDirective() == "ab,cd" || + id_and_text_finder.second->GetTextDirective() == "def"); + if (id_and_text_finder.second->GetTextDirective() == "ab,cd") { + // Found text + id_and_text_finder.second->DidFinishAttachment(rect_1); + } else { + // Not found. + id_and_text_finder.second->DidFinishAttachment(rect_2); + } + } +} + } // namespace companion
diff --git a/chrome/browser/companion/text_finder/text_finder_unittest.cc b/chrome/browser/companion/text_finder/text_finder_unittest.cc index 4623eec..5d64d0b 100644 --- a/chrome/browser/companion/text_finder/text_finder_unittest.cc +++ b/chrome/browser/companion/text_finder/text_finder_unittest.cc
@@ -15,7 +15,9 @@ TextFinderTest() = default; ~TextFinderTest() override = default; - void SetFindingState(bool found) { is_found_ = found; } + void SetFindingState(std::pair<std::string, bool> text_found) { + is_found_ = text_found.second; + } protected: bool is_found_ = false;
diff --git a/chrome/browser/creator/android/java/src/org/chromium/chrome/browser/creator/CreatorCoordinator.java b/chrome/browser/creator/android/java/src/org/chromium/chrome/browser/creator/CreatorCoordinator.java index bad1b13..13d93071a 100644 --- a/chrome/browser/creator/android/java/src/org/chromium/chrome/browser/creator/CreatorCoordinator.java +++ b/chrome/browser/creator/android/java/src/org/chromium/chrome/browser/creator/CreatorCoordinator.java
@@ -27,7 +27,7 @@ import org.chromium.chrome.browser.feed.FeedListContentManager; import org.chromium.chrome.browser.feed.FeedListContentManager.FeedContent; import org.chromium.chrome.browser.feed.FeedStream; -import org.chromium.chrome.browser.feed.FeedSurfaceScopeDependencyProvider; +import org.chromium.chrome.browser.feed.FeedSurfaceScopeDependencyProviderImpl; import org.chromium.chrome.browser.feed.FeedSurfaceTracker; import org.chromium.chrome.browser.feed.NativeViewListRenderer; import org.chromium.chrome.browser.feed.SingleWebFeedEntryPoint; @@ -92,7 +92,7 @@ private ViewGroup mLayoutView; private HybridListRenderer mHybridListRenderer; private SurfaceScope mSurfaceScope; - private FeedSurfaceScopeDependencyProvider mDependencyProvider; + private FeedSurfaceScopeDependencyProviderImpl mDependencyProvider; private PropertyModel mCreatorModel; private PropertyModelChangeProcessor<PropertyModel, CreatorProfileView, PropertyKey> mCreatorProfileModelChangeProcessor; @@ -288,7 +288,7 @@ ProcessScope processScope = FeedSurfaceTracker.getInstance().getXSurfaceProcessScope(); if (processScope != null) { - mDependencyProvider = new FeedSurfaceScopeDependencyProvider( + mDependencyProvider = new FeedSurfaceScopeDependencyProviderImpl( mActivity, mActivity, ColorUtils.inNightMode(mActivity)); mSurfaceScope = processScope.obtainSurfaceScope(mDependencyProvider); } else {
diff --git a/chrome/browser/dips/dips_bounce_detector.cc b/chrome/browser/dips/dips_bounce_detector.cc index cb6e89f..8b09c513 100644 --- a/chrome/browser/dips/dips_bounce_detector.cc +++ b/chrome/browser/dips/dips_bounce_detector.cc
@@ -5,14 +5,21 @@ #include "chrome/browser/dips/dips_bounce_detector.h" #include <cmath> +#include <cstddef> +#include <memory> #include <vector> +#include "base/allocator/partition_allocator/pointers/raw_ptr.h" +#include "base/check.h" #include "base/functional/bind.h" #include "base/functional/overloaded.h" #include "base/metrics/histogram_functions.h" +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" #include "base/time/default_clock.h" #include "base/time/default_tick_clock.h" #include "base/time/time.h" +#include "base/timer/timer.h" #include "chrome/browser/dips/cookie_access_filter.h" #include "chrome/browser/dips/dips_features.h" #include "chrome/browser/dips/dips_redirect_info.h" @@ -25,6 +32,7 @@ #include "content/public/browser/navigation_handle_user_data.h" #include "services/metrics/public/cpp/ukm_recorder.h" #include "third_party/blink/public/mojom/devtools/inspector_issue.mojom.h" +#include "url/gurl.h" using content::NavigationHandle; @@ -97,7 +105,14 @@ redirect_context_( base::BindRepeating(&DIPSBounceDetectorDelegate::HandleRedirectChain, base::Unretained(delegate)), - /*initial_url=*/GURL::EmptyGURL()) {} + /*initial_url=*/GURL::EmptyGURL()), + client_bounce_detection_timer_( + FROM_HERE, + dips::kClientBounceDetectionTimeout.Get(), + base::BindRepeating( + &DIPSBounceDetector::OnClientBounceDetectionTimeout, + base::Unretained(this)), + tick_clock) {} DIPSBounceDetector::~DIPSBounceDetector() = default; @@ -144,17 +159,22 @@ base::Overloaded{ [&](DIPSRedirectInfoPtr client_redirect) { // The uncommitted navigation began with a client redirect, so its - // chain is considered an extension of the in-progress chain - // (without modifying it). + // chain is considered an extension of *this* + // `DIPSRedirectContext`'s in-progress chain within the temp + // `DIPSRedirectContext`, whilst leaving *this* + // `DIPSRedirectContext`'s in-progress chain unchanged. DIPSRedirectContext temp_context(handler_, initial_url_); temp_context.AppendClientRedirect(std::move(client_redirect)); temp_context.AppendServerRedirects(std::move(server_redirects)); temp_context.EndChain(std::move(final_url)); }, - [&](GURL client_url) { + [&](GURL previous_nav_last_committed_url) { // The uncommitted navigation began *without* a client redirect, so - // it started a new chain (the in-progress chain is irrelevant.) - DIPSRedirectContext temp_context(handler_, client_url); + // a new redirect chain within a new `DIPSRedirectContext` and + // process it immediately (the in-progress chain in *this* + // `DIPSRedirectContext` is irrelevant). + DIPSRedirectContext temp_context(handler_, + previous_nav_last_committed_url); temp_context.AppendServerRedirects(std::move(server_redirects)); temp_context.EndChain(std::move(final_url)); }, @@ -165,18 +185,20 @@ void DIPSRedirectContext::AppendCommitted( DIPSNavigationStart navigation_start, std::vector<DIPSRedirectInfoPtr> server_redirects) { - // If there was a client-side redirect, grow the chain. Otherwise, end it. + // If there was a client-side redirect before + // `DIPSBounceDetector::client_bounce_detection_timer_` timedout, grow the + // chain. Otherwise, end it. absl::visit( // base::Overloaded{ [this](DIPSRedirectInfoPtr client_redirect) { // The committed navigation began with a client redirect, so extend - // the in-progress chain. + // the in-progress redirect chain. AppendClientRedirect(std::move(client_redirect)); }, - [this](GURL client_url) { + [this](GURL previous_nav_last_committed_url) { // The committed navigation began *without* a client redirect, so - // end the old chain and start a new one. - EndChain(std::move(client_url)); + // end the in-progress redirect chain and start a new one. + EndChain(previous_nav_last_committed_url); }, }, std::move(navigation_start)); @@ -185,19 +207,19 @@ AppendServerRedirects(std::move(server_redirects)); } -void DIPSRedirectContext::EndChain(GURL url) { +void DIPSRedirectContext::EndChain(GURL final_url) { if (!initial_url_.is_empty()) { // Uncommitted chains may omit earlier (committed) redirects in the chain, // so |redirects_.size()| may not tell us the correct chain length. Instead, // use the index of the last item in the chain (since it was generated based // on the committed chain length). int length = redirects_.empty() ? 0 : redirects_.back()->index + 1; - auto chain = - std::make_unique<DIPSRedirectChainInfo>(initial_url_, url, length); + auto chain = std::make_unique<DIPSRedirectChainInfo>(initial_url_, + final_url, length); handler_.Run(std::move(redirects_), std::move(chain)); } - initial_url_ = std::move(url); + initial_url_ = std::move(final_url); redirects_.clear(); update_offset_ = 0; } @@ -326,23 +348,37 @@ void DIPSBounceDetector::DidStartNavigation( DIPSNavigationHandle* navigation_handle) { - base::TimeTicks now = tick_clock_->NowTicks(); + // These resources need to be collected as soon as possible, although some + // might not be used: + bool timedout = !client_bounce_detection_timer_.IsRunning(); + client_bounce_detection_timer_.Stop(); + auto now = tick_clock_->NowTicks(); - DIPSRedirectInfoPtr client_redirect; - if (client_detection_state_.has_value()) { - base::TimeDelta bounce_delay = - now - client_detection_state_->page_load_time; + auto* server_bounce_detection_state = navigation_handle->GetServerState(); - if (!navigation_handle->HasUserGesture() && - (bounce_delay < dips::kBounceTimeout.Get())) { - // Time between page load and client-side redirect starting is only - // tracked for stateful bounces. - if (client_detection_state_->cookie_access_type > - CookieAccessType::kNone) { - UmaHistogramTimeToBounce(bounce_delay); - } + // A user gesture indicates no client-redirect. And, we won't consider a + // client-redirect to be a bounce if we timedout on the + // `client_bounce_detection_timer_ `. + if (navigation_handle->HasUserGesture() || timedout || + !client_detection_state_.has_value()) { + server_bounce_detection_state->navigation_start = + delegate_->GetLastCommittedURL(); + return; + } - client_redirect = std::make_unique<DIPSRedirectInfo>( + base::TimeDelta client_bounce_delay = + now - client_detection_state_->page_load_time; + // The delay between the previous navigation commit and the current + // client-redirect is only tracked for stateful bounces. + if (client_detection_state_->cookie_access_type > CookieAccessType::kNone) { + UmaHistogramTimeToBounce(client_bounce_delay); + } + + // We cannot append this client-redirect to |redirect_context_| immediately, + // because we don't know if the navigation will commit. We must wait until + // DidFinishNavigation() is triggered. + server_bounce_detection_state->navigation_start = + std::make_unique<DIPSRedirectInfo>( /*url=*/delegate_->GetLastCommittedURL(), /*redirect_type=*/DIPSRedirectType::kClient, /*access_type=*/client_detection_state_->cookie_access_type, @@ -350,27 +386,9 @@ /*source_id=*/ delegate_->GetPageUkmSourceId(), /*time=*/clock_->Now(), - /*client_bounce_delay=*/bounce_delay, + /*client_bounce_delay=*/client_bounce_delay, /*has_sticky_activation=*/ client_detection_state_->last_activation_time.has_value()); - // We cannot append |client_redirect| to |redirect_context_| immediately, - // because we don't know if the navigation will commit. We must wait until - // DidFinishNavigation(). - } - // Similarly, we can't call redirect_context_->EndChain() yet even if this - // navigation isn't a redirect. (Technically, if more than - // kBounceThresholdSeconds time has passed, we can be certain that the chain - // has ended; but for code simplicity, we ignore that.) - } - - ServerBounceDetectionState* server_state = - navigation_handle->GetServerState(); - - if (client_redirect) { - server_state->navigation_start = std::move(client_redirect); - } else { - server_state->navigation_start = delegate_->GetLastCommittedURL(); - } } void DIPSWebContentsObserver::OnCookiesAccessed( @@ -461,6 +479,10 @@ void DIPSBounceDetector::DidFinishNavigation( DIPSNavigationHandle* navigation_handle) { base::TimeTicks now = tick_clock_->NowTicks(); + + // Starts the timer. + client_bounce_detection_timer_.Reset(); + // Iff the primary page changed, reset the client detection state while // storing the page load time and previous_url. A primary page change is // verified by checking IsInPrimaryMainFrame, !IsSameDocument, and @@ -604,7 +626,10 @@ } void DIPSBounceDetector::BeforeDestruction() { - // Handle the current chain before the tab closes and the state is lost. + redirect_context_.EndChain(delegate_->GetLastCommittedURL()); +} + +void DIPSBounceDetector::OnClientBounceDetectionTimeout() { redirect_context_.EndChain(delegate_->GetLastCommittedURL()); }
diff --git a/chrome/browser/dips/dips_bounce_detector.h b/chrome/browser/dips/dips_bounce_detector.h index 73562b93..163e542 100644 --- a/chrome/browser/dips/dips_bounce_detector.h +++ b/chrome/browser/dips/dips_bounce_detector.h
@@ -9,10 +9,13 @@ #include <string> #include <variant> +#include "base/allocator/partition_allocator/pointers/raw_ptr.h" #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" +#include "base/timer/timer.h" #include "base/types/optional_ref.h" #include "chrome/browser/dips/cookie_access_filter.h" +#include "chrome/browser/dips/dips_features.h" #include "chrome/browser/dips/dips_redirect_info.h" #include "chrome/browser/dips/dips_service.h" #include "chrome/browser/dips/dips_utils.h" @@ -62,18 +65,25 @@ const GURL& initial_url); ~DIPSRedirectContext(); - // Immediately calls the DIPSRedirectChainHandler for the uncommitted + // Immediately calls the `DIPSRedirectChainHandler` for the uncommitted // navigation. It will take into account the length and initial URL of the // current chain (without modifying it). void HandleUncommitted(DIPSNavigationStart navigation_start, std::vector<DIPSRedirectInfoPtr> server_redirects, GURL final_url); - // Either terminates the current redirect chain (and starts a new one) or - // extends it, according to the value of `navigation_start`. + + // Either calls for termination of the in-progress redirect chain, with a + // start of a new one, or extends it, according to the value of + // `navigation_start`. void AppendCommitted(DIPSNavigationStart navigation_start, std::vector<DIPSRedirectInfoPtr> server_redirects); - // Terminates the current redirect chain, ending it with the given URL. - void EndChain(GURL url); + + // Terminates the in-progress redirect chain, ending it with `final_url`, and + // parsing it to the `DIPSRedirectChainHandler` iff the chain is valid. It + // also starts a fresh redirect chain with `final_url` whilst clearing the + // state of the terminated chain. + // NOTE: A chain is valid if it has a non-empty `initial_url_`. + void EndChain(GURL final_url); [[nodiscard]] bool AddLateCookieAccess(GURL url, CookieOperation op); @@ -90,6 +100,8 @@ void AppendServerRedirects(std::vector<DIPSRedirectInfoPtr> server_redirects); DIPSRedirectChainHandler handler_; + // Represents the start of a chain and also indicates the presence of a valid + // chain. GURL initial_url_; std::vector<DIPSRedirectInfoPtr> redirects_; // The index of the last redirect to have a known cookie access. When adding @@ -190,13 +202,17 @@ // Only records a new user activation event once per // |kTimestampUpdateInterval| for a given page. void OnUserActivation(); + // Makes a call to process the current chain before its state is destroyed by + // the tab closure. void BeforeDestruction(); - // Use the passed handler instead of // DIPSBounceDetectorDelegate::HandleRedirect(). void SetRedirectChainHandlerForTesting(DIPSRedirectChainHandler handler) { redirect_context_.SetRedirectChainHandlerForTesting(handler); } + // Makes a call to process the current chain on + // `client_bounce_detection_timer_`'s timeout. + void OnClientBounceDetectionTimeout(); private: // Whether or not the `last_time` timestamp should be updated yet. This is @@ -217,6 +233,7 @@ raw_ptr<DIPSBounceDetectorDelegate> delegate_; absl::optional<ClientBounceDetectionState> client_detection_state_; DIPSRedirectContext redirect_context_; + base::RetainingOneShotTimer client_bounce_detection_timer_; }; // A thin wrapper around DIPSBounceDetector to use it as a WebContentsObserver.
diff --git a/chrome/browser/dips/dips_bounce_detector_unittest.cc b/chrome/browser/dips/dips_bounce_detector_unittest.cc index 75fec8f..08c372ca 100644 --- a/chrome/browser/dips/dips_bounce_detector_unittest.cc +++ b/chrome/browser/dips/dips_bounce_detector_unittest.cc
@@ -14,6 +14,7 @@ #include "base/test/task_environment.h" #include "base/time/time.h" #include "base/types/pass_key.h" +#include "chrome/browser/dips/dips_features.h" #include "chrome/browser/dips/dips_service.h" #include "chrome/browser/dips/dips_test_utils.h" #include "chrome/browser/dips/dips_utils.h" @@ -157,10 +158,6 @@ std::vector<std::string> reported_sites_; }; -// If you wait this long, even a navigation without user gesture is not -// considered to be a bounce. -const base::TimeDelta kTooLongForRedirect = base::Seconds(10); - class FakeNavigation : public DIPSNavigationHandle { public: FakeNavigation(DIPSBounceDetector* detector, @@ -219,6 +216,9 @@ class DIPSBounceDetectorTest : public ::testing::Test { protected: + base::test::TaskEnvironment task_environment_{ + base::test::TaskEnvironment::TimeSource::MOCK_TIME}; + FakeNavigation StartNavigation(const std::string& url, UserGestureStatus status) { return FakeNavigation(&detector_, &delegate_, GURL(url), @@ -239,15 +239,15 @@ void ActivatePage() { detector_.OnUserActivation(); } - void EndRedirectChain() { - // Committing a new navigation that began with a user gesture will terminate - // any previous redirect chain. - NavigateTo("http://endchain", kWithUserGesture); + void AdvanceDIPSTime(base::TimeDelta delta) { + task_environment_.AdvanceClock(delta); + task_environment_.RunUntilIdle(); } - void AdvanceDIPSTime(base::TimeDelta delta) { - test_clock_.Advance(delta); - test_tick_clock_.Advance(delta); + // Advances the mocked clock by `dips::kClientBounceDetectionTimeout` to + // trigger the closure of the pending redirect chain. + void EndPendingRedirectChain() { + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get()); } const std::string& URLForNavigationSourceId(ukm::SourceId source_id) { @@ -282,7 +282,9 @@ return delegate_.GetReportedSites(); } - base::Time GetCurrentTime() { return test_clock_.Now(); } + base::Time GetCurrentTime() { + return task_environment_.GetMockClock()->Now(); + } const std::vector<std::string>& redirects() const { return delegate_.redirects(); @@ -290,11 +292,102 @@ private: TestBounceDetectorDelegate delegate_; - base::SimpleTestTickClock test_tick_clock_; - base::SimpleTestClock test_clock_; - DIPSBounceDetector detector_{&delegate_, &test_tick_clock_, &test_clock_}; + DIPSBounceDetector detector_{&delegate_, task_environment_.GetMockTickClock(), + task_environment_.GetMockClock()}; }; +// Ensures that for every navigation, a client redirect occurring before +// `dips:kClientBounceDetectionTimeout` is considered a bounce whilst leaving +// Server redirects unaffected. +TEST_F(DIPSBounceDetectorTest, + DetectStatefulRedirects_Before_ClientBounceDetectionTimeout) { + NavigateTo("http://a.test", kWithUserGesture); + auto mocked_bounce_time_1 = GetCurrentTime(); + StartNavigation("http://b.test", kWithUserGesture) + .RedirectTo("http://c.test") + .RedirectTo("http://d.test") + .Finish(true); + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get() - base::Seconds(1)); + auto mocked_bounce_time_2 = GetCurrentTime(); + StartNavigation("http://e.test", kNoUserGesture) + .RedirectTo("http://f.test") + .RedirectTo("http://g.test") + .Finish(true); + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get() - base::Seconds(1)); + auto mocked_bounce_time_3 = GetCurrentTime(); + StartNavigation("http://h.test", kWithUserGesture) + .RedirectTo("http://i.test") + .RedirectTo("http://j.test") + .Finish(true); + + EndPendingRedirectChain(); + + EXPECT_THAT(redirects(), testing::ElementsAre( + ("[1/5] a.test/ -> b.test/ (None) -> g.test/"), + ("[2/5] a.test/ -> c.test/ (None) -> g.test/"), + ("[3/5] a.test/ -> d.test/ (None) -> g.test/"), + ("[4/5] a.test/ -> e.test/ (None) -> g.test/"), + ("[5/5] a.test/ -> f.test/ (None) -> g.test/"), + ("[1/2] g.test/ -> h.test/ (None) -> j.test/"), + ("[2/2] g.test/ -> i.test/ (None) -> j.test/"))); + + EXPECT_THAT(GetRecordedBounces(), + testing::UnorderedElementsAre( + MakeBounceTuple("http://b.test", mocked_bounce_time_1, + /*stateful=*/false), + MakeBounceTuple("http://c.test", mocked_bounce_time_1, + /*stateful=*/false), + MakeBounceTuple("http://d.test", mocked_bounce_time_2, + /*stateful=*/false), + MakeBounceTuple("http://e.test", mocked_bounce_time_2, + /*stateful=*/false), + MakeBounceTuple("http://f.test", mocked_bounce_time_2, + /*stateful=*/false), + MakeBounceTuple("http://h.test", mocked_bounce_time_3, + /*stateful=*/false), + MakeBounceTuple("http://i.test", mocked_bounce_time_3, + /*stateful=*/false))); +} + +// Ensures that for every navigation, a client redirect occurring after +// `dips:kClientBounceDetectionTimeout` is not considered a bounce whilst server +// redirects are unaffected. +TEST_F(DIPSBounceDetectorTest, + DetectStatefulRedirects_After_ClientBounceDetectionTimeout) { + NavigateTo("http://a.test", kWithUserGesture); + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get()); + auto mocked_bounce_time_1 = GetCurrentTime(); + StartNavigation("http://b.test", kWithUserGesture) + .RedirectTo("http://c.test") + .RedirectTo("http://d.test") + .Finish(true); + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get()); + auto mocked_bounce_time_2 = GetCurrentTime(); + StartNavigation("http://e.test", kNoUserGesture) + .RedirectTo("http://f.test") + .RedirectTo("http://g.test") + .Finish(true); + + EndPendingRedirectChain(); + + EXPECT_THAT(redirects(), testing::ElementsAre( + ("[1/2] a.test/ -> b.test/ (None) -> d.test/"), + ("[2/2] a.test/ -> c.test/ (None) -> d.test/"), + ("[1/2] d.test/ -> e.test/ (None) -> g.test/"), + ("[2/2] d.test/ -> f.test/ (None) -> g.test/"))); + + EXPECT_THAT(GetRecordedBounces(), + testing::UnorderedElementsAre( + MakeBounceTuple("http://b.test", mocked_bounce_time_1, + /*stateful=*/false), + MakeBounceTuple("http://c.test", mocked_bounce_time_1, + /*stateful=*/false), + MakeBounceTuple("http://e.test", mocked_bounce_time_2, + /*stateful=*/false), + MakeBounceTuple("http://f.test", mocked_bounce_time_2, + /*stateful=*/false))); +} + TEST_F(DIPSBounceDetectorTest, DetectStatefulRedirect_Server) { NavigateTo("http://a.test", kWithUserGesture); StartNavigation("http://b.test", kWithUserGesture) @@ -307,7 +400,9 @@ .RedirectTo("http://e.test") .Finish(true); - EndRedirectChain(); + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT(redirects(), testing::ElementsAre( @@ -317,11 +412,11 @@ EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre( - MakeBounceTuple("http://b.test", GetCurrentTime(), + MakeBounceTuple("http://b.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://c.test", GetCurrentTime(), + MakeBounceTuple("http://c.test", mocked_bounce_time, /*stateful=*/true), - MakeBounceTuple("http://d.test", GetCurrentTime(), + MakeBounceTuple("http://d.test", mocked_bounce_time, /*stateful=*/true))); } @@ -340,7 +435,9 @@ LateAccessClientCookie("http://e.test", CookieOperation::kRead); LateAccessClientCookie("http://e.test", CookieOperation::kChange); - EndRedirectChain(); + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT( redirects(), @@ -350,26 +447,29 @@ EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre( - MakeBounceTuple("http://b.test", GetCurrentTime(), + MakeBounceTuple("http://b.test", mocked_bounce_time, /*stateful=*/true), - MakeBounceTuple("http://c.test", GetCurrentTime(), + MakeBounceTuple("http://c.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://d.test", GetCurrentTime(), + MakeBounceTuple("http://d.test", mocked_bounce_time, /*stateful=*/true))); } TEST_F(DIPSBounceDetectorTest, DetectStatefulRedirect_Client) { NavigateTo("http://a.test", kWithUserGesture); NavigateTo("http://b.test", kWithUserGesture); - AdvanceDIPSTime(base::TimeDelta(base::Seconds(1))); + AdvanceDIPSTime(dips::kClientBounceDetectionTimeout.Get() - base::Seconds(1)); NavigateTo("http://c.test", kNoUserGesture); - EndRedirectChain(); + + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT(redirects(), testing::ElementsAre( ("[1/1] a.test/ -> b.test/ (None) -> c.test/"))); EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre(MakeBounceTuple( - "http://b.test", GetCurrentTime(), /*stateful=*/false))); + "http://b.test", mocked_bounce_time, /*stateful=*/false))); } TEST_F(DIPSBounceDetectorTest, DetectStatefulRedirect_Client_MergeCookies) { @@ -379,9 +479,14 @@ .AccessCookie(CookieOperation::kRead) .Finish(true); // Client cookie write: + // NOTE: This navigation's client redirect will always be considered a bounce + // because of the (frozen) mocked clock. AccessClientCookie(CookieOperation::kChange); NavigateTo("http://c.test", kNoUserGesture); - EndRedirectChain(); + + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); // Redirect cookie access is reported as ReadWrite. EXPECT_THAT(redirects(), @@ -389,19 +494,7 @@ ("[1/1] a.test/ -> b.test/ (ReadWrite) -> c.test/"))); EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre(MakeBounceTuple( - "http://b.test", GetCurrentTime(), /*stateful=*/true))); -} - -TEST_F(DIPSBounceDetectorTest, - DetectStatefulRedirect_Client_LongDelayNotRedirect) { - NavigateTo("http://a.test", kWithUserGesture); - NavigateTo("http://b.test", kWithUserGesture); - AdvanceDIPSTime(kTooLongForRedirect); - NavigateTo("http://c.test", kNoUserGesture); - EndRedirectChain(); - - EXPECT_THAT(redirects(), testing::IsEmpty()); - EXPECT_THAT(GetRecordedBounces(), testing::IsEmpty()); + "http://b.test", mocked_bounce_time, /*stateful=*/true))); } TEST_F(DIPSBounceDetectorTest, DetectStatefulRedirect_ServerClientServer) { @@ -412,7 +505,10 @@ StartNavigation("http://d.test", kNoUserGesture) .RedirectTo("http://e.test") .Finish(true); - EndRedirectChain(); + + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT(redirects(), testing::ElementsAre( ("[1/3] a.test/ -> b.test/ (None) -> e.test/"), @@ -420,11 +516,11 @@ ("[3/3] a.test/ -> d.test/ (None) -> e.test/"))); EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre( - MakeBounceTuple("http://b.test", GetCurrentTime(), + MakeBounceTuple("http://b.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://c.test", GetCurrentTime(), + MakeBounceTuple("http://c.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://d.test", GetCurrentTime(), + MakeBounceTuple("http://d.test", mocked_bounce_time, /*stateful=*/false))); } @@ -439,7 +535,10 @@ StartNavigation("http://e.test", kWithUserGesture) .RedirectTo("http://f.test") .Finish(true); - EndRedirectChain(); + + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT(redirects(), testing::ElementsAre( ("[1/2] a.test/ -> b.test/ (None) -> d.test/"), @@ -447,11 +546,11 @@ ("[1/1] a.test/ -> e.test/ (None) -> f.test/"))); EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre( - MakeBounceTuple("http://b.test", GetCurrentTime(), + MakeBounceTuple("http://b.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://c.test", GetCurrentTime(), + MakeBounceTuple("http://c.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://e.test", GetCurrentTime(), + MakeBounceTuple("http://e.test", mocked_bounce_time, /*stateful=*/false))); } @@ -466,7 +565,10 @@ StartNavigation("http://e.test", kNoUserGesture) .RedirectTo("http://f.test") .Finish(true); - EndRedirectChain(); + + auto mocked_bounce_time = GetCurrentTime(); + + EndPendingRedirectChain(); EXPECT_THAT(redirects(), testing::ElementsAre( ("[1/2] a.test/ -> b.test/ (None) -> d.test/"), @@ -475,11 +577,11 @@ ("[2/2] a.test/ -> e.test/ (None) -> f.test/"))); EXPECT_THAT(GetRecordedBounces(), testing::UnorderedElementsAre( - MakeBounceTuple("http://b.test", GetCurrentTime(), + MakeBounceTuple("http://b.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://c.test", GetCurrentTime(), + MakeBounceTuple("http://c.test", mocked_bounce_time, /*stateful=*/false), - MakeBounceTuple("http://e.test", GetCurrentTime(), + MakeBounceTuple("http://e.test", mocked_bounce_time, /*stateful=*/false))); } @@ -744,7 +846,7 @@ .AccessCookie(CookieOperation::kChange) .RedirectTo("http://d.test") .Finish(true); - EndRedirectChain(); + EndPendingRedirectChain(); base::HistogramTester::CountsMap expected_counts; expected_counts["Privacy.DIPS.BounceCategoryClient.Standard"] = 1; @@ -773,7 +875,6 @@ } TEST_F(DIPSBounceDetectorTest, Histograms_UKM) { - base::test::SingleThreadTaskEnvironment task_environment; ukm::TestAutoSetUkmRecorder ukm_recorder; SetSiteHasInteraction("http://c.test"); @@ -786,7 +887,8 @@ .AccessCookie(CookieOperation::kChange) .RedirectTo("http://d.test") .Finish(true); - EndRedirectChain(); + + EndPendingRedirectChain(); std::vector<ukm::TestUkmRecorder::HumanReadableUkmEntry> ukm_entries = ukm_recorder.GetEntries("DIPS.Redirect", GetAllRedirectMetrics());
diff --git a/chrome/browser/dips/dips_features.cc b/chrome/browser/dips/dips_features.cc index 713de4d..271ec7a 100644 --- a/chrome/browser/dips/dips_features.cc +++ b/chrome/browser/dips/dips_features.cc
@@ -62,6 +62,6 @@ // is viewed as a bounce (provided all other criteria are equally met). The // interval starts every time a page finishes a navigation (a.k.a. a commit is // registered). -const base::FeatureParam<base::TimeDelta> kBounceTimeout{ - &kFeature, "bounce_timeout", base::Seconds(10)}; +const base::FeatureParam<base::TimeDelta> kClientBounceDetectionTimeout{ + &kFeature, "client_bounce_detection_timeout", base::Seconds(10)}; } // namespace dips
diff --git a/chrome/browser/dips/dips_features.h b/chrome/browser/dips/dips_features.h index 322f6f95..7f62d55 100644 --- a/chrome/browser/dips/dips_features.h +++ b/chrome/browser/dips/dips_features.h
@@ -19,7 +19,7 @@ extern const base::FeatureParam<base::TimeDelta> kTimerDelay; extern const base::FeatureParam<base::TimeDelta> kInteractionTtl; extern const base::FeatureParam<DIPSTriggeringAction> kTriggeringAction; -extern const base::FeatureParam<base::TimeDelta> kBounceTimeout; +extern const base::FeatureParam<base::TimeDelta> kClientBounceDetectionTimeout; } // namespace dips #endif // CHROME_BROWSER_DIPS_DIPS_FEATURES_H_
diff --git a/chrome/browser/extensions/extension_webui_apitest.cc b/chrome/browser/extensions/extension_webui_apitest.cc index 223bbca..c7c193d 100644 --- a/chrome/browser/extensions/extension_webui_apitest.cc +++ b/chrome/browser/extensions/extension_webui_apitest.cc
@@ -31,6 +31,7 @@ #include "extensions/common/extension.h" #include "extensions/test/extension_test_message_listener.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/accessibility/accessibility_features.h" namespace extensions { @@ -40,6 +41,11 @@ // Tests running extension APIs on WebUI. class ExtensionWebUITest : public ExtensionApiTest { + public: + ExtensionWebUITest() { + scoped_feature_list_.InitWithFeatures({features::kReadAnything}, {}); + } + protected: testing::AssertionResult RunTest(const char* name, const GURL& page_url, @@ -84,6 +90,9 @@ // Tests should fail. return RunTest(name, GURL("chrome://about"), false); } + + private: + base::test::ScopedFeatureList scoped_feature_list_; }; // Tests running within an <extensionoptions>.
diff --git a/chrome/browser/feed/android/BUILD.gn b/chrome/browser/feed/android/BUILD.gn index 1bad6c26..a05f634 100644 --- a/chrome/browser/feed/android/BUILD.gn +++ b/chrome/browser/feed/android/BUILD.gn
@@ -35,7 +35,7 @@ "java/src/org/chromium/chrome/browser/feed/FeedSurfaceDelegate.java", "java/src/org/chromium/chrome/browser/feed/FeedSurfaceLifecycleManager.java", "java/src/org/chromium/chrome/browser/feed/FeedSurfaceProvider.java", - "java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java", + "java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProviderImpl.java", "java/src/org/chromium/chrome/browser/feed/FeedSurfaceScrollDelegate.java", "java/src/org/chromium/chrome/browser/feed/FeedSurfaceTracker.java", "java/src/org/chromium/chrome/browser/feed/FeedSwipeRefreshLayout.java",
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLogger.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLogger.java index f1a97c3..d8a25764 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLogger.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLogger.java
@@ -114,4 +114,4 @@ private static long now() { return SystemClock.elapsedRealtimeNanos(); } -} \ No newline at end of file +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggerTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggerTest.java index fdcce1af..dc0be42 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggerTest.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggerTest.java
@@ -131,4 +131,4 @@ .logLaunchFinished( anyLong(), eq(DiscoverLaunchResult.NAVIGATED_TO_ANOTHER_TAB.getNumber())); } -} \ No newline at end of file +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggingBridge.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggingBridge.java index 0d65c28..9eaab8d 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggingBridge.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedReliabilityLoggingBridge.java
@@ -161,4 +161,4 @@ long init(FeedReliabilityLoggingBridge thisRef); void destroy(long nativeFeedReliabilityLoggingBridge); } -} \ No newline at end of file +}
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java index bd61ea5..481d73f 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStream.java
@@ -50,7 +50,6 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.xsurface.FeedActionsHandler; import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger; -import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger.StreamType; import org.chromium.chrome.browser.xsurface.FeedUserInteractionReliabilityLogger; import org.chromium.chrome.browser.xsurface.HybridListRenderer; import org.chromium.chrome.browser.xsurface.ListLayoutHelper; @@ -59,6 +58,7 @@ import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenMode; import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenWebFeedEntryPoint; import org.chromium.chrome.browser.xsurface.SurfaceScope; +import org.chromium.chrome.browser.xsurface.feed.StreamType; import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController.StateChangeReason; @@ -396,7 +396,8 @@ /** * Implementation of FeedActionsHandler methods. */ - class FeedActionsHandlerImpl implements FeedActionsHandler { + class FeedActionsHandlerImpl + implements org.chromium.chrome.browser.xsurface.FeedActionsHandler { private static final int SNACKBAR_DURATION_MS_SHORT = 4000; private static final int SNACKBAR_DURATION_MS_LONG = 10000; // This is based on the menu animation time (218ms) from BottomSheet.java. @@ -462,12 +463,37 @@ mNativeFeedStream, FeedStream.this, changeId); } + private @org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler.SnackbarDuration + int convertDuration(SnackbarDuration duration) { + switch (duration) { + case SHORT: + return org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler + .SnackbarDuration.SHORT; + case LONG: + return org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler + .SnackbarDuration.LONG; + } + return org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler.SnackbarDuration + .SHORT; + } + @Override public void showSnackbar(String text, String actionLabel, SnackbarDuration duration, - SnackbarController delegateController) { + SnackbarController controller) { + showSnackbar(text, actionLabel, convertDuration(duration), controller); + } + + @Override + public void showSnackbar(String text, String actionLabel, + @org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler.SnackbarDuration + int duration, + org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler + .SnackbarController delegateController) { assert ThreadUtils.runningOnUiThread(); int durationMs = SNACKBAR_DURATION_MS_SHORT; - if (duration == FeedActionsHandler.SnackbarDuration.LONG) { + if (duration + == org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler.SnackbarDuration + .LONG) { durationMs = SNACKBAR_DURATION_MS_LONG; } SnackbarManager.SnackbarController controller = @@ -807,7 +833,7 @@ FeedStreamJni.get().surfaceOpened(mNativeFeedStream, FeedStream.this); if (mFeedUserInteractionReliabilityLogger != null) { - mFeedUserInteractionReliabilityLogger.onStreamOpened(getXSurfaceStreamType()); + mFeedUserInteractionReliabilityLogger.onStreamOpened(getStreamType()); } } @@ -1205,20 +1231,6 @@ } } - // TODO(jianli): Consolidate 2 StreamType defined in different places. - private @org.chromium.chrome.browser.xsurface.StreamType int getXSurfaceStreamType() { - switch (mStreamKind) { - case StreamKind.FOR_YOU: - return org.chromium.chrome.browser.xsurface.StreamType.FOR_YOU; - case StreamKind.FOLLOWING: - return org.chromium.chrome.browser.xsurface.StreamType.WEB_FEED; - case StreamKind.SINGLE_WEB_FEED: - return org.chromium.chrome.browser.xsurface.StreamType.SINGLE_WEB_FEED; - default: - return org.chromium.chrome.browser.xsurface.StreamType.UNSPECIFIED; - } - } - /** * Restores the scroll state serialized to |savedInstanceState|. * @return true if the scroll state was restored, or if the state could never be restored.
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java index 5a56d8c..3b3fbde 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedStreamTest.java
@@ -68,7 +68,6 @@ import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; -import org.chromium.chrome.browser.xsurface.FeedActionsHandler; import org.chromium.chrome.browser.xsurface.FeedLaunchReliabilityLogger; import org.chromium.chrome.browser.xsurface.FeedUserInteractionReliabilityLogger; import org.chromium.chrome.browser.xsurface.HybridListRenderer; @@ -77,6 +76,7 @@ import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.OpenUrlOptions; import org.chromium.chrome.browser.xsurface.SurfaceActionsHandler.WebFeedFollowUpdate; import org.chromium.chrome.browser.xsurface.SurfaceScope; +import org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler; import org.chromium.chrome.test.util.browser.Features; import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.feed.proto.FeedUiProto;
diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProviderImpl.java similarity index 79% rename from chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java rename to chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProviderImpl.java index c1f38013..4511c78 100644 --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProvider.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedSurfaceScopeDependencyProviderImpl.java
@@ -20,15 +20,16 @@ /** * Provides activity, darkmode and logging context for a single surface. */ -public class FeedSurfaceScopeDependencyProvider - implements SurfaceScopeDependencyProvider, ScrollListener { +public class FeedSurfaceScopeDependencyProviderImpl + implements org.chromium.chrome.browser.xsurface.feed.FeedSurfaceScopeDependencyProvider, + ScrollListener { private static final String TAG = "Feed"; private final Activity mActivity; private final Context mActivityContext; private final boolean mDarkMode; private final ObserverList<SurfaceHeaderOffsetObserver> mObserverList = new ObserverList<>(); - public FeedSurfaceScopeDependencyProvider( + public FeedSurfaceScopeDependencyProviderImpl( Activity activity, Context activityContext, boolean darkMode) { mActivityContext = FeedProcessScopeDependencyProvider.createFeedContext(activityContext); mDarkMode = darkMode; @@ -50,8 +51,26 @@ return mDarkMode; } + @Deprecated @Override - public AutoplayPreference getAutoplayPreference() { + public SurfaceScopeDependencyProvider.AutoplayPreference getAutoplayPreference() { + assert ThreadUtils.runningOnUiThread(); + @VideoPreviewsType + int videoPreviewsType = FeedServiceBridge.getVideoPreviewsTypePreference(); + switch (videoPreviewsType) { + case VideoPreviewsType.NEVER: + return SurfaceScopeDependencyProvider.AutoplayPreference.AUTOPLAY_DISABLED; + case VideoPreviewsType.WIFI_AND_MOBILE_DATA: + return SurfaceScopeDependencyProvider.AutoplayPreference + .AUTOPLAY_ON_WIFI_AND_MOBILE_DATA; + case VideoPreviewsType.WIFI: + default: + return SurfaceScopeDependencyProvider.AutoplayPreference.AUTOPLAY_ON_WIFI_ONLY; + } + } + + @Override + public AutoplayPreference getAutoplayPreference2() { assert ThreadUtils.runningOnUiThread(); @VideoPreviewsType int videoPreviewsType = FeedServiceBridge.getVideoPreviewsTypePreference();
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 671d32b..6b84d53 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -845,6 +845,11 @@ "expiry_milestone": 120 }, { + "name": "borealis-dgpu", + "owners": [ "dbehr@google.com", "chromeos-gfx-gpu@google.com", "buganizer-system+995569@google.com" ], + "expiry_milestone": 130 + }, + { "name": "borealis-disk-management", "owners": [ "danielng@google.com", "borealis-syd@google.com", "buganizer-system+961348@google.com" ], "expiry_milestone": 120
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 569bc4f..dfaf769 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -675,6 +675,9 @@ const char kBorealisBigGlName[] = "Borealis Big GL"; const char kBorealisBigGlDescription[] = "Enable Big GL when running Borealis."; +const char kBorealisDGPUName[] = "Borealis dGPU"; +const char kBorealisDGPUDescription[] = "Enable dGPU when running Borealis."; + const char kBorealisDiskManagementName[] = "Borealis Disk management"; const char kBorealisDiskManagementDescription[] = "Enable experimental disk management settings.";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index ef120fcb..7d0d5d8 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -369,6 +369,9 @@ extern const char kBorealisBigGlName[]; extern const char kBorealisBigGlDescription[]; +extern const char kBorealisDGPUName[]; +extern const char kBorealisDGPUDescription[]; + extern const char kBorealisDiskManagementName[]; extern const char kBorealisDiskManagementDescription[];
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/BUILD.gn b/chrome/browser/new_tab_page/modules/history_clusters/BUILD.gn index 286757dd..3aee6a6 100644 --- a/chrome/browser/new_tab_page/modules/history_clusters/BUILD.gn +++ b/chrome/browser/new_tab_page/modules/history_clusters/BUILD.gn
@@ -9,6 +9,7 @@ webui_module_path = "/" use_typescript_sources = true public_deps = [ + "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings", "//components/history_clusters/public/mojom:mojo_bindings", "//mojo/public/mojom/base", "//url/mojom:url_mojom_gurl",
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/BUILD.gn b/chrome/browser/new_tab_page/modules/history_clusters/cart/BUILD.gn new file mode 100644 index 0000000..78fd6374 --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/BUILD.gn
@@ -0,0 +1,12 @@ +# Copyright 2023 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//mojo/public/tools/bindings/mojom.gni") + +mojom("mojo_bindings") { + sources = [ "cart.mojom" ] + public_deps = [ "//url/mojom:url_mojom_gurl" ] + webui_module_path = "/" + use_typescript_sources = true +}
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/OWNERS b/chrome/browser/new_tab_page/modules/history_clusters/cart/OWNERS new file mode 100644 index 0000000..08850f4 --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/OWNERS
@@ -0,0 +1,2 @@ +per-file *.mojom=set noparent +per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom new file mode 100644 index 0000000..4098e72 --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom
@@ -0,0 +1,25 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module ntp.history_clusters.cart.mojom; + +import "url/mojom/url.mojom"; + +// Information needed to show cart for one merchant in Quest module. +struct Cart { + // Domain of the merchant that this cart comes from. This is the + // primary key to identify carts. + string domain; + // Merchant that this cart comes from. + string merchant; + // URL that directs to the cart page. + url.mojom.Url cart_url; + // List of URLs for product images to show in the cart. + array<url.mojom.Url> product_image_urls; + // Text content of the discount on this cart (e.g. 15% off). + string discount_text; + // Localized string of approximate timestamp of the last time user + // interacts with cart (e.g. visit, add product, etc), e.g., "2 days ago". + string relative_date; +}; \ No newline at end of file
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.cc b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.cc new file mode 100644 index 0000000..c9c6452 --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.cc
@@ -0,0 +1,69 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h" + +#include "base/strings/utf_string_conversions.h" +#include "base/time/time.h" +#include "chrome/browser/cart/cart_service.h" +#include "net/base/registry_controlled_domains/registry_controlled_domain.h" +#include "net/base/url_util.h" +#include "ui/base/l10n/time_format.h" + +namespace { +std::string eTLDPlusOne(const GURL& url) { + return net::registry_controlled_domains::GetDomainAndRegistry( + url, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); +} + +ntp::history_clusters::cart::mojom::CartPtr CartToMojom( + CartDB::KeyAndValue cart) { + auto cart_mojom = ntp::history_clusters::cart::mojom::Cart::New(); + cart_mojom->domain = cart.first; + cart_mojom->merchant = cart.second.merchant(); + cart_mojom->cart_url = GURL(cart.second.merchant_cart_url()); + for (std::string image_url : cart.second.product_image_urls()) { + cart_mojom->product_image_urls.emplace_back(std::move(image_url)); + } + cart_mojom->relative_date = base::UTF16ToUTF8(ui::TimeFormat::Simple( + ui::TimeFormat::FORMAT_ELAPSED, ui::TimeFormat::LENGTH_SHORT, + base::Time::Now() - base::Time::FromDoubleT(cart.second.timestamp()))); + return cart_mojom; +} +} // namespace + +CartProcessor::CartProcessor(CartService* cart_service) + : cart_service_(cart_service) {} + +CartProcessor::~CartProcessor() = default; + +void CartProcessor::GetCartForCluster( + history_clusters::mojom::ClusterPtr cluster, + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback + callback) { + cart_service_->LoadAllActiveCarts( + base::BindOnce(&CartProcessor::OnLoadCart, weak_ptr_factory_.GetWeakPtr(), + std::move(cluster), std::move(callback))); +} + +void CartProcessor::OnLoadCart( + history_clusters::mojom::ClusterPtr cluster, + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback + callback, + bool success, + std::vector<CartDB::KeyAndValue> carts) { + if (!success) { + std::move(callback).Run(nullptr); + return; + } + for (auto cart : carts) { + for (auto& visit : cluster->visits) { + if (cart.first == eTLDPlusOne(GURL(visit->url_for_display))) { + std::move(callback).Run(CartToMojom(cart)); + return; + } + } + } + std::move(callback).Run(nullptr); +}
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h new file mode 100644 index 0000000..59b0abb --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h
@@ -0,0 +1,41 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_HISTORY_CLUSTERS_CART_CART_PROCESSOR_H_ +#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_HISTORY_CLUSTERS_CART_CART_PROCESSOR_H_ + +#include "base/memory/weak_ptr.h" +#include "chrome/browser/cart/cart_db.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" +#include "components/history_clusters/public/mojom/history_cluster_types.mojom.h" + +class CartService; + +class CartProcessor { + public: + explicit CartProcessor(CartService* cart_service); + CartProcessor(const CartProcessor&) = delete; + CartProcessor& operator=(const CartProcessor&) = delete; + ~CartProcessor(); + + // Get the most relevant cart for the given `cluster`. + void GetCartForCluster( + history_clusters::mojom::ClusterPtr cluster, + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback + callback); + + private: + void OnLoadCart( + history_clusters::mojom::ClusterPtr cluster, + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback + callback, + bool success, + std::vector<CartDB::KeyAndValue> carts); + + raw_ptr<CartService> cart_service_; + base::WeakPtrFactory<CartProcessor> weak_ptr_factory_{this}; +}; + +#endif // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_HISTORY_CLUSTERS_CART_CART_PROCESSOR_H_
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor_unittest.cc b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor_unittest.cc new file mode 100644 index 0000000..af5fd202 --- /dev/null +++ b/chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor_unittest.cc
@@ -0,0 +1,224 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h" +#include "base/test/mock_callback.h" +#include "chrome/browser/cart/cart_db.h" +#include "chrome/browser/cart/cart_service.h" +#include "chrome/browser/cart/cart_service_factory.h" +#include "chrome/browser/history/history_service_factory.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" +#include "chrome/test/base/browser_with_test_window_test.h" +#include "chrome/test/base/testing_profile.h" +#include "components/history_clusters/public/mojom/history_cluster_types.mojom.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +const char kMockMerchantName[] = "FOO"; +const char kMockMerchantDomain[] = "foo.com"; +const char kMockMerchantCartURL[] = "https://www.foo.com/cart"; +const char kMockProductImageURLA[] = "https://www.foo.com/imageA"; +const char kMockProductImageURLB[] = "https://www.foo.com/imageB"; +const char kMockMerchantPageURL[] = "https://www.foo.com/test"; + +class MockCartService : public CartService { + public: + explicit MockCartService(Profile* profile) : CartService(profile) {} + + MOCK_METHOD1(LoadAllActiveCarts, void(CartDB::LoadCallback callback)); +}; +} // namespace + +class CartProcessorTest : public BrowserWithTestWindowTest { + public: + CartProcessorTest() = default; + + void SetUp() override { + BrowserWithTestWindowTest::SetUp(); + + mock_cart_service_ = static_cast<MockCartService*>( + CartServiceFactory::GetForProfile(profile())); + cart_processor_ = std::make_unique<CartProcessor>(mock_cart_service_.get()); + } + + CartProcessor& cart_processor() { return *cart_processor_; } + + MockCartService& mock_cart_service() { return *mock_cart_service_; } + + private: + // BrowserWithTestWindowTest: + TestingProfile::TestingFactories GetTestingFactories() override { + return {{HistoryServiceFactory::GetInstance(), + HistoryServiceFactory::GetDefaultFactory()}, + {CartServiceFactory::GetInstance(), + base::BindRepeating([](content::BrowserContext* context) + -> std::unique_ptr<KeyedService> { + return std::make_unique<MockCartService>( + Profile::FromBrowserContext(context)); + })}}; + } + + raw_ptr<MockCartService> mock_cart_service_; + std::unique_ptr<CartProcessor> cart_processor_; +}; + +TEST_F(CartProcessorTest, TestFindCartForCluster) { + // Create a fake cluster with one visit. + auto cluster_mojom = history_clusters::mojom::Cluster::New(); + auto visit_mojom = history_clusters::mojom::URLVisit::New(); + visit_mojom->url_for_display = kMockMerchantPageURL; + cluster_mojom->visits.push_back(std::move(visit_mojom)); + + // Mock a fake cart that belongs to the same domain as the visit. + MockCartService& cart_service = mock_cart_service(); + cart_db::ChromeCartContentProto cart_proto; + cart_proto.set_key(kMockMerchantDomain); + std::vector<CartDB::KeyAndValue> carts = {{kMockMerchantDomain, cart_proto}}; + EXPECT_CALL(cart_service, LoadAllActiveCarts(testing::_)) + .Times(1) + .WillOnce(testing::WithArgs<0>( + testing::Invoke([&carts](CartDB::LoadCallback callback) -> void { + std::move(callback).Run(true, carts); + }))); + + // Capture the cart mojom that is finally returned. + ntp::history_clusters::cart::mojom::CartPtr cart_mojom; + base::MockCallback< + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback> + callback; + EXPECT_CALL(callback, Run(testing::_)) + .Times(1) + .WillOnce(testing::Invoke( + [&cart_mojom](ntp::history_clusters::cart::mojom::CartPtr cart) { + cart_mojom = std::move(cart); + })); + + cart_processor().GetCartForCluster(std::move(cluster_mojom), callback.Get()); + + ASSERT_TRUE(cart_mojom); + ASSERT_EQ(cart_mojom->domain, kMockMerchantDomain); +} + +TEST_F(CartProcessorTest, TestNoCartForCluster) { + // Create a fake cluster with one visit. + auto cluster_mojom = history_clusters::mojom::Cluster::New(); + auto visit_mojom = history_clusters::mojom::URLVisit::New(); + visit_mojom->url_for_display = kMockMerchantPageURL; + cluster_mojom->visits.push_back(std::move(visit_mojom)); + + // Mock a fake cart that belongs to a different domain as the visit. + const std::string domain = "bar.com"; + MockCartService& cart_service = mock_cart_service(); + cart_db::ChromeCartContentProto cart_proto; + cart_proto.set_key(domain); + std::vector<CartDB::KeyAndValue> carts = {{domain, cart_proto}}; + EXPECT_CALL(cart_service, LoadAllActiveCarts(testing::_)) + .Times(1) + .WillOnce(testing::WithArgs<0>( + testing::Invoke([&carts](CartDB::LoadCallback callback) -> void { + std::move(callback).Run(true, carts); + }))); + + // Capture the cart mojom that is finally returned. + ntp::history_clusters::cart::mojom::CartPtr cart_mojom; + base::MockCallback< + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback> + callback; + EXPECT_CALL(callback, Run(testing::_)) + .Times(1) + .WillOnce(testing::Invoke( + [&cart_mojom](ntp::history_clusters::cart::mojom::CartPtr cart) { + cart_mojom = std::move(cart); + })); + + cart_processor().GetCartForCluster(std::move(cluster_mojom), callback.Get()); + + ASSERT_FALSE(cart_mojom); +} + +TEST_F(CartProcessorTest, TestNoCartForFailedLoad) { + // Create a fake cluster with one visit. + auto cluster_mojom = history_clusters::mojom::Cluster::New(); + auto visit_mojom = history_clusters::mojom::URLVisit::New(); + visit_mojom->url_for_display = kMockMerchantPageURL; + cluster_mojom->visits.push_back(std::move(visit_mojom)); + + // Mock the DB load fails. + MockCartService& cart_service = mock_cart_service(); + cart_db::ChromeCartContentProto cart_proto; + cart_proto.set_key(kMockMerchantDomain); + std::vector<CartDB::KeyAndValue> carts = {{kMockMerchantDomain, cart_proto}}; + EXPECT_CALL(cart_service, LoadAllActiveCarts(testing::_)) + .Times(1) + .WillOnce(testing::WithArgs<0>( + testing::Invoke([&carts](CartDB::LoadCallback callback) -> void { + std::move(callback).Run(false, carts); + }))); + + // Capture the cart mojom that is finally returned. + ntp::history_clusters::cart::mojom::CartPtr cart_mojom; + base::MockCallback< + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback> + callback; + EXPECT_CALL(callback, Run(testing::_)) + .Times(1) + .WillOnce(testing::Invoke( + [&cart_mojom](ntp::history_clusters::cart::mojom::CartPtr cart) { + cart_mojom = std::move(cart); + })); + + cart_processor().GetCartForCluster(std::move(cluster_mojom), callback.Get()); + + ASSERT_FALSE(cart_mojom); +} + +TEST_F(CartProcessorTest, TestCartToMojom) { + // Create a fake cluster with one visit. + auto cluster_mojom = history_clusters::mojom::Cluster::New(); + auto visit_mojom = history_clusters::mojom::URLVisit::New(); + visit_mojom->url_for_display = kMockMerchantPageURL; + cluster_mojom->visits.push_back(std::move(visit_mojom)); + + // Mock a fake cart that belongs to the same domain as the visit, and add full + // information to the fake cart. + MockCartService& cart_service = mock_cart_service(); + cart_db::ChromeCartContentProto cart_proto; + cart_proto.set_key(kMockMerchantDomain); + cart_proto.set_merchant(kMockMerchantName); + cart_proto.set_merchant_cart_url(kMockMerchantCartURL); + cart_proto.add_product_image_urls(kMockProductImageURLA); + cart_proto.add_product_image_urls(kMockProductImageURLB); + std::vector<CartDB::KeyAndValue> carts = {{kMockMerchantDomain, cart_proto}}; + EXPECT_CALL(cart_service, LoadAllActiveCarts(testing::_)) + .Times(1) + .WillOnce(testing::WithArgs<0>( + testing::Invoke([&carts](CartDB::LoadCallback callback) -> void { + std::move(callback).Run(true, carts); + }))); + + // Capture the cart mojom that is finally returned. + ntp::history_clusters::cart::mojom::CartPtr cart_mojom; + base::MockCallback< + ntp::history_clusters::mojom::PageHandler::GetCartForClusterCallback> + callback; + EXPECT_CALL(callback, Run(testing::_)) + .Times(1) + .WillOnce(testing::Invoke( + [&cart_mojom](ntp::history_clusters::cart::mojom::CartPtr cart) { + cart_mojom = std::move(cart); + })); + + cart_processor().GetCartForCluster(std::move(cluster_mojom), callback.Get()); + + ASSERT_TRUE(cart_mojom); + ASSERT_EQ(cart_mojom->domain, kMockMerchantDomain); + ASSERT_EQ(cart_mojom->merchant, kMockMerchantName); + ASSERT_EQ(cart_mojom->cart_url, GURL(kMockMerchantCartURL)); + ASSERT_EQ(cart_mojom->product_image_urls.size(), 2u); + ASSERT_EQ(cart_mojom->product_image_urls[0], GURL(kMockProductImageURLA)); + ASSERT_EQ(cart_mojom->product_image_urls[1], GURL(kMockProductImageURLB)); +}
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom index a9bc0b8e..8c7c0113 100644 --- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom +++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom
@@ -4,6 +4,7 @@ module ntp.history_clusters.mojom; +import "chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom"; import "components/history_clusters/public/mojom/history_cluster_types.mojom"; import "url/mojom/url.mojom"; @@ -12,6 +13,10 @@ // Get a series of relevant history clusters. GetClusters() => (array<history_clusters.mojom.Cluster> clusters); + // Get the most relevant cart for given `cluster`. + GetCartForCluster(history_clusters.mojom.Cluster cluster) + => (ntp.history_clusters.cart.mojom.Cart? cart); + // Open or make visible the Journeys UI on the Side Panel. ShowJourneysSidePanel(string query);
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.cc b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.cc index 64c8bbe..68bc414 100644 --- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.cc +++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.cc
@@ -9,6 +9,7 @@ #include <vector> #include "base/barrier_callback.h" +#include "base/feature_list.h" #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" @@ -19,6 +20,7 @@ #include "chrome/browser/cart/cart_service_factory.h" #include "chrome/browser/history/history_service_factory.h" #include "chrome/browser/history_clusters/history_clusters_service_factory.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart_processor.h" #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" #include "chrome/browser/new_tab_page/new_tab_page_util.h" #include "chrome/browser/profiles/profile.h" @@ -223,7 +225,12 @@ profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())), web_contents_(web_contents), filter_params_(GetFilterParamsFromFeatureFlags()), - cart_service_(CartServiceFactory::GetForProfile(profile_)) {} + cart_service_(CartServiceFactory::GetForProfile(profile_)) { + if (base::FeatureList::IsEnabled( + ntp_features::kNtpChromeCartInHistoryClusterModule)) { + cart_processor_ = std::make_unique<CartProcessor>(cart_service_); + } +} HistoryClustersPageHandler::~HistoryClustersPageHandler() { receiver_.reset(); @@ -396,6 +403,18 @@ weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } +void HistoryClustersPageHandler::GetCartForCluster( + history_clusters::mojom::ClusterPtr cluster, + GetCartForClusterCallback callback) { + if (!base::FeatureList::IsEnabled( + ntp_features::kNtpChromeCartInHistoryClusterModule)) { + std::move(callback).Run(nullptr); + return; + } + DCHECK(cart_processor_); + cart_processor_->GetCartForCluster(std::move(cluster), std::move(callback)); +} + void HistoryClustersPageHandler::ShowJourneysSidePanel( const std::string& query) { // TODO(crbug.com/1341399): Revisit integration with the side panel once the
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.h b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.h index 3ee99389..8a07210d 100644 --- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.h +++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.h
@@ -11,6 +11,7 @@ #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/task/cancelable_task_tracker.h" +#include "chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom.h" #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h" #include "components/history/core/browser/history_types.h" #include "components/history_clusters/core/history_clusters_types.h" @@ -21,6 +22,7 @@ class Profile; class GURL; class CartService; +class CartProcessor; namespace content { class WebContents; @@ -44,6 +46,8 @@ // mojom::PageHandler: void GetClusters(GetClustersCallback callback) override; + void GetCartForCluster(history_clusters::mojom::ClusterPtr cluster, + GetCartForClusterCallback callback) override; void ShowJourneysSidePanel(const std::string& query) override; void OpenUrlsInTabGroup(const std::vector<GURL>&) override; void DismissCluster( @@ -69,6 +73,7 @@ fetch_clusters_task_; base::CancelableTaskTracker hide_visits_task_tracker_; raw_ptr<CartService> cart_service_; + std::unique_ptr<CartProcessor> cart_processor_; base::WeakPtrFactory<HistoryClustersPageHandler> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler_unittest.cc b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler_unittest.cc index 60c1b29..fcdc4227 100644 --- a/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler_unittest.cc +++ b/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler_unittest.cc
@@ -82,6 +82,7 @@ MOCK_METHOD2(HasActiveCartForURL, void(const GURL& url, base::OnceCallback<void(bool)> callback)); + MOCK_METHOD1(LoadAllActiveCarts, void(CartDB::LoadCallback callback)); }; constexpr char kSampleNonSearchUrl[] = "https://www.foo.com/"; @@ -592,6 +593,12 @@ ASSERT_EQ(1u, visit_ids.front()); } +TEST_F(HistoryClustersPageHandlerTest, NotLoadCartWithoutFeature) { + history_clusters::mojom::ClusterPtr cluster_mojom; + EXPECT_CALL(mock_cart_service(), LoadAllActiveCarts(testing::_)).Times(0); + handler().GetCartForCluster(std::move(cluster_mojom), base::DoNothing()); +} + class HistoryClustersPageHandlerCartTest : public HistoryClustersPageHandlerTest { public: @@ -673,3 +680,21 @@ histogram_tester.ExpectTotalCount( "NewTabPage.HistoryClusters.HasCartForTopCluster", 2); } + +class HistoryClustersPageHandlerCartInQuestTest + : public HistoryClustersPageHandlerTest { + public: + HistoryClustersPageHandlerCartInQuestTest() { + features_.InitAndEnableFeature( + ntp_features::kNtpChromeCartInHistoryClusterModule); + } + + private: + base::test::ScopedFeatureList features_; +}; + +TEST_F(HistoryClustersPageHandlerCartInQuestTest, LoadCartWithFeature) { + history_clusters::mojom::ClusterPtr cluster_mojom; + EXPECT_CALL(mock_cart_service(), LoadAllActiveCarts(testing::_)).Times(1); + handler().GetCartForCluster(std::move(cluster_mojom), base::DoNothing()); +}
diff --git a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc index 239e928..6da0ddd 100644 --- a/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core/ukm_page_load_metrics_observer.cc
@@ -1309,9 +1309,6 @@ builder.Record(ukm::UkmRecorder::Get()); base::UmaHistogramPercentage( - "Graphics.Smoothness.PerSession.95pctPercentDroppedFrames_1sWindow", - smoothness_data.percentile_95); - base::UmaHistogramPercentage( "Graphics.Smoothness.PerSession.MaxPercentDroppedFrames_1sWindow", smoothness_data.worst_smoothness); }
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 4ddca261..08fc2ac 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc
@@ -811,6 +811,12 @@ "filebrowser.office.move_confirmation_shown"; #endif // BUILDFLAG(IS_CHROMEOS_ASH) +// Deprecated 04/2023. +#if BUILDFLAG(IS_CHROMEOS_ASH) +const char kProximityAuthIsChromeOSLoginEnabled[] = + "proximity_auth.is_chromeos_login_enabled"; +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + // Register local state used only for migration (clearing or moving to a new // key). void RegisterLocalStatePrefsForMigration(PrefRegistrySimple* registry) { @@ -1111,6 +1117,11 @@ registry->RegisterBooleanPref(kOfficeFilesAlwaysMove, false); registry->RegisterBooleanPref(kOfficeMoveConfirmationShown, false); #endif // BUILDFLAG(IS_CHROMEOS_ASH) + +// Deprecated 04/2023. +#if BUILDFLAG(IS_CHROMEOS_ASH) + registry->RegisterBooleanPref(kProximityAuthIsChromeOSLoginEnabled, false); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) } } // namespace @@ -2155,6 +2166,11 @@ profile_prefs->ClearPref(kOfficeMoveConfirmationShown); #endif // BUILDFLAG(IS_CHROMEOS_ASH) +// Added 04/2023. +#if BUILDFLAG(IS_CHROMEOS_ASH) + profile_prefs->ClearPref(kProximityAuthIsChromeOSLoginEnabled); +#endif // BUILDFLAG(IS_CHROMEOS_ASH) + // Please don't delete the following line. It is used by PRESUBMIT.py. // END_MIGRATE_OBSOLETE_PROFILE_PREFS
diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java index 90e1fc5..37a6334 100644 --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/v4/PrivacySandboxDialogNoticeRestrictedV4.java
@@ -75,7 +75,7 @@ public void onClick(View view) { int id = view.getId(); if (id == R.id.ack_button) { - PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_ACKNOWLEDGE); + PrivacySandboxBridge.promptActionOccurred(PromptAction.RESTRICTED_NOTICE_ACKNOWLEDGE); dismiss(); } else if (id == R.id.settings_button) { PrivacySandboxBridge.promptActionOccurred(PromptAction.NOTICE_OPEN_SETTINGS);
diff --git a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java index 7431ab7..5a337662 100644 --- a/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java +++ b/chrome/browser/privacy_sandbox/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxDialogTest.java
@@ -533,7 +533,7 @@ (int) mFakePrivacySandboxBridge.getLastPromptAction()); // Ack the notice and verify it worked correctly. tryClickOn(withId(R.id.ack_button)); - assertEquals("Last dialog action", PromptAction.NOTICE_ACKNOWLEDGE, + assertEquals("Last dialog action", PromptAction.RESTRICTED_NOTICE_ACKNOWLEDGE, (int) mFakePrivacySandboxBridge.getLastPromptAction()); onView(withId(R.id.privacy_sandbox_notice_title)).check(doesNotExist());
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc index c7e5fae..e8bd1e70 100644 --- a/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.cc
@@ -360,6 +360,7 @@ RecordUpdatedTopicsConsent( privacy_sandbox::TopicsConsentUpdateSource::kConfirmation, false); } + // TODO(crbug.com/1428506): Handle PromptAction::kRestrictedNoticeAcknowledge. } // static @@ -1632,6 +1633,11 @@ "Settings.PrivacySandbox.Notice.MoreButtonClicked")); break; } + case (PromptAction::kRestrictedNoticeAcknowledge): { + base::RecordAction(base::UserMetricsAction( + "Settings.PrivacySandbox.RestrictedNotice.Acknowledged")); + break; + } } }
diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service.h b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h index a72cfae6..7d1e60f2 100644 --- a/chrome/browser/privacy_sandbox/privacy_sandbox_service.h +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service.h
@@ -98,7 +98,11 @@ kConsentMoreButtonClicked = 14, kNoticeMoreButtonClicked = 15, - kMaxValue = kNoticeMoreButtonClicked, + // Restricted notice interactions, including only acknowledgement as the + // other interactions are treated as a normal notice. + kRestrictedNoticeAcknowledge = 16, + + kMaxValue = kRestrictedNoticeAcknowledge, }; // TODO(crbug.com/1378703): Integrate this when handling Notice and Consent
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc index 4ef1f6e..43acdd5 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -3771,16 +3771,24 @@ // PDF reader. WebContents* web_contents = browser->tab_strip_model()->GetActiveWebContents(); - - if (!lens_region_search_controller_) { - lens_region_search_controller_ = - std::make_unique<lens::LensRegionSearchController>(browser); - } // If Lens fullscreen search is enabled, we want to send every region search // as a fullscreen capture. bool use_fullscreen_capture = GetMenuSourceType(event_flags) == ui::MENU_SOURCE_KEYBOARD || lens::features::IsLensFullscreenSearchEnabled(); + + auto* companion_helper = + companion::CompanionTabHelper::FromWebContents(embedder_web_contents_); + if (companion_helper && + companion::IsSearchImageInCompanionSidePanelSupported(browser)) { + companion_helper->StartRegionSearch(web_contents, use_fullscreen_capture); + return; + } + + if (!lens_region_search_controller_) { + lens_region_search_controller_ = + std::make_unique<lens::LensRegionSearchController>(browser); + } lens_region_search_controller_->Start(web_contents, use_fullscreen_capture, is_google_default_search_provider); #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) @@ -3806,7 +3814,7 @@ if (!companion_helper) { return; } - companion_helper->ShowCompanionSidePanel(url); + companion_helper->ShowCompanionSidePanelForSearchURL(url); } void RenderViewContextMenu::ExecSearchWebInSidePanel(const GURL& url) {
diff --git a/chrome/browser/resources/chromeos/internet_config_dialog/BUILD.gn b/chrome/browser/resources/chromeos/internet_config_dialog/BUILD.gn index 17e2b37..dc8f7138 100644 --- a/chrome/browser/resources/chromeos/internet_config_dialog/BUILD.gn +++ b/chrome/browser/resources/chromeos/internet_config_dialog/BUILD.gn
@@ -31,6 +31,7 @@ "//ash/webui/common/resources:css_wrapper_files", "//ash/webui/common/resources:html_wrapper_files", "//ash/webui/common/resources:preprocess", + "//ui/webui/resources/cr_components/color_change_listener:build_ts", "//ui/webui/resources/cr_elements:build_ts", ] }
diff --git a/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.html b/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.html index 375a94c2..b4e620b 100644 --- a/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.html +++ b/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.html
@@ -1,5 +1,5 @@ <style include="cr-page-host-style cr-shared-style network-shared - iron-flex"> + iron-flex cros-color-overrides"> cr-dialog::part(dialog) { border-radius: 0; height: 100%; @@ -13,7 +13,7 @@ } .error { - color: red; + color: var(--cros-text-color-alert); font-weight: 500; } </style>
diff --git a/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.js b/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.js index 04302c0c..c2fc69b 100644 --- a/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.js +++ b/chrome/browser/resources/chromeos/internet_config_dialog/internet_config_dialog.js
@@ -5,15 +5,17 @@ import 'chrome://resources/ash/common/network/network_config.js'; import 'chrome://resources/ash/common/network/network_icon.js'; import 'chrome://resources/ash/common/network/network_shared.css.js'; +import 'chrome://resources/cr_elements/chromeos/cros_color_overrides.css.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.js'; import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; import 'chrome://resources/cr_elements/cr_page_host_style.css.js'; import 'chrome://resources/cr_elements/cr_shared_style.css.js'; import './strings.m.js'; -import {I18nBehavior} from 'chrome://resources/ash/common/i18n_behavior.js'; import {assert} from 'chrome://resources/ash/common/assert.js'; +import {I18nBehavior} from 'chrome://resources/ash/common/i18n_behavior.js'; import {loadTimeData} from 'chrome://resources/ash/common/load_time_data.m.js'; +import {startColorChangeUpdater} from 'chrome://resources/cr_components/color_change_listener/colors_css_updater.js'; import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; /** @@ -70,6 +72,19 @@ type: String, value: '', }, + + /** + * Whether the Jelly feature flag is enabled. + * @private + */ + isJellyEnabled_: { + type: Boolean, + readOnly: true, + value() { + return loadTimeData.valueExists('isJellyEnabled') && + loadTimeData.getBoolean('isJellyEnabled'); + }, + }, }, /** @override */ @@ -87,6 +102,15 @@ this.guid_ = params.get('guid') || ''; } + if (this.isJellyEnabled_) { + const link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = 'chrome://theme/colors.css?sets=legacy,sys'; + document.head.appendChild(link); + document.body.classList.add('jelly-enabled'); + startColorChangeUpdater(); + } + this.$.networkConfig.init(); /** @type {!CrDialogElement} */ (this.$.dialog).showModal();
diff --git a/chrome/browser/resources/new_tab_page/BUILD.gn b/chrome/browser/resources/new_tab_page/BUILD.gn index acc234d..cb3ee5e 100644 --- a/chrome/browser/resources/new_tab_page/BUILD.gn +++ b/chrome/browser/resources/new_tab_page/BUILD.gn
@@ -55,6 +55,7 @@ "//chrome/browser/new_tab_page/modules/drive:mojo_bindings_ts__generator", "//chrome/browser/new_tab_page/modules/feed:mojo_bindings_ts__generator", "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings_ts__generator", + "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings_ts__generator", "//chrome/browser/new_tab_page/modules/photos:mojo_bindings_ts__generator", "//chrome/browser/new_tab_page/modules/recipes:mojo_bindings_ts__generator", "//chrome/browser/ui/webui/new_tab_page:mojo_bindings_ts__generator", @@ -65,6 +66,7 @@ "$root_gen_dir/chrome/browser/new_tab_page/modules/drive/drive.mojom-webui.ts", "$root_gen_dir/chrome/browser/new_tab_page/modules/feed/feed.mojom-webui.ts", "$root_gen_dir/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom-webui.ts", + "$root_gen_dir/chrome/browser/new_tab_page/modules/history_clusters/cart/cart.mojom-webui.ts", "$root_gen_dir/chrome/browser/new_tab_page/modules/photos/photos.mojom-webui.ts", "$root_gen_dir/chrome/browser/new_tab_page/modules/recipes/recipes.mojom-webui.ts", "$root_gen_dir/chrome/browser/ui/webui/new_tab_page/new_tab_page.mojom-webui.ts",
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.html b/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.html index 74a50ef..d4791f6 100644 --- a/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.html +++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.html
@@ -199,9 +199,9 @@ <page-favicon id="icon" url="[[cart.cartUrl.url]]" is-known-to-sync="true"> </page-favicon> - <div id="domain" class="truncate"></div> + <div id="domain" class="truncate">[[cart.domain]]</div> <span id="dot"> • </span> - <div id="date"></div> + <div id="date">[[cart.relativeDate]]</div> </div> </div> </a>
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.ts b/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.ts index 6e6bf341..44b515f 100644 --- a/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.ts +++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/cart/cart_tile.ts
@@ -6,7 +6,7 @@ import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; -import {MerchantCart} from '../../../chrome_cart.mojom-webui.js'; +import {Cart} from '../../../cart.mojom-webui.js'; import {I18nMixin} from '../../../i18n_setup.js'; import {getTemplate} from './cart_tile.html.js'; @@ -28,7 +28,7 @@ }; } - cart: MerchantCart; + cart: Cart; override ready() { super.ready();
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.html b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.html index 1295acd..886ade50 100644 --- a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.html +++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.html
@@ -111,10 +111,17 @@ visit="[[cluster.visits.0]]" on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> </ntp-history-clusters-tile> - <ntp-history-clusters-tile class="secondary-tile" medium-format - visit="[[cluster.visits.1]]" on-click="onVisitTileClick_" - on-aux-click="onVisitTileClick_"> - </ntp-history-clusters-tile> + <template is="dom-if" if="[[shouldShowCartTile_()]]" restamp> + <ntp-history-clusters-cart-tile + id="cartTile" cart="[[cart]]"> + </ntp-history-clusters-cart-tile> + </template> + <template is="dom-if" if="[[!shouldShowCartTile_()]]" restamp> + <ntp-history-clusters-tile class="secondary-tile" medium-format + visit="[[cluster.visits.1]]" on-click="onVisitTileClick_" + on-aux-click="onVisitTileClick_"> + </ntp-history-clusters-tile> + </template> <ntp-history-clusters-suggest-tile class="related-searches-tile" related-searches="[[cluster.relatedSearches]]" on-click="onSuggestTileClick_" on-aux-click="onSuggestTileClick_"> @@ -127,14 +134,21 @@ visit="[[cluster.visits.0]]" on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> </ntp-history-clusters-tile> - <div class="small-tiles"> - <ntp-history-clusters-tile small-format visit="[[cluster.visits.1]]" - on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> - </ntp-history-clusters-tile> - <ntp-history-clusters-tile small-format visit="[[cluster.visits.2]]" - on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> - </ntp-history-clusters-tile> - </div> + <template is="dom-if" if="[[shouldShowCartTile_()]]" restamp> + <ntp-history-clusters-cart-tile + id="cartTile" cart="[[cart]]"> + </ntp-history-clusters-cart-tile> + </template> + <template is="dom-if" if="[[!shouldShowCartTile_()]]" restamp> + <div class="small-tiles"> + <ntp-history-clusters-tile small-format visit="[[cluster.visits.1]]" + on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> + </ntp-history-clusters-tile> + <ntp-history-clusters-tile small-format visit="[[cluster.visits.2]]" + on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> + </ntp-history-clusters-tile> + </div> + </template> <ntp-history-clusters-suggest-tile class="related-searches-tile" related-searches="[[cluster.relatedSearches]]" on-click="onSuggestTileClick_" on-aux-click="onSuggestTileClick_"> @@ -151,14 +165,21 @@ on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> </ntp-history-clusters-tile> </div> - <div class="small-tiles"> - <ntp-history-clusters-tile small-format visit="[[cluster.visits.2]]" - on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> - </ntp-history-clusters-tile> - <ntp-history-clusters-tile small-format visit="[[cluster.visits.3]]" - on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> - </ntp-history-clusters-tile> - </div> + <template is="dom-if" if="[[shouldShowCartTile_()]]" restamp> + <ntp-history-clusters-cart-tile + id="cartTile" cart="[[cart]]"> + </ntp-history-clusters-cart-tile> + </template> + <template is="dom-if" if="[[!shouldShowCartTile_()]]" restamp> + <div class="small-tiles"> + <ntp-history-clusters-tile small-format visit="[[cluster.visits.2]]" + on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> + </ntp-history-clusters-tile> + <ntp-history-clusters-tile small-format visit="[[cluster.visits.3]]" + on-click="onVisitTileClick_" on-aux-click="onVisitTileClick_"> + </ntp-history-clusters-tile> + </div> + </template> <ntp-history-clusters-suggest-tile class="related-searches-tile" related-searches="[[cluster.relatedSearches]]" on-click="onSuggestTileClick_" on-aux-click="onSuggestTileClick_">
diff --git a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts index 2d9d963..fe43aef 100644 --- a/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/history_clusters/module.ts
@@ -10,6 +10,7 @@ import {listenOnce} from 'chrome://resources/js/util_ts.js'; import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {Cart} from '../../cart.mojom-webui.js'; import {Cluster, URLVisit} from '../../history_cluster_types.mojom-webui.js'; import {I18nMixin, loadTimeData} from '../../i18n_setup.js'; import {InfoDialogElement} from '../info_dialog'; @@ -84,11 +85,15 @@ /** The cluster displayed by this element. */ cluster: Object, + /** The cart displayed by this element, could be null. */ + cart: Object, + searchResultPage: Object, }; } cluster: Cluster; + cart: Cart|null; layoutType: HistoryClusterLayoutType; searchResultPage: URLVisit; @@ -189,6 +194,12 @@ visit => visit.normalizedUrl); HistoryClustersProxyImpl.getInstance().handler.openUrlsInTabGroup(urls); } + + private shouldShowCartTile_(): boolean { + return loadTimeData.getBoolean( + 'modulesChromeCartInHistoryClustersModuleEnabled') && + !!this.cart; + } } customElements.define( @@ -230,6 +241,14 @@ const element = new HistoryClustersModuleElement(); element.cluster = clusters[0]; + // Initialize the cart element when the feature is enabled. + if (loadTimeData.getBoolean( + 'modulesChromeCartInHistoryClustersModuleEnabled')) { + const {cart} = + await HistoryClustersProxyImpl.getInstance().handler.getCartForCluster( + clusters[0]); + element.cart = cart; + } // Pull out the SRP to be used in the header and to open the cluster // in tab group. element.searchResultPage = clusters[0]!.visits[0];
diff --git a/chrome/browser/resources/new_tab_page/new_tab_page.gni b/chrome/browser/resources/new_tab_page/new_tab_page.gni index 6ba281d..0bb1b2a 100644 --- a/chrome/browser/resources/new_tab_page/new_tab_page.gni +++ b/chrome/browser/resources/new_tab_page/new_tab_page.gni
@@ -39,6 +39,7 @@ if (optimize_webui) { # Transpiled Mojo JS files to be excluded from the bundle in optimized builds. mojo_js_files = [ + "cart.mojom-webui.js", "chrome_cart.mojom-webui.js", "drive.mojom-webui.js", "feed.mojom-webui.js",
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.ts b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.ts index 631db58..fefc9ab 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.ts +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_browser_proxy.ts
@@ -39,21 +39,6 @@ setUpAndroidSms(): void; /** - * Returns the value of the preference controlling whether Smart Lock may be - * used to sign-in the user (as opposed to unlocking the screen). - */ - getSmartLockSignInEnabled(): Promise<boolean>; - - /** - * Sets the value of the preference controlling whether Smart Lock may be - * used to sign-in the user (as opposed to unlocking the screen). - * @param enabled - * @param authToken Authentication token used to restrict - * edit access to the Smart Lock sign-in pref. - */ - setSmartLockSignInEnabled(enabled: boolean, authToken?: string): void; - - /** * Returns the value of the preference controlling whether Smart Lock * sign-in is allowed. */ @@ -173,14 +158,6 @@ chrome.send('setUpAndroidSms'); } - getSmartLockSignInEnabled(): Promise<boolean> { - return sendWithPromise('getSmartLockSignInEnabled'); - } - - setSmartLockSignInEnabled(enabled: boolean, authToken?: string): void { - chrome.send('setSmartLockSignInEnabled', [enabled, authToken]); - } - getSmartLockSignInAllowed(): Promise<boolean> { return sendWithPromise('getSmartLockSignInAllowed'); }
diff --git a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.ts b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.ts index 9a4c88cb..07293d7d 100644 --- a/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.ts +++ b/chrome/browser/resources/settings/chromeos/multidevice_page/multidevice_constants.ts
@@ -3,15 +3,6 @@ // found in the LICENSE file. /** - * The state of the preference controlling Smart Lock's ability to sign-in the - * user. - */ -export enum SmartLockSignInEnabledState { - ENABLED = 'enabled', - DISABLED = 'disabled', -} - -/** * The possible statuses of hosts on the logged in account that determine the * page content. Note that this is based on (and must include an analog of * all values in) the HostStatus enum in
diff --git a/chrome/browser/resources/settings/chromeos/os_settings.ts b/chrome/browser/resources/settings/chromeos/os_settings.ts index fd097aa..722de4b 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings.ts +++ b/chrome/browser/resources/settings/chromeos/os_settings.ts
@@ -142,7 +142,7 @@ export * as userActionRecorderMojom from './mojom-webui/search/user_action_recorder.mojom-webui.js'; export * as settingMojom from './mojom-webui/setting.mojom-webui.js'; export {AndroidSmsInfo, MultiDeviceBrowserProxy, MultiDeviceBrowserProxyImpl} from './multidevice_page/multidevice_browser_proxy.js'; -export {MultiDeviceFeature, MultiDeviceFeatureState, MultiDevicePageContentData, MultiDeviceSettingsMode, PhoneHubFeatureAccessProhibitedReason, PhoneHubFeatureAccessStatus, PhoneHubPermissionsSetupAction, PhoneHubPermissionsSetupFeatureCombination, PhoneHubPermissionsSetupFlowScreens, PhoneHubPermissionsSetupMode, SmartLockSignInEnabledState} from './multidevice_page/multidevice_constants.js'; +export {MultiDeviceFeature, MultiDeviceFeatureState, MultiDevicePageContentData, MultiDeviceSettingsMode, PhoneHubFeatureAccessProhibitedReason, PhoneHubFeatureAccessStatus, PhoneHubPermissionsSetupAction, PhoneHubPermissionsSetupFeatureCombination, PhoneHubPermissionsSetupFlowScreens, PhoneHubPermissionsSetupMode} from './multidevice_page/multidevice_constants.js'; export {NotificationAccessSetupOperationStatus} from './multidevice_page/multidevice_notification_access_setup_dialog.js'; export {PermissionsSetupStatus, SetupFlowStatus} from './multidevice_page/multidevice_permissions_setup_dialog.js'; export {Account, NearbyAccountManagerBrowserProxy, NearbyAccountManagerBrowserProxyImpl} from './nearby_share_page/nearby_account_manager_browser_proxy.js';
diff --git a/chrome/browser/resources/side_panel/companion/companion.css b/chrome/browser/resources/side_panel/companion/companion.css index 478d0e0a..0ce4e777 100644 --- a/chrome/browser/resources/side_panel/companion/companion.css +++ b/chrome/browser/resources/side_panel/companion/companion.css
@@ -10,3 +10,7 @@ top: 0; width: 100%; } + +#image-query-form { + display: none; +}
diff --git a/chrome/browser/resources/side_panel/companion/companion.html b/chrome/browser/resources/side_panel/companion/companion.html index d4c2824..52d6c90 100644 --- a/chrome/browser/resources/side_panel/companion/companion.html +++ b/chrome/browser/resources/side_panel/companion/companion.html
@@ -9,7 +9,15 @@ <meta charset="utf-8"> </head> <body> - <iframe id="content" allow="cross-origin-isolated"></iframe> + <form id="image-query-form" enctype="multipart/form-data" + target="companion" method="POST"> + <input type="file" id="image-data" name="encoded_image" multiple> + <input type="hidden" id="image-src-url" name="image_url"> + <input type="hidden" id="image-width" name="original_width"> + <input type="hidden" id="image-height" name="original_height"> + </form> + <iframe name="companion" id="content" allow="cross-origin-isolated" + frameBorder="0"></iframe> <script type="module" src="companion.js"></script> </body> </html>
diff --git a/chrome/browser/resources/side_panel/companion/companion.ts b/chrome/browser/resources/side_panel/companion/companion.ts index 3032681..21becca5 100644 --- a/chrome/browser/resources/side_panel/companion/companion.ts +++ b/chrome/browser/resources/side_panel/companion/companion.ts
@@ -8,7 +8,7 @@ import {loadTimeData} from '//resources/js/load_time_data.js'; import {Url} from '//resources/mojo/url/mojom/url.mojom-webui.js'; -import {MethodType, PromoAction, PromoType} from './companion.mojom-webui.js'; +import {ImageQuery, MethodType, PromoAction, PromoType} from './companion.mojom-webui.js'; import {CompanionProxy, CompanionProxyImpl} from './companion_proxy.js'; /** @@ -73,6 +73,49 @@ } }); + // On image queries, we need to send a POST to the iframe using a form in the + // WebUI. + companionProxy.callbackRouter.onImageQuery.addListener( + (imageQuery: ImageQuery) => { + const queryForm = document.body.querySelector('form'); + const imageDataInput = + document.getElementById('image-data') as HTMLInputElement; + const imageUrlInput = + document.getElementById('image-src-url') as HTMLInputElement; + const widthInput = + document.getElementById('image-width') as HTMLInputElement; + const heightInput = + document.getElementById('image-height') as HTMLInputElement; + assert(queryForm); + assert(imageDataInput); + assert(imageUrlInput); + assert(widthInput); + assert(heightInput); + queryForm.setAttribute('action', imageQuery.uploadUrl.url); + // The original Uint8Array that gets passed does not have an array + // buffer due to how it is initialized. Thus, we have to create a + // Uint8Array with the same data as |imageBytes| in order to properly + // create a blob from it. + const imageBytesWithBuffer = new Uint8Array(imageQuery.imageBytes); + const blob = + new Blob([imageBytesWithBuffer], {type: imageQuery.contentType}); + const file = + new File([blob], 'filename.jpg', {type: imageQuery.contentType}); + + // Create a DataTransfer to create a file list for the images we want to + // query. + const container = new DataTransfer(); + container.items.add(file); + + // Assign all values on the form and submit to initiate request. + imageDataInput.files = container.files; + imageUrlInput.value = imageQuery.imageUrl.url; + widthInput.value = String(imageQuery.width); + heightInput.value = String(imageQuery.height); + queryForm.submit(); + queryForm.reset(); + }); + companionProxy.handler.showUI(); }
diff --git a/chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service_unittest.cc b/chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service_unittest.cc index 7d7b3fa4..b29ba8092c 100644 --- a/chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service_unittest.cc +++ b/chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service_unittest.cc
@@ -153,7 +153,6 @@ } void MayBeCacheRealTimeUrlVerdict( - GURL url, RTLookupResponse::ThreatInfo::VerdictType verdict_type, RTLookupResponse::ThreatInfo::ThreatType threat_type, int cache_duration_sec, @@ -168,7 +167,7 @@ new_threat_info->set_cache_expression_using_match_type(cache_expression); new_threat_info->set_cache_expression_match_type( cache_expression_match_type); - enterprise_rt_service_->MayBeCacheRealTimeUrlVerdict(url, response); + enterprise_rt_service_->MayBeCacheRealTimeUrlVerdict(response); } void SetUpRTLookupResponse( @@ -212,7 +211,7 @@ TEST_F(ChromeEnterpriseRealTimeUrlLookupServiceTest, TestStartLookup_ResponseIsAlreadyCached) { GURL url("http://example.test/"); - MayBeCacheRealTimeUrlVerdict(url, RTLookupResponse::ThreatInfo::DANGEROUS, + MayBeCacheRealTimeUrlVerdict(RTLookupResponse::ThreatInfo::DANGEROUS, RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "example.test/", RTLookupResponse::ThreatInfo::COVERING_MATCH);
diff --git a/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc b/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc index 9f806a4e..73df675 100644 --- a/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc +++ b/chrome/browser/safe_browsing/tailored_security/consented_message_android.cc
@@ -14,6 +14,7 @@ #include "components/messages/android/message_dispatcher_bridge.h" #include "components/safe_browsing/core/browser/tailored_security_service/tailored_security_outcome.h" #include "components/safe_browsing/core/browser/tailored_security_service/tailored_security_service_util.h" +#include "components/safe_browsing/core/common/features.h" #include "components/safe_browsing/core/common/safe_browsing_prefs.h" #include "content/public/browser/web_contents.h" #include "ui/base/l10n/l10n_util.h" @@ -55,15 +56,27 @@ if (is_enable_message_) { title = l10n_util::GetStringUTF16( IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_TITLE); - description = l10n_util::GetStringUTF16( - IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION); + if (base::FeatureList::IsEnabled( + safe_browsing::kTailoredSecurityUpdatedMessages)) { + description = l10n_util::GetStringUTF16( + IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION_UPDATED); + } else { + description = l10n_util::GetStringUTF16( + IDS_TAILORED_SECURITY_CONSENTED_ENABLE_MESSAGE_DESCRIPTION); + } icon_resource_id = ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SAFETY_CHECK); } else { title = l10n_util::GetStringUTF16( IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_TITLE); - description = l10n_util::GetStringUTF16( - IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION); + if (base::FeatureList::IsEnabled( + safe_browsing::kTailoredSecurityUpdatedMessages)) { + description = l10n_util::GetStringUTF16( + IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED); + } else { + description = l10n_util::GetStringUTF16( + IDS_TAILORED_SECURITY_CONSENTED_DISABLE_MESSAGE_DESCRIPTION_UPDATED); + } icon_resource_id = ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_MESSAGE_SHIELD); message_->DisableIconTint();
diff --git a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java index 07d4f43..7dfee56d 100644 --- a/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java +++ b/chrome/browser/share/android/javatests/src/org/chromium/chrome/browser/share/android_share_sheet/AndroidShareSheetControllerUnitTest.java
@@ -12,7 +12,7 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.verifyNoMoreInteractions; import android.app.Activity; import android.app.PendingIntent; @@ -354,7 +354,7 @@ Intent intent = Shadows.shadowOf((Activity) mActivity).peekNextStartedActivity(); Assert.assertNull("Preview clip data should be null.", intent.getClipData()); - verifyZeroInteractions(mMockFaviconHelperJni); + verifyNoMoreInteractions(mMockFaviconHelperJni); } @Test
diff --git a/chrome/browser/sync/prefs/chrome_syncable_prefs_database.cc b/chrome/browser/sync/prefs/chrome_syncable_prefs_database.cc index 7b31d80..4ea0d3d2 100644 --- a/chrome/browser/sync/prefs/chrome_syncable_prefs_database.cc +++ b/chrome/browser/sync/prefs/chrome_syncable_prefs_database.cc
@@ -21,7 +21,6 @@ #include "chrome/browser/ash/app_restore/full_restore_prefs.h" #include "chrome/browser/ash/guest_os/guest_os_pref_names.h" #include "chrome/browser/ash/login/login_pref_names.h" -#include "chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h" #include "chromeos/ash/components/tether/pref_names.h" #include "components/metrics/demographics/user_demographics.h" #include "ui/events/ash/pref_names.h" @@ -178,7 +177,8 @@ kTextToSpeechVolume = 100133, kUse24HourClock = 100134, kUserPrintersAllowed = 100135, - kProximityAuthIsChromeOSLoginEnabled = 100136, + // kProximityAuthIsChromeOSLoginEnabled = 100136, // deprecated with removal + // of Sign in with Smart Lock kUserImageInfo = 100137, kGdataDisabled = 100138, kGdataCellularDisabled = 100139, @@ -664,9 +664,6 @@ {syncable_prefs_ids::kUse24HourClock, syncer::OS_PREFERENCES}}, {prefs::kUserPrintersAllowed, {syncable_prefs_ids::kUserPrintersAllowed, syncer::OS_PREFERENCES}}, - {proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled, - {syncable_prefs_ids::kProximityAuthIsChromeOSLoginEnabled, - syncer::OS_PREFERENCES}}, // This is not exposed in a header. // TODO(crbug.com/1420978): Declare this in the corresponding header. {"user_image_info",
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 9349fb9..65d7e815 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -1246,6 +1246,8 @@ "performance_controls/high_efficiency_chip_tab_helper.h", "performance_controls/high_efficiency_opt_in_iph_controller.cc", "performance_controls/high_efficiency_opt_in_iph_controller.h", + "performance_controls/high_efficiency_utils.cc", + "performance_controls/high_efficiency_utils.h", "performance_controls/performance_controls_hats_service.cc", "performance_controls/performance_controls_hats_service.h", "performance_controls/performance_controls_hats_service_factory.cc", @@ -1808,6 +1810,7 @@ "//chrome/browser/new_tab_page/modules/drive:mojo_bindings", "//chrome/browser/new_tab_page/modules/feed:mojo_bindings", "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings", + "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings", "//chrome/browser/new_tab_page/modules/photos:mojo_bindings", "//chrome/browser/new_tab_page/modules/recipes:mojo_bindings", "//chrome/browser/profile_resetter:profile_reset_report_proto",
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc index d8a54ae8..96917566 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.cc
@@ -223,13 +223,6 @@ return pinned_files; } -const std::string& HoldingSpaceKeyedService::AddPhoneHubCameraRollItem( - const base::FilePath& item_path, - const HoldingSpaceProgress& progress) { - return AddItemOfType(HoldingSpaceItem::Type::kPhoneHubCameraRoll, item_path, - progress); -} - void HoldingSpaceKeyedService::SetSuggestions( const std::vector<std::pair<HoldingSpaceItem::Type, base::FilePath>>& suggestions) {
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h index b345f65..77da026 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service.h
@@ -90,14 +90,6 @@ // files system URLs as GURLs. std::vector<GURL> GetPinnedFiles() const; - // TODO(http://b/274477308): Remove one-off API. - // Adds a photo or video downloaded from a connected Android phone via - // PhoneHub. Returns the id of the added holding space item or an empty string - // if the item was not added due to de-duplication checks. - const std::string& AddPhoneHubCameraRollItem( - const base::FilePath& item_path, - const HoldingSpaceProgress& progress); - // Replaces the existing suggestions with `suggestions`. The order among // `suggestions` is respected, which means that if a suggestion A is in front // of a suggestion B in the given array, after calling this function, the
diff --git a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc index 4d4f6cb..3e3702c 100644 --- a/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc +++ b/chrome/browser/ui/ash/holding_space/holding_space_keyed_service_unittest.cc
@@ -2624,7 +2624,8 @@ EXPECT_EQ( holding_space_model->ContainsItem(type, file_path), holding_space_service - ->AddPhoneHubCameraRollItem(file_path, HoldingSpaceProgress()) + ->AddItemOfType(HoldingSpaceItem::Type::kPhoneHubCameraRoll, + file_path, HoldingSpaceProgress()) .empty()); break; case HoldingSpaceItem::Type::kPrintedPdf:
diff --git a/chrome/browser/ui/ash/projector/projector_client_impl.cc b/chrome/browser/ui/ash/projector/projector_client_impl.cc index 57c6184..84bcd3e 100644 --- a/chrome/browser/ui/ash/projector/projector_client_impl.cc +++ b/chrome/browser/ui/ash/projector/projector_client_impl.cc
@@ -182,6 +182,11 @@ } void ProjectorClientImpl::StopSpeechRecognition() { + if (!speech_recognizer_) { + LOG(ERROR) << "Stop was called on a destroyed speech recognizer."; + return; + } + speech_recognizer_->Stop(); }
diff --git a/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc b/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc index 7be752c2..5268422 100644 --- a/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc +++ b/chrome/browser/ui/browser_navigator_browsertest_chromeos.cc
@@ -211,9 +211,11 @@ browser()->tab_strip_model()->GetActiveWebContents()->GetURL()); } +// TODO(https://crbug.com/1417034): Test consistently fails on bots. // Verifies that the navigation of an os:// scheme page is opening an app on // the ash side and does not produce a navigation on the Lacros side. -IN_PROC_BROWSER_TEST_F(BrowserNavigatorTestChromeOS, OsSchemeRedirectSucceed) { +IN_PROC_BROWSER_TEST_F(BrowserNavigatorTestChromeOS, + DISABLED_OsSchemeRedirectSucceed) { if (chromeos::LacrosService::Get()->GetInterfaceVersion( crosapi::mojom::TestController::Uuid_) < static_cast<int>(crosapi::mojom::TestController::MethodMinVersions::
diff --git a/chrome/browser/ui/color/chrome_color_id.h b/chrome/browser/ui/color/chrome_color_id.h index 1ccc285c6b..a4bc5a6 100644 --- a/chrome/browser/ui/color/chrome_color_id.h +++ b/chrome/browser/ui/color/chrome_color_id.h
@@ -372,6 +372,8 @@ E_CPONLY(kColorTabForegroundActiveFrameInactive) \ E_CPONLY(kColorTabForegroundInactiveFrameActive) \ E_CPONLY(kColorTabForegroundInactiveFrameInactive) \ + E_CPONLY(kColorTabDividerFrameActive) \ + E_CPONLY(kColorTabDividerFrameInactive) \ E_CPONLY(kColorTabHoverCardBackground) \ E_CPONLY(kColorTabHoverCardForeground) \ /* The colors used for tab groups in the tabstrip. */ \
diff --git a/chrome/browser/ui/color/material_tab_strip_color_mixer.cc b/chrome/browser/ui/color/material_tab_strip_color_mixer.cc index 278e302..37f6f2fd 100644 --- a/chrome/browser/ui/color/material_tab_strip_color_mixer.cc +++ b/chrome/browser/ui/color/material_tab_strip_color_mixer.cc
@@ -58,4 +58,7 @@ mixer[kColorWebUiTabStripTabSeparator] = ui::SetAlpha(ui::kColorSysOnSurface, kWebUiTabStripTabSeparatorAlpha); mixer[kColorWebUiTabStripTabText] = {ui::kColorSysOnSurface}; + + mixer[kColorTabDividerFrameActive] = {ui::kColorSysOnHeaderDivider}; + mixer[kColorTabDividerFrameInactive] = {ui::kColorSysOnHeaderDividerInactive}; }
diff --git a/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.cc b/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.cc index 21f01a1..db5cefd 100644 --- a/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.cc +++ b/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.h" #include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h" +#include "chrome/browser/ui/performance_controls/high_efficiency_utils.h" #include "content/public/common/url_constants.h" namespace { @@ -20,11 +21,11 @@ content::WebContentsUserData<HighEfficiencyChipTabHelper>(*contents) {} bool HighEfficiencyChipTabHelper::ShouldChipBeVisible() const { - return was_discarded_ && is_page_supported_; + return was_discarded_ && is_page_supported_ && IsProactiveDiscard(); } bool HighEfficiencyChipTabHelper::ShouldIconAnimate() const { - return was_discarded_ && !was_animated_; + return was_discarded_ && !was_animated_ && IsProactiveDiscard(); } void HighEfficiencyChipTabHelper::SetWasAnimated() { @@ -63,33 +64,19 @@ // them causes the state to get reset. return; } - discard_reason_ = GetDiscardReason(navigation_handle); - was_discarded_ = - discard_reason_.has_value() && - discard_reason_.value() == mojom::LifecycleUnitDiscardReason::PROACTIVE; + discard_reason_ = + high_efficiency::GetDiscardReason(navigation_handle->GetWebContents()); + was_discarded_ = navigation_handle->ExistingDocumentWasDiscarded(); was_animated_ = false; was_chip_hidden_ = false; - is_page_supported_ = DoesChipSupportPage(navigation_handle->GetURL()); + is_page_supported_ = + high_efficiency::IsURLSupported(navigation_handle->GetURL()); } -bool HighEfficiencyChipTabHelper::DoesChipSupportPage(const GURL& url) const { - return !url.SchemeIs(content::kChromeUIScheme); -} - -absl::optional<mojom::LifecycleUnitDiscardReason> -HighEfficiencyChipTabHelper::GetDiscardReason( - content::NavigationHandle* navigation_handle) const { - if (navigation_handle->ExistingDocumentWasDiscarded()) { - auto* pre_discard_resource_usage = performance_manager::user_tuning:: - UserPerformanceTuningManager::PreDiscardResourceUsage::FromWebContents( - navigation_handle->GetWebContents()); - return pre_discard_resource_usage == nullptr - ? absl::nullopt - : absl::make_optional<mojom::LifecycleUnitDiscardReason>( - pre_discard_resource_usage->discard_reason()); - } - - return absl::nullopt; +bool HighEfficiencyChipTabHelper::IsProactiveDiscard() const { + return discard_reason_.has_value() && + discard_reason_.value() == + mojom::LifecycleUnitDiscardReason::PROACTIVE; } WEB_CONTENTS_USER_DATA_KEY_IMPL(HighEfficiencyChipTabHelper);
diff --git a/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.h b/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.h index 19c9c6a..44afd2b 100644 --- a/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.h +++ b/chrome/browser/ui/performance_controls/high_efficiency_chip_tab_helper.h
@@ -57,12 +57,7 @@ friend class content::WebContentsUserData<HighEfficiencyChipTabHelper>; explicit HighEfficiencyChipTabHelper(content::WebContents* contents); - // Returns whether the high efficiency chip should be supported for the - // given URL - bool DoesChipSupportPage(const GURL& url) const; - - absl::optional<mojom::LifecycleUnitDiscardReason> GetDiscardReason( - content::NavigationHandle* navigation_handle) const; + bool IsProactiveDiscard() const; bool was_discarded_ = false; bool was_animated_ = false;
diff --git a/chrome/browser/ui/performance_controls/high_efficiency_utils.cc b/chrome/browser/ui/performance_controls/high_efficiency_utils.cc new file mode 100644 index 0000000..8ac7c4e --- /dev/null +++ b/chrome/browser/ui/performance_controls/high_efficiency_utils.cc
@@ -0,0 +1,27 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/performance_controls/high_efficiency_utils.h" + +#include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h" +#include "content/public/common/url_constants.h" + +namespace high_efficiency { + +bool IsURLSupported(GURL url) { + return !url.SchemeIs(content::kChromeUIScheme); +} + +absl::optional<::mojom::LifecycleUnitDiscardReason> GetDiscardReason( + content::WebContents* contents) { + auto* pre_discard_resource_usage = + performance_manager::user_tuning::UserPerformanceTuningManager:: + PreDiscardResourceUsage::FromWebContents(contents); + return pre_discard_resource_usage == nullptr + ? absl::nullopt + : absl::make_optional<::mojom::LifecycleUnitDiscardReason>( + pre_discard_resource_usage->discard_reason()); +} + +} // namespace high_efficiency
diff --git a/chrome/browser/ui/performance_controls/high_efficiency_utils.h b/chrome/browser/ui/performance_controls/high_efficiency_utils.h new file mode 100644 index 0000000..5b102c87 --- /dev/null +++ b/chrome/browser/ui/performance_controls/high_efficiency_utils.h
@@ -0,0 +1,23 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_HIGH_EFFICIENCY_UTILS_H_ +#define CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_HIGH_EFFICIENCY_UTILS_H_ + +#include "chrome/browser/resource_coordinator/lifecycle_unit.h" +#include "content/public/browser/web_contents.h" +#include "url/gurl.h" + +namespace high_efficiency { + +// Returns whether |url| supports showing discard indicators +bool IsURLSupported(GURL url); + +// Returns the discard reason if |contents| has been discarded +absl::optional<::mojom::LifecycleUnitDiscardReason> GetDiscardReason( + content::WebContents* contents); + +} // namespace high_efficiency + +#endif // CHROME_BROWSER_UI_PERFORMANCE_CONTROLS_HIGH_EFFICIENCY_UTILS_H_
diff --git a/chrome/browser/ui/popup_browsertest.cc b/chrome/browser/ui/popup_browsertest.cc index 74c8a84..0962124 100644 --- a/chrome/browser/ui/popup_browsertest.cc +++ b/chrome/browser/ui/popup_browsertest.cc
@@ -26,7 +26,6 @@ #include "third_party/blink/public/common/features_generated.h" #include "ui/display/display.h" #include "ui/display/screen.h" -#include "ui/display/screen_base.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/native_widget_types.h" #include "ui/views/widget/widget.h" @@ -69,7 +68,15 @@ Browser* popup = ui_test_utils::WaitForBrowserToOpen(); EXPECT_NE(popup, browser); auto* popup_contents = popup->tab_strip_model()->GetActiveWebContents(); + // The popup's bounds are initialized after the synchronous window.open(). + // Ideally, this might wait for browser->renderer window bounds init via: + // blink::mojom::Widget.UpdateVisualProperties, but it seems sufficient to + // wait for WebContents to load the URL after the initial about:blank doc, + // and then for that Document's readyState to be 'complete'. Anecdotally, + // initial bounds seem settled once outerWidth and outerHeight are non-zero. + EXPECT_TRUE(WaitForLoadStop(popup_contents)); EXPECT_TRUE(WaitForRenderFrameReady(popup_contents->GetPrimaryMainFrame())); + EXPECT_NE("0x0", EvalJs(popup_contents, "outerWidth + 'x' + outerHeight")); return popup; } }; @@ -185,39 +192,25 @@ } // Ensure popups are opened in the available space of the opener's display. -// TODO(crbug.com/1211516): Flaky. -IN_PROC_BROWSER_TEST_F(PopupBrowserTest, DISABLED_OpenClampedToCurrentDisplay) { +IN_PROC_BROWSER_TEST_F(PopupBrowserTest, OpenClampedToCurrentDisplay) { const auto display = GetDisplayNearestBrowser(browser()); - EXPECT_TRUE(display.work_area().Contains(browser()->window()->GetBounds())) + ASSERT_TRUE(display.work_area().Contains(browser()->window()->GetBounds())) << "The browser window should be contained by its display's work area"; - // Attempt to open a popup outside the bounds of the opener's display. - const char* const open_scripts[] = { - "open('.', '', 'left=' + (screen.availLeft - 50));", - "open('.', '', 'left=' + (screen.availLeft + screen.availWidth + 50));", - "open('.', '', 'top=' + (screen.availTop - 50));", - "open('.', '', 'top=' + (screen.availTop + screen.availHeight + 50));", - "open('.', '', 'left=' + (screen.availLeft - 50) + " - "',top=' + (screen.availTop - 50));", - "open('.', '', 'left=' + (screen.availLeft - 50) + " - "',top=' + (screen.availTop - 50) + " - "',width=300,height=300');", - "open('.', '', 'left=' + (screen.availLeft + screen.availWidth + 50) + " - "',top=' + (screen.availTop + screen.availHeight + 50) + " - "',width=300,height=300');", - "open('.', '', 'left=' + screen.availLeft + ',top=' + screen.availTop + " - "',width=' + (screen.availWidth + 300) + ',height=300');", - "open('.', '', 'left=' + screen.availLeft + ',top=' + screen.availTop + " - "',width=300,height='+ (screen.availHeight + 300));", - "open('.', '', 'left=' + screen.availLeft + ',top=' + screen.availTop + " - "',width=' + (screen.availWidth + 300) + " - "',height='+ (screen.availHeight + 300));", + // Attempt to open popups outside the bounds of the opener's display. + const char* const open_features[] = { + ("left=${screen.availLeft-50},top=${screen.availTop-50}" + ",width=200,height=200"), + ("left=${screen.availLeft+screen.availWidth+50}" + ",top=${screen.availTop+screen.availHeight+50},width=200,height=200"), + ("left=${screen.availLeft+screen.availWidth-50}" + ",top=${screen.availTop+screen.availHeight-50},width=500,height=500,"), + "width=${screen.availWidth+300},height=${screen.availHeight+300}", }; - for (auto* const script : open_scripts) { + for (auto* const features : open_features) { + const std::string script = "open('.', '', `" + std::string(features) + "`)"; Browser* popup = OpenPopup(browser(), script); // The popup should be constrained to the opener's available display space. - // TODO(crbug.com/897300): Wait for the final window placement to occur; - // this is flakily checking initial or intermediate window placement bounds. EXPECT_EQ(display, GetDisplayNearestBrowser(popup)); EXPECT_TRUE(display.work_area().Contains(popup->window()->GetBounds())) << " script: " << script @@ -227,32 +220,20 @@ } // Ensure popups cannot be moved beyond the available display space by script. -// TODO(crbug.com/1228795): Flaking on Linux Ozone -#if BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_OZONE) -#define MAYBE_MoveClampedToCurrentDisplay DISABLED_MoveClampedToCurrentDisplay -#else -#define MAYBE_MoveClampedToCurrentDisplay MoveClampedToCurrentDisplay -#endif -IN_PROC_BROWSER_TEST_F(PopupBrowserTest, MAYBE_MoveClampedToCurrentDisplay) { +IN_PROC_BROWSER_TEST_F(PopupBrowserTest, MoveClampedToCurrentDisplay) { const auto display = GetDisplayNearestBrowser(browser()); + ASSERT_TRUE(display.work_area().Contains(browser()->window()->GetBounds())) + << "The browser window should be contained by its display's work area"; const char kOpenPopup[] = - "open('.', '', 'left=' + (screen.availLeft + 50) + " - "',top=' + (screen.availTop + 50) + " - "',width=150,height=100');"; + ("open('.', '', `left=${screen.availLeft+screen.availWidth/2}" + ",top=${screen.availTop+screen.availHeight/2},width=200,height=200`)"); + const char* const kMoveScripts[] = { - "moveBy(screen.availWidth * 2, 0);", - "moveBy(screen.availWidth * -2, 0);", - "moveBy(0, screen.availHeight * 2);", - "moveBy(0, screen.availHeight * -2);", - "moveBy(screen.availWidth * 2, screen.availHeight * 2);", - "moveBy(screen.availWidth * -2, screen.availHeight * -2);", - "moveTo(screen.availLeft + screen.availWidth + 50, screen.availTop);", - "moveTo(screen.availLeft - 50, screen.availTop);", - "moveTo(screen.availLeft, screen.availTop + screen.availHeight + 50);", - "moveTo(screen.availLeft, screen.availTop - 50);", - ("moveTo(screen.availLeft + screen.availWidth + 50, " - "screen.availTop + screen.availHeight + 50);"), - "moveTo(screen.availLeft - 50, screen.availTop - 50);", + "moveBy(screen.availWidth*2, screen.availHeight* 2)", + "moveBy(screen.availWidth*-2, screen.availHeight*-2)", + ("moveTo(screen.availLeft+screen.availWidth+50," + "screen.availTop+screen.availHeight+50)"), + "moveTo(screen.availLeft-50, screen.availTop-50)", }; for (auto* const script : kMoveScripts) { Browser* popup = OpenPopup(browser(), kOpenPopup); @@ -260,16 +241,17 @@ auto* popup_contents = popup->tab_strip_model()->GetActiveWebContents(); auto* widget = views::Widget::GetWidgetForNativeWindow( popup->window()->GetNativeWindow()); - + SCOPED_TRACE(testing::Message() + << " script: " << script + << " work_area: " << display.work_area().ToString() + << " popup-before: " << popup_bounds.ToString()); content::ExecuteScriptAsync(popup_contents, script); - // Wait for the substantial move, widgets may move during initialization. + // Wait for a substantial move, widgets bounds change during init. WidgetBoundsChangeWaiter(widget, /*move_by=*/40, /*resize_by=*/0).Wait(); EXPECT_NE(popup_bounds.origin(), popup->window()->GetBounds().origin()); EXPECT_EQ(popup_bounds.size(), popup->window()->GetBounds().size()); EXPECT_TRUE(display.work_area().Contains(popup->window()->GetBounds())) - << " script: " << script - << " work_area: " << display.work_area().ToString() - << " popup: " << popup_bounds.ToString(); + << " popup-after: " << popup->window()->GetBounds().ToString(); } } @@ -277,16 +259,12 @@ IN_PROC_BROWSER_TEST_F(PopupBrowserTest, ResizeClampedToCurrentDisplay) { const auto display = GetDisplayNearestBrowser(browser()); const char kOpenPopup[] = - "open('.', '', 'left=' + (screen.availLeft + 50) + " - "',top=' + (screen.availTop + 50) + " - "',width=150,height=100');"; - // The popup cannot be resized beyond the current screen by script. + ("open('.', '', `left=${screen.availLeft},top=${screen.availTop}" + ",width=200,height=200`)"); + const char* const kResizeScripts[] = { - "resizeBy(screen.availWidth * 2, 0);", - "resizeBy(0, screen.availHeight * 2);", - "resizeTo(screen.availWidth + 200, 200);", - "resizeTo(200, screen.availHeight + 200);", - "resizeTo(screen.availWidth + 200, screen.availHeight + 200);", + "resizeBy(screen.availWidth*2, screen.availHeight*2)", + "resizeTo(screen.availWidth+200, screen.availHeight+200)", }; for (auto* const script : kResizeScripts) { Browser* popup = OpenPopup(browser(), kOpenPopup); @@ -294,26 +272,28 @@ auto* popup_contents = popup->tab_strip_model()->GetActiveWebContents(); auto* widget = views::Widget::GetWidgetForNativeWindow( popup->window()->GetNativeWindow()); - + SCOPED_TRACE(testing::Message() + << " script: " << script + << " work_area: " << display.work_area().ToString() + << " popup-before: " << popup_bounds.ToString()); content::ExecuteScriptAsync(popup_contents, script); - // Wait for the substantial resize, widgets may move during initialization. + // Wait for a substantial resize, widgets bounds change during init. WidgetBoundsChangeWaiter(widget, /*move_by=*/0, /*resize_by=*/100).Wait(); EXPECT_NE(popup_bounds.size(), popup->window()->GetBounds().size()); EXPECT_TRUE(display.work_area().Contains(popup->window()->GetBounds())) - << " script: " << script - << " work_area: " << display.work_area().ToString() - << " popup: " << popup_bounds.ToString(); + << " popup-after: " << popup->window()->GetBounds().ToString(); } } // Opens two popups with custom position and size, but one has noopener. They // should both have the same position and size. http://crbug.com/1011688 IN_PROC_BROWSER_TEST_F(PopupBrowserTest, NoopenerPositioning) { + const char kFeatures[] = + "left=${screen.availLeft},top=${screen.availTop},width=200,height=200"; Browser* noopener_popup = OpenPopup( - browser(), - "open('.', '', 'noopener=1,height=200,width=200,top=100,left=100')"); - Browser* opener_popup = OpenPopup( - browser(), "open('.', '', 'height=200,width=200,top=100,left=100')"); + browser(), "open('.', '', `noopener=1," + std::string(kFeatures) + "`)"); + Browser* opener_popup = + OpenPopup(browser(), "open('.', '', `" + std::string(kFeatures) + "`)"); WidgetBoundsEqualWaiter(views::Widget::GetWidgetForNativeWindow( noopener_popup->window()->GetNativeWindow()), @@ -439,30 +419,12 @@ WindowManagementPopupBrowserTest, ::testing::Bool()); -// TODO(crbug.com/1183791): Disabled everywhere except ChromeOS and Mac because -// of races with SetScreenInstance and observers not being notified. -#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_MAC) -#define MAYBE_AboutBlankCrossScreenPlacement AboutBlankCrossScreenPlacement -#else -#define MAYBE_AboutBlankCrossScreenPlacement \ - DISABLED_AboutBlankCrossScreenPlacement -#endif // Tests that an about:blank popup can be moved across screens with permission. IN_PROC_BROWSER_TEST_P(WindowManagementPopupBrowserTest, - MAYBE_AboutBlankCrossScreenPlacement) { -#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_MAC) + AboutBlankCrossScreenPlacement) { if (!SetUpVirtualDisplays()) { GTEST_SKIP() << "Virtual displays not supported on this platform."; } -#else - display::ScreenBase test_screen; - test_screen.display_list().AddDisplay({1, gfx::Rect(100, 100, 801, 802)}, - display::DisplayList::Type::PRIMARY); - test_screen.display_list().AddDisplay( - {2, gfx::Rect(901, 100, 802, 802)}, - display::DisplayList::Type::NOT_PRIMARY); - display::Screen::SetScreenInstance(&test_screen); -#endif // BUILDFLAG(IS_CHROMEOS_ASH) AssertMinimumDisplayCount(2); SetUpWebServer(); auto* opener = browser()->tab_strip_model()->GetActiveWebContents(); @@ -499,10 +461,6 @@ EXPECT_TRUE(new_popup_display.work_area().Contains(popup_bounds)) << " work_area: " << new_popup_display.work_area().ToString() << " popup: " << popup_bounds.ToString(); - -#if !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_MAC) - display::Screen::SetScreenInstance(nullptr); -#endif // !BUILDFLAG(IS_CHROMEOS_ASH) && !BUILDFLAG(IS_MAC) } IN_PROC_BROWSER_TEST_P(WindowManagementPopupBrowserTest, BasicFullscreen) {
diff --git a/chrome/browser/ui/side_panel/companion/companion_tab_helper.cc b/chrome/browser/ui/side_panel/companion/companion_tab_helper.cc index 9511d370..a90551e 100644 --- a/chrome/browser/ui/side_panel/companion/companion_tab_helper.cc +++ b/chrome/browser/ui/side_panel/companion/companion_tab_helper.cc
@@ -4,11 +4,24 @@ #include "chrome/browser/ui/side_panel/companion/companion_tab_helper.h" +#include "base/strings/strcat.h" +#include "chrome/browser/companion/core/features.h" +#include "chrome/browser/companion/core/mojom/companion.mojom.h" +#include "chrome/browser/translate/chrome_translate_client.h" #include "chrome/browser/ui/side_panel/companion/companion_side_panel_controller_utils.h" #include "chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h" +#include "components/lens/buildflags.h" +#include "components/lens/lens_features.h" +#include "components/lens/lens_url_utils.h" +#include "components/translate/core/browser/language_state.h" +#include "components/translate/core/common/translate_constants.h" #include "content/public/browser/web_contents.h" #include "net/base/url_util.h" +#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) +#include "chrome/browser/lens/region_search/lens_region_search_controller.h" +#endif + namespace companion { CompanionTabHelper::CompanionTabHelper(content::WebContents* web_contents) @@ -17,12 +30,78 @@ CompanionTabHelper::~CompanionTabHelper() = default; -void CompanionTabHelper::ShowCompanionSidePanel(const GURL& search_url) { +void CompanionTabHelper::ShowCompanionSidePanelForSearchURL( + const GURL& search_url) { CHECK(delegate_); SetTextQuery(GetTextQueryFromSearchUrl(search_url)); delegate_->ShowCompanionSidePanel(); } +void CompanionTabHelper::ShowCompanionSidePanelForImage( + const GURL& src_url, + const bool is_image_translate, + const std::string& additional_query_params_modified, + const std::vector<uint8_t>& thumbnail_data, + const gfx::Size& original_size, + const std::string& image_extension, + const std::string& content_type) { + CHECK(delegate_); + + // Create upload URL to load in companion. + std::string upload_url_string = + companion::features::kImageUploadURLForCompanion.Get(); + base::StrAppend(&upload_url_string, {"?", additional_query_params_modified}); + GURL upload_url = GURL(upload_url_string); + CHECK(upload_url.is_valid()); + + if (is_image_translate) { + upload_url = SetImageTranslateQueryParams(upload_url); + } + + // Construct image query object for mojom. + auto image_query = side_panel::mojom::ImageQuery( + upload_url, src_url, content_type, thumbnail_data, original_size.height(), + original_size.width()); + + if (companion_page_handler_) { + // Send request immediately if page handler already exists. + companion_page_handler_->OnImageQuery(image_query); + } else { + // If the companion page handler has not been built yet, store the image + // data so the it can be retrieved later. + image_query_ = std::make_unique<side_panel::mojom::ImageQuery>(image_query); + } + + // Show the side panel. + delegate_->ShowCompanionSidePanel(); +} + +GURL CompanionTabHelper::SetImageTranslateQueryParams(GURL upload_url) { + ChromeTranslateClient* chrome_translate_client = + ChromeTranslateClient::FromWebContents(&GetWebContents()); + if (!chrome_translate_client) { + return upload_url; + } + const translate::LanguageState& language_state = + chrome_translate_client->GetLanguageState(); + if (language_state.IsPageTranslated()) { + if (language_state.source_language() != translate::kUnknownLanguageCode) { + upload_url = net::AppendOrReplaceQueryParameter( + upload_url, lens::kTranslateSourceQueryParameter, + language_state.source_language()); + } + if (language_state.current_language() != translate::kUnknownLanguageCode) { + upload_url = net::AppendOrReplaceQueryParameter( + upload_url, lens::kTranslateTargetQueryParameter, + language_state.current_language()); + } + upload_url = net::AppendOrReplaceQueryParameter( + upload_url, lens::kFilterTypeQueryParameter, + lens::kTranslateFilterTypeQueryParameterValue); + } + return upload_url; +} + void CompanionTabHelper::SetCompanionPageHandler( base::WeakPtr<CompanionPageHandler> companion_page_handler) { CHECK(companion_page_handler); @@ -34,6 +113,11 @@ return companion_page_handler_; } +std::unique_ptr<side_panel::mojom::ImageQuery> +CompanionTabHelper::GetImageQuery() { + return std::move(image_query_); +} + std::string CompanionTabHelper::GetTextQuery() { std::string copy = text_query_; text_query_.clear(); @@ -57,6 +141,22 @@ return text_query_param_value; } +void CompanionTabHelper::StartRegionSearch(content::WebContents* web_contents, + bool use_fullscreen_capture) { +#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) + // TODO(shaktisahu): Pass a UI entry point for accurate metrics. + Browser* browser = companion::GetBrowserForWebContents(web_contents); + CHECK(browser); + if (!lens_region_search_controller_) { + lens_region_search_controller_ = + std::make_unique<lens::LensRegionSearchController>(browser); + } + lens_region_search_controller_->Start(web_contents, use_fullscreen_capture, + /*is_google_default_search_provider=*/ + true); +#endif +} + WEB_CONTENTS_USER_DATA_KEY_IMPL(CompanionTabHelper); } // namespace companion
diff --git a/chrome/browser/ui/side_panel/companion/companion_tab_helper.h b/chrome/browser/ui/side_panel/companion/companion_tab_helper.h index 80ce6087..98bf4e08 100644 --- a/chrome/browser/ui/side_panel/companion/companion_tab_helper.h +++ b/chrome/browser/ui/side_panel/companion/companion_tab_helper.h
@@ -5,9 +5,14 @@ #ifndef CHROME_BROWSER_UI_SIDE_PANEL_COMPANION_COMPANION_TAB_HELPER_H_ #define CHROME_BROWSER_UI_SIDE_PANEL_COMPANION_COMPANION_TAB_HELPER_H_ -#include "chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.h" +#include "chrome/browser/companion/core/mojom/companion.mojom.h" +#include "components/lens/buildflags.h" #include "content/public/browser/web_contents_user_data.h" +#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) +#include "chrome/browser/lens/region_search/lens_region_search_controller.h" +#endif + namespace content { class WebContents; } // namespace content @@ -34,13 +39,31 @@ CompanionTabHelper& operator=(const CompanionTabHelper&) = delete; ~CompanionTabHelper() override; - void ShowCompanionSidePanel(const GURL& search_url); + // Shows the companion side panel with query provided by the |search_url|. + void ShowCompanionSidePanelForSearchURL(const GURL& search_url); + // Shows the companion side panel with the image bytes passed via + // |thumbnail_data|. + void ShowCompanionSidePanelForImage( + const GURL& src_url, + const bool is_image_translate, + const std::string& additional_query_params_modified, + const std::vector<uint8_t>& thumbnail_data, + const gfx::Size& original_size, + const std::string& image_extension, + const std::string& content_type); // Returns the latest text query set by the client or an empty string if none. // Clears the last previous query after returning a copy. std::string GetTextQuery(); // Sets the latest text query and shows the side panel with that query. void SetTextQuery(const std::string& text_query); + // Starts the region search controller with the specified parameters. + void StartRegionSearch(content::WebContents* web_contents, + bool use_fullscreen_capture); + + // Returns the latest image data saved to the helper and not passed to the + // handler or an empty pointer if none. + std::unique_ptr<side_panel::mojom::ImageQuery> GetImageQuery(); base::WeakPtr<CompanionPageHandler> GetCompanionPageHandler(); void SetCompanionPageHandler( @@ -51,15 +74,26 @@ friend class content::WebContentsUserData<CompanionTabHelper>; + // Sets appropriate source and target language parameters and translate + // filter. + GURL SetImageTranslateQueryParams(GURL upload_url); + // Extracts the text query from a query parameter contained in the search URL. // Returns an empty string if the value does not exist. std::string GetTextQueryFromSearchUrl(const GURL& search_url) const; + std::unique_ptr<side_panel::mojom::ImageQuery> image_query_; std::unique_ptr<Delegate> delegate_; std::string text_query_; +#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) + std::unique_ptr<lens::LensRegionSearchController> + lens_region_search_controller_; +#endif // BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) // A weak reference to the last-created WebUI object for this web contents. base::WeakPtr<CompanionPageHandler> companion_page_handler_; + base::WeakPtrFactory<CompanionTabHelper> weak_factory_{this}; + WEB_CONTENTS_USER_DATA_KEY_DECL(); };
diff --git a/chrome/browser/ui/side_panel/companion/companion_utils.cc b/chrome/browser/ui/side_panel/companion/companion_utils.cc index c283628..c62abe5 100644 --- a/chrome/browser/ui/side_panel/companion/companion_utils.cc +++ b/chrome/browser/ui/side_panel/companion/companion_utils.cc
@@ -11,7 +11,7 @@ namespace companion { -bool IsSearchWebInCompanionSidePanelSupported(const Browser* browser) { +bool IsSearchInCompanionSidePanelSupported(const Browser* browser) { if (!browser) { return false; } @@ -22,4 +22,19 @@ base::FeatureList::IsEnabled(features::kSidePanelCompanion); } +bool IsSearchWebInCompanionSidePanelSupported(const Browser* browser) { + if (!browser) { + return false; + } + return IsSearchInCompanionSidePanelSupported(browser); +} + +bool IsSearchImageInCompanionSidePanelSupported(const Browser* browser) { + if (!browser) { + return false; + } + return IsSearchInCompanionSidePanelSupported(browser) && + features::kEnableOpenCompanionForImageSearch.Get(); +} + } // namespace companion
diff --git a/chrome/browser/ui/side_panel/companion/companion_utils.h b/chrome/browser/ui/side_panel/companion/companion_utils.h index 55acefec9..7d79391 100644 --- a/chrome/browser/ui/side_panel/companion/companion_utils.h +++ b/chrome/browser/ui/side_panel/companion/companion_utils.h
@@ -9,10 +9,18 @@ namespace companion { +// Returns true if browser is valid, DSE is Google, and the side panel companion +// feature is enabled. +bool IsSearchInCompanionSidePanelSupported(const Browser* browser); + // Returns true if necessary flags are enabled, browser is valid and default // search engine is Google. bool IsSearchWebInCompanionSidePanelSupported(const Browser* browser); +// Returns true if necessary flags are enabled, browser is valid, and DSE is +// Google. +bool IsSearchImageInCompanionSidePanelSupported(const Browser* browser); + } // namespace companion #endif // CHROME_BROWSER_UI_SIDE_PANEL_COMPANION_COMPANION_UTILS_H_
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.cc b/chrome/browser/ui/tab_contents/core_tab_helper.cc index a023f4a..684fff0c 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.cc +++ b/chrome/browser/ui/tab_contents/core_tab_helper.cc
@@ -56,6 +56,8 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" +#include "chrome/browser/ui/side_panel/companion/companion_tab_helper.h" +#include "chrome/browser/ui/side_panel/companion/companion_utils.h" #endif #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -103,36 +105,48 @@ #endif } -lens::mojom::ImageFormat CoreTabHelper::EncodeImageIntoSearchArgs( +std::vector<unsigned char> CoreTabHelper::EncodeImage( const gfx::Image& image, - TemplateURLRef::SearchTermsArgs& search_args) { + std::string& content_type, + lens::mojom::ImageFormat& image_format) { std::vector<unsigned char> data; if (lens::features::IsWebpForRegionSearchEnabled() && gfx::WebpCodec::Encode(image.AsBitmap(), lens::features::GetRegionSearchEncodingQuality(), &data)) { - search_args.image_thumbnail_content.assign(data.begin(), data.end()); - search_args.image_thumbnail_content_type = "image/webp"; - return lens::mojom::ImageFormat::WEBP; + content_type = "image/webp"; + image_format = lens::mojom::ImageFormat::WEBP; + return data; } else if (lens::features::IsJpegForRegionSearchEnabled() && gfx::JPEGCodec::Encode( image.AsBitmap(), lens::features::GetRegionSearchEncodingQuality(), &data)) { - search_args.image_thumbnail_content.assign(data.begin(), data.end()); - search_args.image_thumbnail_content_type = "image/jpeg"; - return lens::mojom::ImageFormat::JPEG; - } else { - // If the WebP/JPEG encoding fails, fall back to PNG. - // Get the front and end of the image bytes in order to store them in the - // search_args to be sent as part of the PostContent in the request. - size_t image_bytes_size = image.As1xPNGBytes()->size(); - const unsigned char* image_bytes_begin = image.As1xPNGBytes()->front(); - const unsigned char* image_bytes_end = image_bytes_begin + image_bytes_size; - search_args.image_thumbnail_content.assign(image_bytes_begin, - image_bytes_end); - search_args.image_thumbnail_content_type = "image/png"; - return lens::mojom::ImageFormat::PNG; + content_type = "image/jpeg"; + image_format = lens::mojom::ImageFormat::JPEG; + return data; } + // If the WebP/JPEG encoding fails, fall back to PNG. + // Get the front and end of the image bytes in order to store them in the + // search_args to be sent as part of the PostContent in the request. + size_t image_bytes_size = image.As1xPNGBytes()->size(); + const unsigned char* image_bytes_begin = image.As1xPNGBytes()->front(); + const unsigned char* image_bytes_end = image_bytes_begin + image_bytes_size; + content_type = "image/png"; + image_format = lens::mojom::ImageFormat::PNG; + data.assign(image_bytes_begin, image_bytes_end); + return data; +} + +lens::mojom::ImageFormat CoreTabHelper::EncodeImageIntoSearchArgs( + const gfx::Image& image, + TemplateURLRef::SearchTermsArgs& search_args) { + lens::mojom::ImageFormat image_format; + std::string content_type; + std::vector<unsigned char> data = + EncodeImage(image, content_type, image_format); + search_args.image_thumbnail_content.assign(data.begin(), data.end()); + search_args.image_thumbnail_content_type = content_type; + return image_format; } void CoreTabHelper::SearchWithLens(content::RenderFrameHost* render_frame_host, @@ -140,13 +154,13 @@ lens::EntryPoint entry_point, bool is_image_translate) { bool use_side_panel = lens::IsSidePanelEnabledForLens(web_contents()); - SearchByImageImpl(render_frame_host, src_url, kImageSearchThumbnailMinSize, lens::features::GetMaxPixelsForImageSearch(), lens::features::GetMaxPixelsForImageSearch(), lens::GetQueryParametersForLensRequest( entry_point, use_side_panel, - /** is_full_screen_region_search_request **/ false), + /** is_full_screen_region_search_request **/ false, + IsImageSearchSupportedForCompanion()), use_side_panel, is_image_translate); } @@ -174,11 +188,11 @@ : lens::EntryPoint::CHROME_REGION_SEARCH_MENU_ITEM; bool use_side_panel = lens::IsSidePanelEnabledForLensRegionSearch(web_contents()); + bool is_companion_enabled = IsImageSearchSupportedForCompanion(); auto lens_query_params = lens::GetQueryParametersForLensRequest( - entry_point, use_side_panel, - /* is_full_screen_region_search_request= */ - is_full_screen_region_search_request); + entry_point, use_side_panel, is_full_screen_region_search_request, + is_companion_enabled); SearchByImageImpl(image, image_original_size, lens_query_params, use_side_panel, std::move(log_data)); } @@ -216,6 +230,7 @@ const TemplateURL* const default_provider = template_url_service->GetDefaultSearchProvider(); DCHECK(default_provider); + bool is_companion_enabled = IsImageSearchSupportedForCompanion(); TemplateURLRef::SearchTermsArgs search_args = TemplateURLRef::SearchTermsArgs(std::u16string()); @@ -224,9 +239,16 @@ lens::mojom::Phase::ENCODE_START, image_original_size, gfx::Size(), lens::mojom::ImageFormat::ORIGINAL, base::Time::Now())); - lens::mojom::ImageFormat image_format = - EncodeImageIntoSearchArgs(image, search_args); - + std::string content_type; + std::vector<unsigned char> encoded_image_bytes; + lens::mojom::ImageFormat image_format; + if (is_companion_enabled) { + // We do not need to add the image to the search args when using the + // companion. + encoded_image_bytes = EncodeImage(image, content_type, image_format); + } else { + image_format = EncodeImageIntoSearchArgs(image, search_args); + } log_data.push_back(lens::mojom::LatencyLog::New( lens::mojom::Phase::ENCODE_END, image_original_size, gfx::Size(), image_format, base::Time::Now())); @@ -238,6 +260,20 @@ std::move(log_data)); } +#if !BUILDFLAG(IS_ANDROID) + // If supported, launch image in the side panel. + auto* companion_helper = + companion::CompanionTabHelper::FromWebContents(web_contents()); + if (companion_helper && is_companion_enabled) { + companion_helper->ShowCompanionSidePanelForImage( + /*src_url=*/GURL(), /*is_image_translate=*/false, + additional_query_params_modified, encoded_image_bytes, + image_original_size, + /*image_extension=*/std::string(), content_type); + return; + } +#endif + search_args.image_original_size = image_original_size; search_args.additional_query_params = additional_query_params_modified; TemplateURLRef::PostContent post_content; @@ -468,6 +504,17 @@ std::move(log_data)); } +#if !BUILDFLAG(IS_ANDROID) + auto* companion_helper = + companion::CompanionTabHelper::FromWebContents(web_contents()); + if (companion_helper && IsImageSearchSupportedForCompanion()) { + companion_helper->ShowCompanionSidePanelForImage( + src_url, is_image_translate, additional_query_params_modified, + thumbnail_data, original_size, image_extension, thumbnail_content_type); + return; + } +#endif + TemplateURLRef::SearchTermsArgs search_args = TemplateURLRef::SearchTermsArgs(std::u16string()); search_args.image_thumbnail_content.assign(thumbnail_data.begin(), @@ -494,6 +541,16 @@ PostContentToURL(post_content, search_url, use_side_panel); } +bool CoreTabHelper::IsImageSearchSupportedForCompanion() { +#if !BUILDFLAG(IS_ANDROID) + Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); + if (browser) { + return companion::IsSearchImageInCompanionSidePanelSupported(browser); + } +#endif + return false; +} + void CoreTabHelper::MaybeSetSearchArgsForImageTranslate( TemplateURLRef::SearchTermsArgs& search_args) { ChromeTranslateClient* chrome_translate_client =
diff --git a/chrome/browser/ui/tab_contents/core_tab_helper.h b/chrome/browser/ui/tab_contents/core_tab_helper.h index f08be9b29..6f3ae14f 100644 --- a/chrome/browser/ui/tab_contents/core_tab_helper.h +++ b/chrome/browser/ui/tab_contents/core_tab_helper.h
@@ -122,6 +122,17 @@ // Wrapper method for fetching template URL service. TemplateURLService* GetTemplateURLService(); + // Encode the image and set the content type and image format for the + // result image. Returns the vector of image bytes. + static std::vector<unsigned char> EncodeImage( + const gfx::Image& image, + std::string& content_type, + lens::mojom::ImageFormat& image_format); + + // Helper function to return if the companion side panel is enabled for image + // search. + bool IsImageSearchSupportedForCompanion(); + // Posts the bytes and content type to the specified URL If |use_side_panel| // is true, the content will open in a side panel, otherwise it will open in // a new tab.
diff --git a/chrome/browser/ui/tabs/tab_style.cc b/chrome/browser/ui/tabs/tab_style.cc index b2ddba63..b764cb8 100644 --- a/chrome/browser/ui/tabs/tab_style.cc +++ b/chrome/browser/ui/tabs/tab_style.cc
@@ -12,7 +12,8 @@ // Thickness in DIPs of the separator painted on the left and right edges of // the tab. -constexpr int kSeparatorThickness = 1; +constexpr int kGM2SeparatorThickness = 1; +constexpr int kChromeRefreshSeparatorThickness = 2; // Returns the height of the separator between tabs. int GetSeparatorHeight() { @@ -37,6 +38,7 @@ ~ChromeRefresh2023TabStyle() override = default; int GetTopCornerRadius() const override; int GetBottomCornerRadius() const override; + gfx::Size GetSeparatorSize() const override; }; } // namespace @@ -47,7 +49,7 @@ // The standard tab width is 240 DIP including both separators. constexpr int kTabWidth = 240; // The overlap includes one separator, so subtract it here. - return kTabWidth + GetTabOverlap() - kSeparatorThickness; + return kTabWidth + GetTabOverlap() - GetSeparatorSize().width(); } int GM2TabStyle::GetPinnedWidth() const { @@ -56,15 +58,15 @@ } int GM2TabStyle::GetTabOverlap() const { - return GetBottomCornerRadius() * 2 + kSeparatorThickness; + return GetBottomCornerRadius() * 2 + GetSeparatorSize().width(); } int GM2TabStyle::GetDragHandleExtension(int height) const { - return (height - GetSeparatorHeight()) / 2 - 1; + return (height - GetSeparatorSize().height()) / 2 - 1; } gfx::Size GM2TabStyle::GetSeparatorSize() const { - return gfx::Size(kSeparatorThickness, GetSeparatorHeight()); + return gfx::Size(kGM2SeparatorThickness, GetSeparatorHeight()); } gfx::Size GM2TabStyle::GetPreviewImageSize() const { @@ -99,6 +101,10 @@ return 12; } +gfx::Size ChromeRefresh2023TabStyle::GetSeparatorSize() const { + return gfx::Size(kChromeRefreshSeparatorThickness, GetSeparatorHeight()); +} + // static const TabStyle* TabStyle::Get() { static TabStyle* const tab_style =
diff --git a/chrome/browser/ui/views/overlay/video_overlay_window_views.cc b/chrome/browser/ui/views/overlay/video_overlay_window_views.cc index 0b68f7d..401b50d7 100644 --- a/chrome/browser/ui/views/overlay/video_overlay_window_views.cc +++ b/chrome/browser/ui/views/overlay/video_overlay_window_views.cc
@@ -46,7 +46,6 @@ #include "ui/views/window/non_client_view.h" #if BUILDFLAG(IS_CHROMEOS_ASH) -#include "ash/constants/ash_features.h" #include "ash/public/cpp/ash_constants.h" #include "ash/public/cpp/rounded_corner_utils.h" #include "ash/public/cpp/window_properties.h" // nogncheck @@ -918,8 +917,7 @@ void VideoOverlayWindowViews::OnRootViewReady() { #if BUILDFLAG(IS_CHROMEOS_ASH) GetNativeWindow()->SetProperty(ash::kWindowPipTypeKey, true); - if (ash::features::IsDarkLightModeEnabled()) - highlight_border_overlay_ = std::make_unique<HighlightBorderOverlay>(this); + highlight_border_overlay_ = std::make_unique<HighlightBorderOverlay>(this); #endif // BUILDFLAG(IS_CHROMEOS_ASH) GetRootView()->SetPaintToLayer(ui::LAYER_TEXTURED);
diff --git a/chrome/browser/ui/views/side_panel/search_companion/search_companion_side_panel_coordinator.cc b/chrome/browser/ui/views/side_panel/search_companion/search_companion_side_panel_coordinator.cc index 4be448f..87c5d48 100644 --- a/chrome/browser/ui/views/side_panel/search_companion/search_companion_side_panel_coordinator.cc +++ b/chrome/browser/ui/views/side_panel/search_companion/search_companion_side_panel_coordinator.cc
@@ -19,14 +19,20 @@ #include "chrome/browser/ui/views/toolbar/toolbar_view.h" #include "chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.h" #include "chrome/common/webui_url_constants.h" +#include "chrome/grit/generated_resources.h" +#include "components/vector_icons/vector_icons.h" SearchCompanionSidePanelCoordinator::SearchCompanionSidePanelCoordinator( Browser* browser) : BrowserUserData<SearchCompanionSidePanelCoordinator>(*browser), browser_(browser), // TODO(b/269331995): Localize menu item label. - name_(u"Companion"), - icon_(kJourneysIcon) { + name_(l10n_util::GetStringUTF16(IDS_SIDE_PANEL_COMPANION_TITLE)), +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) + icon_(vector_icons::kGoogleGLogoIcon) { +#else + icon_(vector_icons::kSearchIcon) { +#endif if (auto* template_url_service = TemplateURLServiceFactory::GetForProfile(browser->profile())) { template_url_service_observation_.Observe(template_url_service);
diff --git a/chrome/browser/ui/views/tabs/tab_style_views.cc b/chrome/browser/ui/views/tabs/tab_style_views.cc index df9fe99..21b6d2f 100644 --- a/chrome/browser/ui/views/tabs/tab_style_views.cc +++ b/chrome/browser/ui/views/tabs/tab_style_views.cc
@@ -85,6 +85,9 @@ void ShowHover(TabStyle::ShowHoverStyle style) override; void HideHover(TabStyle::HideHoverStyle style) override; + // Returns the color for the separator. + virtual SkColor GetTabSeparatorColor() const; + // Painting helper functions: virtual SkColor GetTabBackgroundColor(TabActive active) const; @@ -765,6 +768,11 @@ ThemeProperties::SHOULD_FILL_BACKGROUND_TAB_COLOR); } +SkColor GM2TabStyleViews::GetTabSeparatorColor() const { + CHECK(tab()); + return tab_->controller()->GetTabSeparatorColor(); +} + SkColor GM2TabStyleViews::GetTabBackgroundColor(TabActive active) const { CHECK(tab()); SkColor color = tab_->controller()->GetTabBackgroundColor( @@ -920,8 +928,7 @@ TabStyle::SeparatorBounds separator_bounds = GetSeparatorBounds(scale); - const SkColor separator_base_color = - tab_->controller()->GetTabSeparatorColor(); + const SkColor separator_base_color = GetTabSeparatorColor(); const auto separator_color = [separator_base_color](float opacity) { return SkColorSetA(separator_base_color, gfx::Tween::IntValueBetween(opacity, SK_AlphaTRANSPARENT, @@ -989,6 +996,7 @@ SkColor GetTabBackgroundColor(TabActive active) const override; int GetStrokeThickness(bool should_paint_as_active = false) const override; void PaintBackgroundHover(gfx::Canvas* canvas, float scale) const override; + SkColor GetTabSeparatorColor() const override; }; ChromeRefresh2023TabStyleViews::ChromeRefresh2023TabStyleViews(Tab* tab) @@ -1045,6 +1053,19 @@ flags); } +SkColor ChromeRefresh2023TabStyleViews::GetTabSeparatorColor() const { + CHECK(tab()); + const auto* cp = tab()->GetWidget()->GetColorProvider(); + DCHECK(cp); + if (!cp) { + return gfx::kPlaceholderColor; + } + + return cp->GetColor(tab()->controller()->ShouldPaintAsActiveFrame() + ? kColorTabDividerFrameActive + : kColorTabDividerFrameInactive); +} + } // namespace // static
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc index f975bba..a9b15a5 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac.cc
@@ -1242,5 +1242,857 @@ helper_.CheckWindowDisplayMinimal(); } +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneWithShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneNoShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneWindowed_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneBrowser_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneWithShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneNoShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_31Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneBrowser_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_28_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.ClosePwa(); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneWindowed_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_31Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneDefault_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_47Standalone_28_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.ClosePwa(); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneWithShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kWithShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_32StandaloneNoShortcutWindowedWebApp_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallPolicyApp(Site::kStandalone, ShortcutOptions::kNoShortcut, + WindowOptions::kWindowed, InstallMode::kWebApp); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_47Standalone_24_12Standalone_7Standalone_112StandaloneNotShown_160Profile2_29StandaloneBrowser_164Standalone_1Standalone_165StandaloneOneDefault) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.CheckWindowCreated(); + helper_.CheckAppInListWindowed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.CheckWindowControlsOverlayToggle(Site::kStandalone, + IsShown::kNotShown); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kDefault); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneBrowser_11Standalone_7Standalone_160Profile2_29StandaloneWindowed_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kWindowed); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneBrowser_11Standalone_7Standalone_160Profile2_31Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallOmniboxIcon(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + +IN_PROC_BROWSER_TEST_F( + WebAppIntegration, + WAI_29StandaloneBrowser_11Standalone_7Standalone_160Profile2_47Standalone_164Standalone_1Standalone_165StandaloneOneProfile2) { + // Test contents are generated by script. Please do not modify! + // See `docs/webapps/why-is-this-test-failing.md` or + // `docs/webapps/integration-testing-framework` for more info. + // Sheriffs: Disabling this test is supported. + helper_.CreateShortcut(Site::kStandalone, WindowOptions::kBrowser); + helper_.CheckAppInListTabbed(Site::kStandalone); + helper_.CheckPlatformShortcutAndIcon(Site::kStandalone); + helper_.SwitchActiveProfile(ProfileName::kProfile2); + helper_.InstallMenuOption(InstallableSite::kStandalone); + helper_.QuitAppShim(Site::kStandalone); + helper_.LaunchFromPlatformShortcut(Site::kStandalone); + helper_.CheckPwaWindowCreatedInProfile(Site::kStandalone, Number::kOne, + ProfileName::kProfile2); +} + } // namespace } // namespace web_app::integration_tests
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc index 2a6d1e4f..f5b2e39 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
@@ -2138,21 +2138,7 @@ if (!BeforeStateChangeAction(__FUNCTION__)) { return; } - const char* profile_name_str = nullptr; - switch (profile_name) { - case ProfileName::kDefault: - profile_name_str = "Default"; - break; - case ProfileName::kProfile2: - profile_name_str = "Profile2"; - break; - } - base::ScopedAllowBlockingForTesting allow_blocking; - base::FilePath user_data_dir; - base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); - base::FilePath profile_path = user_data_dir.AppendASCII(profile_name_str); - active_profile_ = - g_browser_process->profile_manager()->GetProfile(profile_path); + active_profile_ = GetOrCreateProfile(profile_name); // Make sure the profile has at least one browser by creating one if one // doesn't exist already. if (!chrome::FindTabbedBrowser(active_profile_, @@ -3171,11 +3157,18 @@ if (!BeforeStateCheckAction(__FUNCTION__)) { return; } + CheckPwaWindowCreatedImpl(profile(), site, number); + AfterStateCheckAction(); +} + +void WebAppIntegrationTestDriver::CheckPwaWindowCreatedImpl(Profile* profile, + Site site, + Number number) { DCHECK(before_state_change_action_state_); absl::optional<ProfileState> after_action_profile = - GetStateForProfile(after_state_change_action_state_.get(), profile()); + GetStateForProfile(after_state_change_action_state_.get(), profile); absl::optional<ProfileState> before_action_profile = - GetStateForProfile(before_state_change_action_state_.get(), profile()); + GetStateForProfile(before_state_change_action_state_.get(), profile); ASSERT_TRUE(after_action_profile.has_value()); ASSERT_TRUE(before_action_profile.has_value()); @@ -3202,6 +3195,17 @@ ASSERT_EQ(2, app_window_diff); break; } +} + +void WebAppIntegrationTestDriver::CheckPwaWindowCreatedInProfile( + Site site, + Number number, + ProfileName profile_name) { + if (!BeforeStateCheckAction(__FUNCTION__)) { + return; + } + Profile* profile = GetOrCreateProfile(profile_name); + CheckPwaWindowCreatedImpl(profile, site, number); AfterStateCheckAction(); } @@ -3711,6 +3715,25 @@ return std::make_unique<StateSnapshot>(std::move(profile_state_map)); } +Profile* WebAppIntegrationTestDriver::GetOrCreateProfile( + ProfileName profile_name) { + const char* profile_name_str = nullptr; + switch (profile_name) { + case ProfileName::kDefault: + profile_name_str = "Default"; + break; + case ProfileName::kProfile2: + profile_name_str = "Profile2"; + break; + } + CHECK(profile_name_str); + base::ScopedAllowBlockingForTesting allow_blocking; + base::FilePath user_data_dir; + base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); + base::FilePath profile_path = user_data_dir.AppendASCII(profile_name_str); + return g_browser_process->profile_manager()->GetProfile(profile_path); +} + content::WebContents* WebAppIntegrationTestDriver::GetCurrentTab( Browser* browser) { return browser->tab_strip_model()->GetActiveWebContents();
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h index 78c278b..b6e2b0c 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h
@@ -366,6 +366,9 @@ void CheckWindowClosed(); void CheckWindowCreated(); void CheckPwaWindowCreated(Site site, Number number); + void CheckPwaWindowCreatedInProfile(Site site, + Number number, + ProfileName profile_name); void CheckWindowNotCreated(); void CheckWindowControlsOverlay(Site site, IsOn is_on); void CheckWindowControlsOverlayToggle(Site site, IsShown is_shown); @@ -407,6 +410,8 @@ std::unique_ptr<StateSnapshot> ConstructStateSnapshot(); + Profile* GetOrCreateProfile(ProfileName profile_name); + content::WebContents* GetCurrentTab(Browser* browser); GURL GetInScopeURL(Site site); base::FilePath GetShortcutPath(base::FilePath shortcut_dir, @@ -451,6 +456,8 @@ void CheckAppSettingsAppState(Profile* profile, const AppState& app_state); + void CheckPwaWindowCreatedImpl(Profile* profile, Site site, Number number); + base::FilePath GetResourceFile(base::FilePath::StringPieceType relative_path); std::vector<base::FilePath> GetTestFilePaths(FilesOptions file_options);
diff --git a/chrome/browser/ui/webui/ash/internet_config_dialog.cc b/chrome/browser/ui/webui/ash/internet_config_dialog.cc index 37606b7f..e13437fd 100644 --- a/chrome/browser/ui/webui/ash/internet_config_dialog.cc +++ b/chrome/browser/ui/webui/ash/internet_config_dialog.cc
@@ -20,12 +20,14 @@ #include "chromeos/ash/components/network/network_state.h" #include "chromeos/ash/components/network/network_state_handler.h" #include "chromeos/ash/components/network/network_util.h" +#include "chromeos/constants/chromeos_features.h" #include "chromeos/services/network_config/public/mojom/cros_network_config.mojom.h" // nogncheck #include "components/strings/grit/components_strings.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "ui/chromeos/strings/grit/ui_chromeos_strings.h" #include "ui/chromeos/strings/network/network_element_localized_strings_provider.h" +#include "ui/webui/color_change_listener/color_change_handler.h" #include "ui/wm/core/shadow_types.h" namespace ash { @@ -168,6 +170,7 @@ source->DisableTrustedTypesCSP(); + source->AddBoolean("isJellyEnabled", ::chromeos::features::IsJellyEnabled()); AddInternetStrings(source); source->AddLocalizedString("title", IDS_SETTINGS_INTERNET_CONFIG); @@ -186,6 +189,12 @@ GetNetworkConfigService(std::move(receiver)); } +void InternetConfigDialogUI::BindInterface( + mojo::PendingReceiver<color_change_listener::mojom::PageHandler> receiver) { + color_change_handler_ = std::make_unique<ui::ColorChangeHandler>( + web_ui()->GetWebContents(), std::move(receiver)); +} + WEB_UI_CONTROLLER_TYPE_IMPL(InternetConfigDialogUI) } // namespace ash
diff --git a/chrome/browser/ui/webui/ash/internet_config_dialog.h b/chrome/browser/ui/webui/ash/internet_config_dialog.h index 55b9b9c4..f6e2bd4 100644 --- a/chrome/browser/ui/webui/ash/internet_config_dialog.h +++ b/chrome/browser/ui/webui/ash/internet_config_dialog.h
@@ -14,6 +14,11 @@ #include "content/public/common/url_constants.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "ui/web_dialogs/web_dialog_ui.h" +#include "ui/webui/resources/cr_components/color_change_listener/color_change_listener.mojom.h" + +namespace ui { +class ColorChangeHandler; +} // namespace ui namespace ash { @@ -75,13 +80,22 @@ InternetConfigDialogUI& operator=(const InternetConfigDialogUI&) = delete; ~InternetConfigDialogUI() override; + // Instantiates implementor of the mojom::CrosNetworkConfig mojo interface // passing the pending receiver that will be internally bound. void BindInterface( mojo::PendingReceiver<chromeos::network_config::mojom::CrosNetworkConfig> receiver); + // Instantiates the implementor of the mojom::PageHandler mojo interface + // passing the pending receiver that will be internally bound. + void BindInterface( + mojo::PendingReceiver<color_change_listener::mojom::PageHandler> + receiver); + private: + std::unique_ptr<ui::ColorChangeHandler> color_change_handler_; + WEB_UI_CONTROLLER_TYPE_DECL(); };
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc index e4100874..60b9494 100644 --- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc +++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -550,6 +550,10 @@ source->AddBoolean("removeScrim", base::FeatureList::IsEnabled( ntp_features::kNtpRemoveScrim)); + source->AddBoolean("modulesChromeCartInHistoryClustersModuleEnabled", + base::FeatureList::IsEnabled( + ntp_features::kNtpChromeCartInHistoryClusterModule)); + RealboxHandler::SetupWebUIDataSource(source, profile); webui::SetupWebUIDataSource(
diff --git a/chrome/browser/ui/webui/settings/ash/multidevice_handler.cc b/chrome/browser/ui/webui/settings/ash/multidevice_handler.cc index 2e33f26..8a1abdc 100644 --- a/chrome/browser/ui/webui/settings/ash/multidevice_handler.cc +++ b/chrome/browser/ui/webui/settings/ash/multidevice_handler.cc
@@ -28,7 +28,6 @@ #include "chromeos/ash/components/phonehub/pref_names.h" #include "chromeos/ash/components/phonehub/screen_lock_manager.h" #include "chromeos/ash/components/phonehub/util/histogram_util.h" -#include "chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h" #include "chromeos/ash/services/multidevice_setup/public/cpp/prefs.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/prefs/pref_service.h" @@ -147,14 +146,6 @@ base::BindRepeating(&MultideviceHandler::HandleSetUpAndroidSms, base::Unretained(this))); web_ui()->RegisterMessageCallback( - "getSmartLockSignInEnabled", - base::BindRepeating(&MultideviceHandler::HandleGetSmartLockSignInEnabled, - base::Unretained(this))); - web_ui()->RegisterMessageCallback( - "setSmartLockSignInEnabled", - base::BindRepeating(&MultideviceHandler::HandleSetSmartLockSignInEnabled, - base::Unretained(this))); - web_ui()->RegisterMessageCallback( "getSmartLockSignInAllowed", base::BindRepeating(&MultideviceHandler::HandleGetSmartLockSignInAllowed, base::Unretained(this))); @@ -254,11 +245,6 @@ } pref_change_registrar_.Add( - proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled, - base::BindRepeating( - &MultideviceHandler::NotifySmartLockSignInEnabledChanged, - base::Unretained(this))); - pref_change_registrar_.Add( multidevice_setup::kSmartLockSigninAllowedPrefName, base::BindRepeating( &MultideviceHandler::NotifySmartLockSignInAllowedChanged, @@ -473,39 +459,6 @@ android_sms_app_manager_->SetUpAndLaunchAndroidSmsApp(); } -void MultideviceHandler::HandleGetSmartLockSignInEnabled( - const base::Value::List& args) { - const base::Value& callback_id = args[0]; - CHECK(callback_id.is_string()); - - bool signInEnabled = prefs_->GetBoolean( - proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled); - ResolveJavascriptCallback(callback_id, base::Value(signInEnabled)); -} - -void MultideviceHandler::HandleSetSmartLockSignInEnabled( - const base::Value::List& args) { - bool enabled = false; - if (args[0].is_bool()) { - enabled = args[0].GetBool(); - } - - const bool auth_token_present = args.size() >= 2 && args[1].is_string(); - const std::string& auth_token = auth_token_present ? args[1].GetString() : ""; - - // Either the user is disabling sign-in, or they are enabling it and the auth - // token must be present. - CHECK(!enabled || auth_token_present); - - // Only check auth token if the user is attempting to enable sign-in. - if (enabled && !IsAuthTokenValid(auth_token)) { - return; - } - - prefs_->SetBoolean( - proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled, enabled); -} - void MultideviceHandler::HandleGetSmartLockSignInAllowed( const base::Value::List& args) { const base::Value& callback_id = args[0]; @@ -910,13 +863,6 @@ return page_content_dictionary; } -void MultideviceHandler::NotifySmartLockSignInEnabledChanged() { - bool sign_in_enabled = prefs_->GetBoolean( - proximity_auth::prefs::kProximityAuthIsChromeOSLoginEnabled); - FireWebUIListener("smart-lock-signin-enabled-changed", - base::Value(sign_in_enabled)); -} - void MultideviceHandler::NotifySmartLockSignInAllowedChanged() { bool sign_in_allowed = prefs_->GetBoolean(multidevice_setup::kSmartLockSigninAllowedPrefName);
diff --git a/chrome/browser/ui/webui/settings/ash/multidevice_handler.h b/chrome/browser/ui/webui/settings/ash/multidevice_handler.h index 6c01d3b..5f541e0 100644 --- a/chrome/browser/ui/webui/settings/ash/multidevice_handler.h +++ b/chrome/browser/ui/webui/settings/ash/multidevice_handler.h
@@ -141,8 +141,8 @@ void HandleRemoveHostDevice(const base::Value::List& args); void HandleRetryPendingHostSetup(const base::Value::List& args); void HandleSetUpAndroidSms(const base::Value::List& args); - void HandleGetSmartLockSignInEnabled(const base::Value::List& args); - void HandleSetSmartLockSignInEnabled(const base::Value::List& args); + // TODO(b/227674947):Now that Sign in with Smart Lock is deprecated, delete + // this method. void HandleGetSmartLockSignInAllowed(const base::Value::List& args); void HandleGetAndroidSmsInfo(const base::Value::List& args); void HandleAttemptNotificationSetup(const base::Value::List& args); @@ -158,8 +158,10 @@ void OnSetFeatureStateEnabledResult(const std::string& js_callback_id, bool success); - void NotifySmartLockSignInEnabledChanged(); + // TODO(b/227674947):Now that Sign in with Smart Lock is deprecated, delete + // this methods. void NotifySmartLockSignInAllowedChanged(); + // Generate android sms info dictionary containing the messages for web // content settings origin url and messages feature state. base::Value::Dict GenerateAndroidSmsInfo();
diff --git a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc index 7866851c..e18302b 100644 --- a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc +++ b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.cc
@@ -69,11 +69,19 @@ companion::CompanionTabHelper::FromWebContents(active_web_contents); helper->SetCompanionPageHandler(weak_ptr_factory_.GetWeakPtr()); std::string initial_text_query = helper->GetTextQuery(); - if (initial_text_query.empty()) { - NotifyURLChanged(/*is_full_reload=*/true); - } else { + if (!initial_text_query.empty()) { OnSearchTextQuery(initial_text_query); + return; } + + std::unique_ptr<side_panel::mojom::ImageQuery> image_query = + helper->GetImageQuery(); + if (image_query) { + OnImageQuery(*image_query); + return; + } + + NotifyURLChanged(/*is_full_reload=*/true); } } @@ -101,6 +109,11 @@ } } +void CompanionPageHandler::OnImageQuery( + side_panel::mojom::ImageQuery image_query) { + page_->OnImageQuery(image_query.Clone()); +} + void CompanionPageHandler::OnPromoAction( side_panel::mojom::PromoType promo_type, side_panel::mojom::PromoAction promo_action) { @@ -108,21 +121,9 @@ } void CompanionPageHandler::OnRegionSearchClicked() { -#if BUILDFLAG(GOOGLE_CHROME_BRANDING) - // Start a region search here. - // TODO(shaktisahu): Pass a UI entry point for accurate metrics. - if (!lens_region_search_controller_) { - lens_region_search_controller_ = - std::make_unique<lens::LensRegionSearchController>(GetBrowser()); - } - auto* profile = - Profile::FromBrowserContext(web_contents()->GetBrowserContext()); - bool is_google_default_search_provider = - search::DefaultSearchProviderIsGoogle(profile); - lens_region_search_controller_->Start(web_contents(), - /*use_fullscreen_capture=*/false, - is_google_default_search_provider); -#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) + auto* helper = companion::CompanionTabHelper::FromWebContents(web_contents()); + CHECK(helper); + helper->StartRegionSearch(web_contents(), /*use_fullscreen_capture=*/false); } void CompanionPageHandler::OnExpsOptInStatusAvailable(bool is_exps_opted_in) {
diff --git a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h index 9cec2a0..02e0abd9 100644 --- a/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h +++ b/chrome/browser/ui/webui/side_panel/companion/companion_page_handler.h
@@ -17,10 +17,6 @@ #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" -#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) -#include "chrome/browser/lens/region_search/lens_region_search_controller.h" -#endif - class Browser; class CompanionSidePanelUntrustedUI; class Profile; @@ -55,6 +51,7 @@ // Informs the page handler that a new text query to initialize / reload the // page with was sent from client. void OnSearchTextQuery(const std::string& text_query); + void OnImageQuery(side_panel::mojom::ImageQuery image_query); private: // MsbbDelegate overrides. @@ -77,10 +74,6 @@ raw_ptr<CompanionSidePanelUntrustedUI> companion_untrusted_ui_ = nullptr; std::unique_ptr<SigninDelegate> signin_delegate_; std::unique_ptr<CompanionUrlBuilder> url_builder_; -#if BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) - std::unique_ptr<lens::LensRegionSearchController> - lens_region_search_controller_; -#endif // BUILDFLAG(ENABLE_LENS_DESKTOP_GOOGLE_BRANDED_FEATURES) std::unique_ptr<PromoHandler> promo_handler_; base::WeakPtrFactory<CompanionPageHandler> weak_ptr_factory_{this};
diff --git a/chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.cc b/chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.cc index b040814..112fe79 100644 --- a/chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.cc +++ b/chrome/browser/ui/webui/side_panel/companion/companion_side_panel_untrusted_ui.cc
@@ -41,8 +41,12 @@ : companion::features::kHomepageURLForCompanion.Get(); std::string frameSrcDirective = std::string("frame-src ") + frameSrcString + ";"; + std::string formActionDirective = + std::string("form-action ") + frameSrcString + ";"; html_source->OverrideContentSecurityPolicy( network::mojom::CSPDirectiveName::FrameSrc, frameSrcDirective); + html_source->OverrideContentSecurityPolicy( + network::mojom::CSPDirectiveName::FormAction, formActionDirective); html_source->AddString("companion_origin", frameSrcString); }
diff --git a/chrome/browser/xsurface/BUILD.gn b/chrome/browser/xsurface/BUILD.gn index 8911520..af895c27 100644 --- a/chrome/browser/xsurface/BUILD.gn +++ b/chrome/browser/xsurface/BUILD.gn
@@ -27,6 +27,14 @@ "android/java/src/org/chromium/chrome/browser/xsurface/SurfaceRenderer.java", "android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java", "android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedActionsHandler.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedLaunchReliabilityLogger.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedNetworkRequestReliabilityLogger.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScopeDependencyProvider.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedUserInteractionReliabilityLogger.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/ReliabilityLoggingTestUtil.java", + "android/java/src/org/chromium/chrome/browser/xsurface/feed/StreamType.java", ] deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedActionsHandler.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedActionsHandler.java index fe714b43..5679b9e4 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedActionsHandler.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedActionsHandler.java
@@ -4,162 +4,17 @@ package org.chromium.chrome.browser.xsurface; -import android.view.View; - import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.Map; -/** - * Interface to provide chromium calling points for a feed. - */ -public interface FeedActionsHandler { - String KEY = "FeedActions"; +/** This is being moved to ./feed/ */ +@Deprecated +public interface FeedActionsHandler + extends org.chromium.chrome.browser.xsurface.feed.FeedActionsHandler { + public enum SnackbarDuration { SHORT, LONG } - /** - * Requests additional content to be loaded. Once the load is completed, onStreamUpdated will be - * called. - */ - default void loadMore() {} - - /** - * Sends data back to the server when content is clicked. - */ - default void processThereAndBackAgainData(byte[] data, LoggingParameters loggingParameters) {} - - /** - * Triggers Chrome to send user feedback for this card. - */ - default void sendFeedback(Map<String, String> productSpecificDataMap) {} - - /** - * Requests to dismiss a card. A change ID will be returned and it can be used to commit or - * discard the change. - * @param data A serialized feedpacking.DismissData message. - */ - default int requestDismissal(byte[] data) { - return 0; - } - - /** - * Commits a previous requested dismissal denoted by change ID. - */ - default void commitDismissal(int changeId) {} - - /** - * Discards a previous requested dismissal denoted by change ID. - */ - default void discardDismissal(int changeId) {} - - /** - * Interface for handling snackbar exit conditions. - */ - - public interface SnackbarController { - @Deprecated - default void onAction() {} - - /** - * Called when the snackbar's action button is tapped. - * - * @param actionFinished Should be called when work associated with this action has been - * completed. - */ - default void onAction(Runnable actionFinished) {} - - @Deprecated - default void onDismissNoAction() {} - - /** - * Called when the snackbar is dismissed without the button being tapped (usually when it - * times out). - * - * @param actionFinished Should be called when work associated with this action has been - * completed. - */ - default void onDismissNoAction(Runnable actionFinished) {} - } - - /** - * Snackbar dismissal timeout. - */ - public enum SnackbarDuration { - /** - * SHORT should be used with simple one-line snackbars. - */ - SHORT, - /** - * LONG should be used with multi-line snackbars that take longer to read. - */ - LONG - } - - /** - * Show a snackbar. - * @param text Text to display. - * @param actionLabel Text for the button (e.g. "Undo"). - * @param duration Whether to remove the snackbar after a short or long delay. - * @param controller Handlers for snackbar actions. - */ - default void showSnackbar(String text, String actionLabel, SnackbarDuration duration, - SnackbarController controller) {} - - /** - * Share a URL. This will bring up the sharing sheet. - * @param url The url of the page to be shared. - * @param title The title of the page to be shared. - */ - default void share(String url, String title) {} - - /** - * Opens the settings to manager autoplay. - */ - default void openAutoplaySettings() {} - - /** - * Watches a view to get notified when the first time it has the visible area percentage not - * less than the given threshold. The watch is based on the visibility of full - * ListContentManager item containing the view. - * @param view The view to watch for. - * @param viewedThreshold The threshold of the percentage of the visible area on screen. - * @param runnable The runnable to get notified. - */ - default void watchForViewFirstVisible(View view, float viewedThreshold, Runnable runnable) {} - - /** - * Reports that the notice identified by the given key is created. It may not be visible yet. - * @param key Key to identify the type of the notice. For each new key, please update - * "NoticeKey" token in histograms.xml and NoticeUmaName() in metrics_reporter.cc. - */ - default void reportNoticeCreated(String key) {} - - /** - * Reports that the notice identified by the given key is viewed, fully visible in the viewport. - * @param key Key to identify the type of the notice. This interaction info can be used to - * determine if it is necessary to show the notice to the user again. - */ - default void reportNoticeViewed(String key) {} - - /** - * Reports that the user has clicked/tapped the notice identified by the given key to perform - * an open action. This interaction info can be used to determine if it is necessary to show - * the notice to the user again. - * @param key Key to identify the type of the notice. - */ - default void reportNoticeOpenAction(String key) {} - - /** - * Reports that the notice identified by the given key is dismissed by the user. - * @param key Key to identify the type of the notice. - */ - default void reportNoticeDismissed(String key) {} - - /** - * Types of feeds that can be invalidated. These values must match the privately defined values - * of InvalidateCacheData.FeedType. - */ @IntDef({FeedIdentifier.UNSPECIFIED, FeedIdentifier.MAIN_FEED, FeedIdentifier.FOLLOWING_FEED, FeedIdentifier.CHANNEL_FEED}) @Retention(RetentionPolicy.SOURCE) @@ -169,44 +24,10 @@ int FOLLOWING_FEED = 2; int CHANNEL_FEED = 3; } + /** This is being moved to ./feed/ */ + public interface SnackbarController extends org.chromium.chrome.browser.xsurface.feed + .FeedActionsHandler.SnackbarController {} - /** - * Requests that the cache a feed be invalidated so that its contents are re-fetched the next - * time the feed is shown/loaded. - * @param feedToInvalidate Identifies which feed should have its cache invalidated. The request - * will be dropped if set to FeedIdentifier.UNSPECIFIED. - */ - default void invalidateContentCacheFor(@FeedIdentifier int feedToInvalidate) {} - - /** - * Reports that the info card is being tracked for its full visibility. - * @param type Type of the info card. - */ - default void reportInfoCardTrackViewStarted(int type) {} - - /** - * Reports that the info card is fully visible in the viewport. - * @param type Type of the info card. - * @param minimumViewIntervalSeconds The minimum interval in seconds from the last time the info - * card is viewed in order for it to be considered viewed again. - */ - default void reportInfoCardViewed(int type, int minimumViewIntervalSeconds) {} - - /** - * Reports that the user tapps the info card. - * @param type Type of the info card. - */ - default void reportInfoCardClicked(int type) {} - - /** - * Reports that the user dismisses the info card explicitly by tapping the close button. - * @param type Type of the info card. - */ - default void reportInfoCardDismissedExplicitly(int type) {} - - /** - * Resets all the states of the info card. - * @param type Type of the info card. - */ - default void resetInfoCardStates(int type) {} + default void showSnackbar(String text, String actionLabel, SnackbarDuration duration, + SnackbarController controller) {} }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLaunchReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLaunchReliabilityLogger.java index d895a29..fa0b5a7 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLaunchReliabilityLogger.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedLaunchReliabilityLogger.java
@@ -10,11 +10,10 @@ import java.lang.annotation.RetentionPolicy; /** - * Interface for logging latency and availability signals for feed launches. All timestamps are in - * terms of nanoseconds since system boot. One instance exists per feed surface and lasts for the - * surface's lifetime. + * This is being moved to ./feed/ */ -public interface FeedLaunchReliabilityLogger { +public interface FeedLaunchReliabilityLogger + extends org.chromium.chrome.browser.xsurface.feed.FeedLaunchReliabilityLogger { /** Type of surface the feed is being launched on. */ @IntDef({SurfaceType.UNSPECIFIED, SurfaceType.NEW_TAB_PAGE, SurfaceType.START_SURFACE}) @Retention(RetentionPolicy.SOURCE) @@ -24,7 +23,8 @@ int START_SURFACE = 2; } - /** Type of stream being launched (the "For you","Following", or "SingleWebFeed" feed). */ + /** @deprecated: Please use org.chromium.chrome.browser.xsurface.feed.StreamType */ + @Deprecated @IntDef({StreamType.UNSPECIFIED, StreamType.FOR_YOU, StreamType.WEB_FEED, StreamType.SINGLE_WEB_FEED}) @Retention(RetentionPolicy.SOURCE) @@ -34,137 +34,4 @@ int WEB_FEED = 2; int SINGLE_WEB_FEED = 3; } - - /** - * Set details about the stream being launched and send any pending events. - * @param streamType Feed type (e.g. "for you" or "following"). - * @param streamId Identifier for the stream used to disambiguate events from concurrent - * streams. - */ - default void sendPendingEvents(@StreamType int streamType, int streamId) {} - - /** - * Clear any pending events and end the flow without logging any events. - */ - default void cancelPendingEvents() {} - - /** - * Returns true if logUiStarting(), logFeedReloading(), or logFeedLaunchOtherStart() have been - * called since the last call to logLaunchFinished(). - * @return True if the launch flow has started but not finished. - */ - default boolean isLaunchInProgress() { - return false; - } - - /** - * Log when the feed is launched because its UI surface was created. - * @param surfaceType Feed surface type (e.g. new tab page or Start Surface). - * @param timestamp Time at which the surface began to be created. - */ - default void logUiStarting(@SurfaceType int surfaceType, long timestamp) {} - - /** - * Log when a feed refresh is requested manually. - * @param timestamp Time at which the surface was shown. - */ - default void logManualRefresh(long timestamp) {} - - /** - * Log when the feed is launched because its surface was shown and cards needed to be - * re-rendered. - * @param timestamp Time at which the surface was shown. - */ - default void logFeedReloading(long timestamp) {} - - /** - * Log when the feed is launched in any case not already handled by logUiStarting() or - * logFeedReloaded(). - * @param timestamp Time at which the feed stream was bound. - */ - default void logFeedLaunchOtherStart(long timestamp) {} - - /** - * Log when the user switches to another feed tab. - * @param toStreamType New feed type. - * @param timestamp Event time. - */ - default void logSwitchedFeeds(@StreamType int toStreamType, long timestamp) {} - - /** - * Log when cached feed content is about to be read. - * @param timestamp Event time. - */ - default void logCacheReadStart(long timestamp) {} - - /** - * Log after finishing attempting to read cached feed content. - * @param timestamp Event time. - * @param result DiscoverCardReadCacheResult. - */ - default void logCacheReadEnd(long timestamp, int result) {} - - /** - * Log when the loading spinner is shown. - * @param timestamp Time at which the spinner was shown. - */ - default void logLoadingIndicatorShown(long timestamp) {} - - /** - * Log when rendering of above-the-fold feed content begins. - * @param timestamp Event time. - */ - default void logAtfRenderStart(long timestamp) {} - - /** - * Log when rendering of above-the-fold feed content finishes. - * @param timestamp Event time. - * @param result DiscoverAboveTheFoldRenderResult. - */ - default void logAtfRenderEnd(long timestamp, int result) {} - - /** - * Get the network request logger for a request by its ID. - * @param requestId A unique ID for the request. - * @return A logger for the request: an existing logger if one matches `requestId`, or a new one - * otherwise. - */ - default FeedNetworkRequestReliabilityLogger getNetworkRequestReliabilityLogger(int requestId) { - return new FeedNetworkRequestReliabilityLogger() {}; - } - - /** - * Log to mark the end of the feed launch. Logs a "launched finished" event with the timestamp - * and result (or instead with the pending "launch finished" timestamp and result if there was a - * call to pendingFinished()). - * @param timestamp Event time, possibly the same as one of the other events. - * @param result DiscoverLaunchResult. - */ - default void logLaunchFinished(long timestamp, int result) {} - - /** - * Log to mark the end of the feed launch. - * @param timestamp Event time, possibly the same as one of the other events. - * @param result DiscoverLaunchResult. - * @param onlyIfLaunchInProgress Pass true if this event should only be logged if there is a - * feed launch in progress. - */ - default void logLaunchFinished(long timestamp, int result, boolean onlyIfLaunchInProgress) {} - - /** - * Keep a tentative timestamp and status for "launch finished" if the user left the feed but - * might return before it finishes loading. - * If the next call is to logLaunchFinished(), logLaunchFinished() will log the pending - * "launch finished" timestamp and status and clear them. If the next call is to - * cancelPendingFinished(), the pending "launch finished" is cleared. If there is already a - * pending "launch finished", calling pendingFinished() again has no effect. - * @param timestamp Event time in nanoseconds. - * @param result DiscoverLaunchResult. - */ - default void pendingFinished(long timestamp, int result) {} - - /** - * If a timestamp and status code were recorded with pendingFinished(), drop them. - */ - default void cancelPendingFinished() {} }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedNetworkRequestReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedNetworkRequestReliabilityLogger.java index 3a2ce8f..8f88b6a 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedNetworkRequestReliabilityLogger.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedNetworkRequestReliabilityLogger.java
@@ -5,58 +5,8 @@ package org.chromium.chrome.browser.xsurface; /** - * Interface for logging latency and availability signals for feed network requests. All timestamps - * are in terms of nanoseconds since system boot. - * - * Obtain instances from FeedLaunchReliabilityLogger.getNetworkRequestReliabilityLogger(). + * This is being moved to ./feed/ */ -public interface FeedNetworkRequestReliabilityLogger { - /** - * Log before filling out and serializing a feed query request. Starts the network request flow. - * @param timestamp Event time. - */ - default void logFeedQueryRequestStart(long timestamp) {} - - /** - * Log before filling out and serializing a feed actions upload request. Starts the network - * request flow. - * @param timestamp Event time. - */ - default void logActionsUploadRequestStart(long timestamp) {} - - /** - * Log before filling out and serializing a web feed request for all followed web feeds. Starts - * the network request flow. - */ - default void logWebFeedRequestStart(long timestamp) {} - - /** - * Log before filling out and serializing a web feed request for a single web feed, used by the - * cormorant surface. Starts the network request flow. - */ - default void logSingleWebFeedRequestStart(long timestamp) {} - - /** - * Log after the request has been sent. - * @param timestamp Event time. - */ - default void logRequestSent(long timestamp) {} - - /** - * Log after the response is received and before it is parsed. - * @param serverRecvTimestamp Server-reported time (nanoseconds) at which the request arrived. - * @param serverSendTimestamp Server-reported time (nanoseconds) at which the response was sent. - * @param clientRecvTimestamp Client time at which the response was received. - */ - default void logResponseReceived( - long serverRecvTimestamp, long serverSendTimestamp, long clientRecvTimestamp) {} - - /** - * Log after logResponseReceived() if there's a network error, or after parsing the response - * otherwise. Ends the network request flow. - * @param timestamp Event time. - * @param canonicalStatus Network request status code. See - * //third_party/abseil-cpp/absl/status/status.h. - */ - default void logRequestFinished(long timestamp, int canonicalStatus) {} -} +@Deprecated +public interface FeedNetworkRequestReliabilityLogger + extends org.chromium.chrome.browser.xsurface.feed.FeedNetworkRequestReliabilityLogger {}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedUserInteractionReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedUserInteractionReliabilityLogger.java index 76676a4..0b6b400 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedUserInteractionReliabilityLogger.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/FeedUserInteractionReliabilityLogger.java
@@ -4,87 +4,32 @@ package org.chromium.chrome.browser.xsurface; -import android.view.View; - import androidx.annotation.IntDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** - * Interface for capturing the reliability for every change in the collection of items presented to - * the user during the interaction. One instance exists per feed surface and lasts for the surface's - * lifetime. + * This is being moved to ./feed/ */ -public interface FeedUserInteractionReliabilityLogger { - /** - * Called when the stream has been opened. This should be called before reporting any event. - */ - default void onStreamOpened(@StreamType int streamType) {} - - /** - * Describes how the stream is closed. - */ +@Deprecated +public interface FeedUserInteractionReliabilityLogger + extends org.chromium.chrome.browser.xsurface.feed.FeedUserInteractionReliabilityLogger { @IntDef({ClosedReason.OPEN_CARD, ClosedReason.SUSPEND_APP, ClosedReason.LEAVE_FEED, ClosedReason.SWITCH_STREAM}) @Retention(RetentionPolicy.SOURCE) public @interface ClosedReason { - /** The user taps on a card. */ int OPEN_CARD = 0; - /** The user leaves the app. */ int SUSPEND_APP = 1; - /** The user leaves the feed but still stays in the app, like switching to other tab. */ int LEAVE_FEED = 2; - /** The user switches to other stream. */ int SWITCH_STREAM = 3; } - - /** - * Called when the stream has been closed. - */ - default void onStreamClosed(@ClosedReason int reason) {} - - /** - * Called when the view has entered the visible part of the screen for the first time. If the - * view is then off screen and become visible again, it will not be reported again. - */ - default void onViewFirstVisible(View view) {} - - /** - * Called when the view has been rendered for the first time. Note that this doesn't include the - * child images. If the view is then off screen and become visible again, it will not be - * reported again. - */ - default void onViewFirstRendered(View view) {} - - /** - * Called when the pagination process has started. - */ - default void onPaginationStarted() {} - - /** - * Called when the waiting indicator is shown. This will happen after the pagination process - * has started. - */ - default void onPaginationIndicatorShown() {} - - /** - * Describes the end state of the pagination process. - */ @IntDef({PaginationResult.SUCCESS_WITH_MORE_FEED, PaginationResult.SUCCESS_WITH_NO_FEED, PaginationResult.FAILURE}) @Retention(RetentionPolicy.SOURCE) public @interface PaginationResult { - /** More feed content is retrieved. */ int SUCCESS_WITH_MORE_FEED = 0; - /** No feed content is retrieved. This means that the end of the feed is reached. */ int SUCCESS_WITH_NO_FEED = 1; - /** The pagination request has failed. */ int FAILURE = 2; } - - /** - * Called when the pagination process has ended. - */ - default void onPaginationEnded(@PaginationResult int result) {} }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java index 518cf00b..a45155be 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/HybridListRenderer.java
@@ -10,6 +10,8 @@ import androidx.annotation.Nullable; /** + * Implemented internally. + * * A renderer that can handle mixing externally-provided views with native Android views * in a RecyclerView. */
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageCacheHelper.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageCacheHelper.java index ed032dda..2aafa39eb 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageCacheHelper.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageCacheHelper.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.xsurface; /** + * Implemented internally. + * * Interface for managing the image cache. This allows * native code to call to the image loader across the * xsurface.
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageFetchClient.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageFetchClient.java index 9a96db00..ac29b67 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageFetchClient.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ImageFetchClient.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.xsurface; /** + * Implemented in Chromium. + * * An object that can send an HTTP GET request and receive bytes in response. This interface should * only be used for fetching images. */
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManager.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManager.java index 94d3568..14211849 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManager.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManager.java
@@ -12,6 +12,8 @@ import java.util.Map; /** + * Implemented in Chromium. + * * Interface to provide native views to incorporate in an external surface-controlled * RecyclerView. *
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManagerObserver.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManagerObserver.java index a8a17f2..8534c5e 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManagerObserver.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListContentManagerObserver.java
@@ -4,7 +4,11 @@ package org.chromium.chrome.browser.xsurface; -/** Interface to observe a list. */ +/** + * Implemented in Chromium. + * + * Interface to observe a list. + */ public interface ListContentManagerObserver { /** Called when range from startIndex to startIndex+count has been inserted. */ default void onItemRangeInserted(int startIndex, int count) {}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java index a5cb877..6c74f89c 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ListLayoutHelper.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser.xsurface; /** + * Implemented internally. + * * Interface providing helper methods to layout list items in an external surface-controlled * RecyclerView. */
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/LoggingParameters.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/LoggingParameters.java index 38fbe7b..0c8d767 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/LoggingParameters.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/LoggingParameters.java
@@ -5,7 +5,10 @@ package org.chromium.chrome.browser.xsurface; import androidx.annotation.Nullable; +// TODO(b/269234249): Decide what to do with this class. Some of these things are feed specific. /** + * Implemented in Chromium. + * * The set of parameters necessary for logging. */ public interface LoggingParameters {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/PersistentKeyValueCache.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/PersistentKeyValueCache.java index 57acd6a3..dfaa734 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/PersistentKeyValueCache.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/PersistentKeyValueCache.java
@@ -6,7 +6,11 @@ import androidx.annotation.Nullable; -/** A simple key-value cache that is persisting all data on disk. Automatically evicts old data. */ +/** + * Implemented in Chromium. + * + * A simple key-value cache that is persisting all data on disk. Automatically evicts old data. + */ public interface PersistentKeyValueCache { /** Consumes the result of PersistentKeyValueCache.lookup(). */ public interface ValueConsumer {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScope.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScope.java index 82e5950..a9754ca0 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScope.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScope.java
@@ -3,10 +3,14 @@ // found in the LICENSE file. package org.chromium.chrome.browser.xsurface; - import androidx.annotation.Nullable; +import org.chromium.chrome.browser.xsurface.feed.FeedSurfaceScope; +import org.chromium.chrome.browser.xsurface.feed.FeedSurfaceScopeDependencyProvider; + /** + * Implemented internally. + * * Used to initialize singleton-level dependencies for xsurface. Also provides surface-level * dependencies that depend on the singleton dependencies. **/ @@ -23,11 +27,25 @@ * * @param dependencyProvider Provider for activity-scoped dependencies. **/ + @Deprecated @Nullable default SurfaceScope obtainSurfaceScope(SurfaceScopeDependencyProvider dependencyProvider) { return null; } + // TODO(b/269234249): Don't call from Chrome yet, it's not implemented. + /** + * Returns a SurfaceScope which should be one per Surface. That Surface can have multiple + * HybridListRenderers and SurfaceRenderers within its UI. + * + * @param dependencyProvider Provider for activity-scoped dependencies. + **/ + @Nullable + default FeedSurfaceScope obtainFeedSurfaceScope( + FeedSurfaceScopeDependencyProvider dependencyProvider) { + return null; + } + @Nullable default ImageCacheHelper provideImageCacheHelper() { return null;
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScopeDependencyProvider.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScopeDependencyProvider.java index 44416e19..228f50e 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScopeDependencyProvider.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ProcessScopeDependencyProvider.java
@@ -13,6 +13,8 @@ import java.lang.annotation.RetentionPolicy; /** + * Implemented in Chromium. + * * Provides application-level dependencies for an external surface. */ public interface ProcessScopeDependencyProvider {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ReliabilityLoggingTestUtil.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ReliabilityLoggingTestUtil.java index b41195a..1ccbeae 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ReliabilityLoggingTestUtil.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/ReliabilityLoggingTestUtil.java
@@ -4,26 +4,6 @@ package org.chromium.chrome.browser.xsurface; -/** - * This interface provides access to the list of recently-sent "flows" of reliability logging events - * for verification in integration tests. - */ -public interface ReliabilityLoggingTestUtil { - /** - * Return the most recent "flows" (at most 30), or lists of logged events - * representing a user interaction, with each flow rendered as a string. - */ - default String getRecentFlowsForTesting() { - return ""; - } - - /** - * Return the number of recent flows that would be rendered by getRecentFlowsForTesting(). - */ - default int getRecentFlowsCountForTesting() { - return 0; - } - - /** Clear the list of recent flows. */ - default void clearRecentFlowsForTesting() {} -} \ No newline at end of file +/** Moving to ./feed/ */ +public interface ReliabilityLoggingTestUtil + extends org.chromium.chrome.browser.xsurface.feed.ReliabilityLoggingTestUtil {}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/StreamType.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/StreamType.java index 77b4221..c105f08 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/StreamType.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/StreamType.java
@@ -9,7 +9,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -/** Type of stream being launched (the "For you","Following", or "SingleWebFeed" feed). */ +// Moving to ./feed/ +@Deprecated @IntDef({StreamType.UNSPECIFIED, StreamType.FOR_YOU, StreamType.WEB_FEED, StreamType.SINGLE_WEB_FEED}) @Retention(RetentionPolicy.SOURCE)
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java index 5e729c1..61c98346 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceActionsHandler.java
@@ -12,7 +12,10 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; + /** + * Implemented in Chromium. + * * Interface to provide chromium calling points for an external surface. */ public interface SurfaceActionsHandler {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceHeaderOffsetObserver.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceHeaderOffsetObserver.java index bdbd295..528767d 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceHeaderOffsetObserver.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceHeaderOffsetObserver.java
@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.xsurface; /** + * Implemented internally. + * * Interface to listen to the offset events from the scrollable container of the current Surface. * Certain layouts may simulate scrolls by translating views on and offscreen. This interface tracks * those changes by providing a vertical offset which represents the delta from the original
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceRenderer.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceRenderer.java index 9d98874..ff87986 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceRenderer.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceRenderer.java
@@ -11,6 +11,8 @@ import java.util.Map; /** + * Implemented internally. + * * Interface to call a rendering service to render a View sent by a server. */ public interface SurfaceRenderer {
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java index 34d7108..f24e5be 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScope.java
@@ -7,6 +7,8 @@ import androidx.annotation.Nullable; /** + * Implemented internally. + * * Provides multiple types of renderers to surfaces that want to render an * external surface. Each renderer will reuse the same dependencies (hence * "Scope") but each call to provideFoo will return a new renderer, so that a @@ -26,15 +28,14 @@ default void replaceDataStoreEntry(String key, byte[] data) {} default void removeDataStoreEntry(String key) {} - /** - * Return the FeedLaunchReliabilityLogger associated with the surface, creating it if it - * doesn't exist. - * @return The surface's FeedLaunchReliabilityLogger instance. - */ + // Functionality moving to FeedSurfaceScope + @Deprecated default FeedLaunchReliabilityLogger getFeedLaunchReliabilityLogger() { return new FeedLaunchReliabilityLogger() {}; } + // Functionality moving to FeedSurfaceScope + @Deprecated default FeedUserInteractionReliabilityLogger getFeedUserInteractionReliabilityLogger() { return new FeedUserInteractionReliabilityLogger() {}; }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java index eb3ef04..64ea09379 100644 --- a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/SurfaceScopeDependencyProvider.java
@@ -11,6 +11,8 @@ import androidx.annotation.Nullable; /** + * Implemented in Chromium. + * * Provides dependencies for xsurface at the surface level. * * Should only be called on the UI thread. @@ -33,7 +35,11 @@ return false; } + // Warning: + // Code below this comment is Feed-specific, and is moving to FeedSurfaceScopeDependencyProvider + /** User-set preference for when videos are eligible to autoplay. */ + @Deprecated public enum AutoplayPreference { /** Autoplay is disabled. */ AUTOPLAY_DISABLED, @@ -44,11 +50,13 @@ } /** Returns the user-set preferences for when videos are eligible to autoplay. */ + @Deprecated default AutoplayPreference getAutoplayPreference() { return AutoplayPreference.AUTOPLAY_DISABLED; } /** Events that are triggered during the video playing. */ + @Deprecated public @interface VideoPlayEvent { // Events applying muted autoplay only. @@ -72,6 +80,7 @@ } /** Errors occurred during the video player initialization. */ + @Deprecated public @interface VideoInitializationError { int CLIENT_LIBRARY_UPDATE_REQUIRED = 0; int DEVELOPER_KEY_INVALID = 1; @@ -88,6 +97,7 @@ } /** Errors occurred during the video playing. */ + @Deprecated public @interface VideoPlayError { int NOT_PLAYABLE = 0; int UNAUTHORIZED_OVERLAY = 1; @@ -106,6 +116,7 @@ * @param isMutedAutoplay Whether the video is currently autoplaying muted. * @param event The event to report. */ + @Deprecated default void reportVideoPlayEvent(boolean isMutedAutoplay, @VideoPlayEvent int event) {} /** @@ -114,6 +125,7 @@ * @param isMutedAutoplay Whether the video is currently autoplaying muted. * @param error The error to report. */ + @Deprecated default void reportVideoInitializationError( boolean isMutedAutoplay, @VideoInitializationError int error) {} @@ -123,11 +135,13 @@ * @param isMutedAutoplay Whether the video is currently autoplaying muted. * @param error The error to report. */ + @Deprecated default void reportVideoPlayError(boolean isMutedAutoplay, @VideoPlayError int error) {} /** * Returns the bounds of the toolbar in global (root) coordinates. */ + @Deprecated default Rect getToolbarGlobalVisibleRect() { return new Rect(); } @@ -138,6 +152,7 @@ * @param observer The observer to add. * @Return a reference to be used when removing the observer, or null if not successful. */ + @Deprecated default void addHeaderOffsetObserver(SurfaceHeaderOffsetObserver observer) {} /** @@ -145,11 +160,6 @@ * * @param observer An Object returned by |addHeaderOffsetObserver|. */ - default void removeHeaderOffsetObserver(SurfaceHeaderOffsetObserver observer) {} - - /** Returns whether or not activity logging should be enabled. */ @Deprecated - default boolean isActivityLoggingEnabled() { - return false; - } + default void removeHeaderOffsetObserver(SurfaceHeaderOffsetObserver observer) {} }
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedActionsHandler.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedActionsHandler.java new file mode 100644 index 0000000..8bc622b5 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedActionsHandler.java
@@ -0,0 +1,219 @@ +// Copyright 2020 The Chromium Authors +// 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.xsurface.feed; + +import android.view.View; + +import androidx.annotation.IntDef; + +import org.chromium.chrome.browser.xsurface.LoggingParameters; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.Map; + +/** + * Implemented in Chromium. + * + * Interface to provide chromium calling points for a feed. + */ +public interface FeedActionsHandler { + String KEY = "FeedActions"; + + /** + * Requests additional content to be loaded. Once the load is completed, onStreamUpdated will be + * called. + */ + default void loadMore() {} + + /** + * Sends data back to the server when content is clicked. + */ + default void processThereAndBackAgainData(byte[] data, LoggingParameters loggingParameters) {} + + /** + * Triggers Chrome to send user feedback for this card. + */ + default void sendFeedback(Map<String, String> productSpecificDataMap) {} + + /** + * Requests to dismiss a card. A change ID will be returned and it can be used to commit or + * discard the change. + * @param data A serialized feedpacking.DismissData message. + */ + default int requestDismissal(byte[] data) { + return 0; + } + + /** + * Commits a previous requested dismissal denoted by change ID. + */ + default void commitDismissal(int changeId) {} + + /** + * Discards a previous requested dismissal denoted by change ID. + */ + default void discardDismissal(int changeId) {} + + /** + * Interface for handling snackbar exit conditions. + */ + + public interface SnackbarController { + @Deprecated + default void onAction() {} + + /** + * Called when the snackbar's action button is tapped. + * + * @param actionFinished Should be called when work associated with this action has been + * completed. + */ + default void onAction(Runnable actionFinished) {} + + @Deprecated + default void onDismissNoAction() {} + + /** + * Called when the snackbar is dismissed without the button being tapped (usually when it + * times out). + * + * @param actionFinished Should be called when work associated with this action has been + * completed. + */ + default void onDismissNoAction(Runnable actionFinished) {} + } + + /** + * Snackbar dismissal timeout. + */ + + @IntDef({SnackbarDuration.SHORT, SnackbarDuration.LONG}) + @Retention(RetentionPolicy.SOURCE) + public @interface SnackbarDuration { + /** + * SHORT should be used with simple one-line snackbars. + */ + int SHORT = 0; + /** + * LONG should be used with multi-line snackbars that take longer to read. + */ + int LONG = 1; + } + + /** + * Show a snackbar. + * @param text Text to display. + * @param actionLabel Text for the button (e.g. "Undo"). + * @param duration Whether to remove the snackbar after a short or long delay. + * @param controller Handlers for snackbar actions. + */ + default void showSnackbar(String text, String actionLabel, @SnackbarDuration int duration, + SnackbarController controller) {} + + /** + * Share a URL. This will bring up the sharing sheet. + * @param url The url of the page to be shared. + * @param title The title of the page to be shared. + */ + default void share(String url, String title) {} + + /** + * Opens the settings to manager autoplay. + */ + default void openAutoplaySettings() {} + + /** + * Watches a view to get notified when the first time it has the visible area percentage not + * less than the given threshold. The watch is based on the visibility of full + * ListContentManager item containing the view. + * @param view The view to watch for. + * @param viewedThreshold The threshold of the percentage of the visible area on screen. + * @param runnable The runnable to get notified. + */ + default void watchForViewFirstVisible(View view, float viewedThreshold, Runnable runnable) {} + + /** + * Reports that the notice identified by the given key is created. It may not be visible yet. + * @param key Key to identify the type of the notice. For each new key, please update + * "NoticeKey" token in histograms.xml and NoticeUmaName() in metrics_reporter.cc. + */ + default void reportNoticeCreated(String key) {} + + /** + * Reports that the notice identified by the given key is viewed, fully visible in the viewport. + * @param key Key to identify the type of the notice. This interaction info can be used to + * determine if it is necessary to show the notice to the user again. + */ + default void reportNoticeViewed(String key) {} + + /** + * Reports that the user has clicked/tapped the notice identified by the given key to perform + * an open action. This interaction info can be used to determine if it is necessary to show + * the notice to the user again. + * @param key Key to identify the type of the notice. + */ + default void reportNoticeOpenAction(String key) {} + + /** + * Reports that the notice identified by the given key is dismissed by the user. + * @param key Key to identify the type of the notice. + */ + default void reportNoticeDismissed(String key) {} + + /** + * Types of feeds that can be invalidated. These values must match the privately defined values + * of InvalidateCacheData.FeedType. + */ + @IntDef({FeedIdentifier.UNSPECIFIED, FeedIdentifier.MAIN_FEED, FeedIdentifier.FOLLOWING_FEED, + FeedIdentifier.CHANNEL_FEED}) + @Retention(RetentionPolicy.SOURCE) + public @interface FeedIdentifier { + int UNSPECIFIED = 0; + int MAIN_FEED = 1; + int FOLLOWING_FEED = 2; + int CHANNEL_FEED = 3; + } + + /** + * Requests that the cache a feed be invalidated so that its contents are re-fetched the next + * time the feed is shown/loaded. + * @param feedToInvalidate Identifies which feed should have its cache invalidated. The request + * will be dropped if set to FeedIdentifier.UNSPECIFIED. + */ + default void invalidateContentCacheFor(@FeedIdentifier int feedToInvalidate) {} + + /** + * Reports that the info card is being tracked for its full visibility. + * @param type Type of the info card. + */ + default void reportInfoCardTrackViewStarted(int type) {} + + /** + * Reports that the info card is fully visible in the viewport. + * @param type Type of the info card. + * @param minimumViewIntervalSeconds The minimum interval in seconds from the last time the info + * card is viewed in order for it to be considered viewed again. + */ + default void reportInfoCardViewed(int type, int minimumViewIntervalSeconds) {} + + /** + * Reports that the user tapps the info card. + * @param type Type of the info card. + */ + default void reportInfoCardClicked(int type) {} + + /** + * Reports that the user dismisses the info card explicitly by tapping the close button. + * @param type Type of the info card. + */ + default void reportInfoCardDismissedExplicitly(int type) {} + + /** + * Resets all the states of the info card. + * @param type Type of the info card. + */ + default void resetInfoCardStates(int type) {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedLaunchReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedLaunchReliabilityLogger.java new file mode 100644 index 0000000..0460d70 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedLaunchReliabilityLogger.java
@@ -0,0 +1,173 @@ +// Copyright 2021 The Chromium Authors +// 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.xsurface.feed; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Implemented internally. + * + * Interface for logging latency and availability signals for feed launches. All timestamps are in + * terms of nanoseconds since system boot. One instance exists per feed surface and lasts for the + * surface's lifetime. + */ +public interface FeedLaunchReliabilityLogger { + @IntDef({SurfaceType.UNSPECIFIED, SurfaceType.NEW_TAB_PAGE, SurfaceType.START_SURFACE}) + @Retention(RetentionPolicy.SOURCE) + public @interface SurfaceType { + int UNSPECIFIED = 0; + int NEW_TAB_PAGE = 1; + int START_SURFACE = 2; + } + @IntDef({StreamType.UNSPECIFIED, StreamType.FOR_YOU, StreamType.WEB_FEED, + StreamType.SINGLE_WEB_FEED}) + @Retention(RetentionPolicy.SOURCE) + @interface StreamType { + int UNSPECIFIED = 0; + int FOR_YOU = 1; + int WEB_FEED = 2; + int SINGLE_WEB_FEED = 3; + } + + /** + * Set details about the stream being launched and send any pending events. + * @param streamType Feed type (e.g. "for you" or "following"). + * @param streamId Identifier for the stream used to disambiguate events from concurrent + * streams. + */ + default void sendPendingEvents( + @org.chromium.chrome.browser.xsurface.feed.StreamType int streamType, int streamId) {} + + /** + * Clear any pending events and end the flow without logging any events. + */ + default void cancelPendingEvents() {} + + /** + * Returns true if logUiStarting(), logFeedReloading(), or logFeedLaunchOtherStart() have been + * called since the last call to logLaunchFinished(). + * @return True if the launch flow has started but not finished. + */ + default boolean isLaunchInProgress() { + return false; + } + + /** + * Log when the feed is launched because its UI surface was created. + * @param surfaceType Feed surface type (e.g. new tab page or Start Surface). + * @param timestamp Time at which the surface began to be created. + */ + default void logUiStarting(@SurfaceType int surfaceType, long timestamp) {} + + /** + * Log when a feed refresh is requested manually. + * @param timestamp Time at which the surface was shown. + */ + default void logManualRefresh(long timestamp) {} + + /** + * Log when the feed is launched because its surface was shown and cards needed to be + * re-rendered. + * @param timestamp Time at which the surface was shown. + */ + default void logFeedReloading(long timestamp) {} + + /** + * Log when the feed is launched in any case not already handled by logUiStarting() or + * logFeedReloaded(). + * @param timestamp Time at which the feed stream was bound. + */ + default void logFeedLaunchOtherStart(long timestamp) {} + + /** + * Log when the user switches to another feed tab. + * @param toStreamType New feed type. + * @param timestamp Event time. + */ + default void logSwitchedFeeds( + @org.chromium.chrome.browser.xsurface.feed.StreamType int toStreamType, + long timestamp) {} + + /** + * Log when cached feed content is about to be read. + * @param timestamp Event time. + */ + default void logCacheReadStart(long timestamp) {} + + /** + * Log after finishing attempting to read cached feed content. + * @param timestamp Event time. + * @param result DiscoverCardReadCacheResult. + */ + default void logCacheReadEnd(long timestamp, int result) {} + + /** + * Log when the loading spinner is shown. + * @param timestamp Time at which the spinner was shown. + */ + default void logLoadingIndicatorShown(long timestamp) {} + + /** + * Log when rendering of above-the-fold feed content begins. + * @param timestamp Event time. + */ + default void logAtfRenderStart(long timestamp) {} + + /** + * Log when rendering of above-the-fold feed content finishes. + * @param timestamp Event time. + * @param result DiscoverAboveTheFoldRenderResult. + */ + default void logAtfRenderEnd(long timestamp, int result) {} + + /** + * Get the network request logger for a request by its ID. + * @param requestId A unique ID for the request. + * @return A logger for the request: an existing logger if one matches `requestId`, or a new one + * otherwise. + */ + default org.chromium.chrome.browser.xsurface.FeedNetworkRequestReliabilityLogger + getNetworkRequestReliabilityLogger(int requestId) { + return new org.chromium.chrome.browser.xsurface.FeedNetworkRequestReliabilityLogger() {}; + } + + /** + * Log to mark the end of the feed launch. Logs a "launched finished" event with the timestamp + * and result (or instead with the pending "launch finished" timestamp and result if there was a + * call to pendingFinished()). + * @param timestamp Event time, possibly the same as one of the other events. + * @param result DiscoverLaunchResult. + */ + default void logLaunchFinished(long timestamp, int result) {} + + /** + * Log to mark the end of the feed launch. + * @param timestamp Event time, possibly the same as one of the other events. + * @param result DiscoverLaunchResult. + * @param onlyIfLaunchInProgress Pass true if this event should only be logged if there is a + * feed launch in progress. + */ + default void logLaunchFinished(long timestamp, int result, boolean onlyIfLaunchInProgress) {} + + /** + * Keep a tentative timestamp and status for "launch finished" if the user left the feed but + * might return before it finishes loading. + * If the next call is to logLaunchFinished(), logLaunchFinished() will log the pending + * "launch finished" timestamp and status and clear them. If the next call is to + * cancelPendingFinished(), the pending "launch finished" is cleared. If there is already a + * pending "launch finished", calling pendingFinished() again has no effect. + * @param timestamp Event time in nanoseconds. + * @param result DiscoverLaunchResult. + */ + default void pendingFinished(long timestamp, int result) {} + + /** + * If a timestamp and status code were recorded with pendingFinished(), drop them. + */ + default void cancelPendingFinished() {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedNetworkRequestReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedNetworkRequestReliabilityLogger.java new file mode 100644 index 0000000..3d8e097 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedNetworkRequestReliabilityLogger.java
@@ -0,0 +1,66 @@ +// Copyright 2021 The Chromium Authors +// 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.xsurface.feed; + +/** + * Implemented internally. + * + * Interface for logging latency and availability signals for feed network requests. All timestamps + * are in terms of nanoseconds since system boot. + * + * Obtain instances from FeedLaunchReliabilityLogger.getNetworkRequestReliabilityLogger(). + */ +public interface FeedNetworkRequestReliabilityLogger { + /** + * Log before filling out and serializing a + * feed query request. Starts the network + * request flow. + * @param timestamp Event time. + */ + default void logFeedQueryRequestStart(long timestamp) {} + + /** + * Log before filling out and serializing a feed actions upload request. Starts the network + * request flow. + * @param timestamp Event time. + */ + default void logActionsUploadRequestStart(long timestamp) {} + + /** + * Log before filling out and serializing a web feed request for all followed web feeds. Starts + * the network request flow. + */ + default void logWebFeedRequestStart(long timestamp) {} + + /** + * Log before filling out and serializing a web feed request for a single web feed, used by the + * cormorant surface. Starts the network request flow. + */ + default void logSingleWebFeedRequestStart(long timestamp) {} + + /** + * Log after the request has been sent. + * @param timestamp Event time. + */ + default void logRequestSent(long timestamp) {} + + /** + * Log after the response is received and before it is parsed. + * @param serverRecvTimestamp Server-reported time (nanoseconds) at which the request arrived. + * @param serverSendTimestamp Server-reported time (nanoseconds) at which the response was sent. + * @param clientRecvTimestamp Client time at which the response was received. + */ + default void logResponseReceived( + long serverRecvTimestamp, long serverSendTimestamp, long clientRecvTimestamp) {} + + /** + * Log after logResponseReceived() if there's a network error, or after parsing the response + * otherwise. Ends the network request flow. + * @param timestamp Event time. + * @param canonicalStatus Network request status code. See + * //third_party/abseil-cpp/absl/status/status.h. + */ + default void logRequestFinished(long timestamp, int canonicalStatus) {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java new file mode 100644 index 0000000..f3ce0c8 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScope.java
@@ -0,0 +1,31 @@ +// Copyright 2020 The Chromium Authors +// 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.xsurface.feed; + +import org.chromium.chrome.browser.xsurface.SurfaceScope; + +// TODO(b/269234249): Don't use this in Chromium yet, it's not implemented. +/** + * Implemented internally. + * + * Provides multiple types of renderers to surfaces that want to render an + * external surface. Each renderer will reuse the same dependencies (hence + * "Scope") but each call to provideFoo will return a new renderer, so that a + * single surface can support multiple rendered views. + */ +public interface FeedSurfaceScope extends SurfaceScope { + /** + * Return the FeedLaunchReliabilityLogger associated with the surface, creating it if it + * doesn't exist. + * @return The surface's FeedLaunchReliabilityLogger instance. + */ + default FeedLaunchReliabilityLogger getLaunchReliabilityLogger() { + return new FeedLaunchReliabilityLogger() {}; + } + + default FeedUserInteractionReliabilityLogger getUserInteractionReliabilityLogger() { + return new FeedUserInteractionReliabilityLogger() {}; + } +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScopeDependencyProvider.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScopeDependencyProvider.java new file mode 100644 index 0000000..8e141ef --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedSurfaceScopeDependencyProvider.java
@@ -0,0 +1,133 @@ +// Copyright 2020 The Chromium Authors +// 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.xsurface.feed; + +import android.graphics.Rect; + +import org.chromium.chrome.browser.xsurface.SurfaceHeaderOffsetObserver; +import org.chromium.chrome.browser.xsurface.SurfaceScopeDependencyProvider; + +/** + * Implemented in Chromium. + * + * Provides dependencies for xsurface at the surface level. + * + * Should only be called on the UI thread. + */ +public interface FeedSurfaceScopeDependencyProvider extends SurfaceScopeDependencyProvider { + /** User-set preference for when videos are eligible to autoplay. */ + public enum AutoplayPreference { + /** Autoplay is disabled. */ + AUTOPLAY_DISABLED, + /** Autoplay only occurs on Wi-Fi. */ + AUTOPLAY_ON_WIFI_ONLY, + /** Autoplay will occur on both Wi-Fi and mobile data. */ + AUTOPLAY_ON_WIFI_AND_MOBILE_DATA + } + + /** Returns the user-set preferences for when videos are eligible to autoplay. */ + default AutoplayPreference getAutoplayPreference2() { + return AutoplayPreference.AUTOPLAY_DISABLED; + } + + /** Events that are triggered during the video playing. */ + public @interface VideoPlayEvent { + // Events applying muted autoplay only. + + /** + * Auto-play stops before reaching the end. This occurs when the video card becomes + * partially visible or invisible. + */ + int AUTOPLAY_STOPPED = 0; + /** Auto-play reaches the end. */ + int AUTOPLAY_ENDED = 1; + /** User clicks on the auto-play video. */ + int AUTOPLAY_CLICKED = 2; + + // Events applying to both muted autoplay and regular play. + + /** The player starts to play the video. */ + int PLAY_REQUESTED = 3; + int PLAY_STARTED = 4; + int PLAY_ERROR = 5; + int NUM_ENTRIES = 6; + } + + /** Errors occurred during the video player initialization. */ + public @interface VideoInitializationError { + int CLIENT_LIBRARY_UPDATE_REQUIRED = 0; + int DEVELOPER_KEY_INVALID = 1; + int ERROR_CONNECTING_TO_SERVICE = 2; + int INTERNAL_ERROR = 3; + int INVALID_APPLICATION_SIGNATURE = 4; + int NETWORK_ERROR = 5; + int SERVICE_DISABLED = 6; + int SERVICE_INVALID = 7; + int SERVICE_MISSING = 8; + int SERVICE_VERSION_UPDATE_REQUIRED = 9; + int UNKNOWN_ERROR = 10; + int NUM_ENTRIES = 11; + } + + /** Errors occurred during the video playing. */ + public @interface VideoPlayError { + int NOT_PLAYABLE = 0; + int UNAUTHORIZED_OVERLAY = 1; + int INTERNAL_ERROR = 2; + int UNKNOWN_ERROR = 3; + int AUTOPLAY_DISABLED = 4; + int UNEXPECTED_SERVICE_DISCONNECTION = 5; + int NOT_PLAYABLE_MUTED = 6; + int NETWORK_ERROR = 7; + int NUM_ENTRIES = 8; + } + + /** + * Reports the event related to video playing. + * + * @param isMutedAutoplay Whether the video is currently autoplaying muted. + * @param event The event to report. + */ + default void reportVideoPlayEvent(boolean isMutedAutoplay, @VideoPlayEvent int event) {} + + /** + * Reports the error related to video player initialization. + * + * @param isMutedAutoplay Whether the video is currently autoplaying muted. + * @param error The error to report. + */ + default void reportVideoInitializationError( + boolean isMutedAutoplay, @VideoInitializationError int error) {} + + /** + * Reports the error related to video playing. + * + * @param isMutedAutoplay Whether the video is currently autoplaying muted. + * @param error The error to report. + */ + default void reportVideoPlayError(boolean isMutedAutoplay, @VideoPlayError int error) {} + + /** + * Returns the bounds of the toolbar in global (root) coordinates. + */ + default Rect getToolbarGlobalVisibleRect() { + return new Rect(); + } + + /** + * Adds a header offset observer to the surface this scope is associated with. + * + * @param observer The observer to add. + * @Return a reference to be used when removing the observer, or null if not successful. + */ + default void addHeaderOffsetObserver(SurfaceHeaderOffsetObserver observer) {} + + /** + * Removes a header offset observer. + * + * @param observer An Object returned by |addHeaderOffsetObserver|. + */ + default void removeHeaderOffsetObserver(SurfaceHeaderOffsetObserver observer) {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedUserInteractionReliabilityLogger.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedUserInteractionReliabilityLogger.java new file mode 100644 index 0000000..60e08bbd --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/FeedUserInteractionReliabilityLogger.java
@@ -0,0 +1,93 @@ +// Copyright 2023 The Chromium Authors +// 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.xsurface.feed; + +import android.view.View; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +// TODO(b/269234249): Don't use in Chromium yet, it's not implemented. +/** + * Implemented internally. + * + * Interface for capturing the reliability for every change in the collection of items presented to + * the user during the interaction. One instance exists per feed surface and lasts for the surface's + * lifetime. + */ +public interface FeedUserInteractionReliabilityLogger { + /** + * Called when the stream has been opened. This should be called before reporting any event. + */ + default void onStreamOpened(@StreamType int streamType) {} + + /** + * Describes how the stream is closed. + */ + @IntDef({ClosedReason.OPEN_CARD, ClosedReason.SUSPEND_APP, ClosedReason.LEAVE_FEED, + ClosedReason.SWITCH_STREAM}) + @Retention(RetentionPolicy.SOURCE) + public @interface ClosedReason { + /** The user taps on a card. */ + int OPEN_CARD = 0; + /** The user leaves the app. */ + int SUSPEND_APP = 1; + /** The user leaves the feed but still stays in the app, like switching to other tab. */ + int LEAVE_FEED = 2; + /** The user switches to other stream. */ + int SWITCH_STREAM = 3; + } + + /** + * Called when the stream has been closed. + */ + default void onStreamClosed(@ClosedReason int reason) {} + + /** + * Called when the view has entered the visible part of the screen for the first time. If the + * view is then off screen and become visible again, it will not be reported again. + */ + default void onViewFirstVisible(View view) {} + + /** + * Called when the view has been rendered for the first time. Note that this doesn't include the + * child images. If the view is then off screen and become visible again, it will not be + * reported again. + */ + default void onViewFirstRendered(View view) {} + + /** + * Called when the pagination process has started. + */ + default void onPaginationStarted() {} + + /** + * Called when the waiting indicator is shown. This will happen after the pagination process + * has started. + */ + default void onPaginationIndicatorShown() {} + + /** + * Describes the end state of the pagination process. + */ + @IntDef({PaginationResult.SUCCESS_WITH_MORE_FEED, PaginationResult.SUCCESS_WITH_NO_FEED, + PaginationResult.FAILURE}) + @Retention(RetentionPolicy.SOURCE) + public @interface PaginationResult { + /** More feed content is retrieved. */ + int SUCCESS_WITH_MORE_FEED = 0; + /** No feed content is retrieved. This means that the end of the feed is reached. */ + int SUCCESS_WITH_NO_FEED = 1; + /** The pagination request has failed. */ + int FAILURE = 2; + } + + /** + * Called when the pagination process has ended. + */ + default void onPaginationEnded(@PaginationResult int result) {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/ReliabilityLoggingTestUtil.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/ReliabilityLoggingTestUtil.java new file mode 100644 index 0000000..1affb45 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/ReliabilityLoggingTestUtil.java
@@ -0,0 +1,31 @@ +// Copyright 2021 The Chromium Authors +// 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.xsurface.feed; + +/** + * Implemented internally. + * + * This interface provides access to the list of recently-sent "flows" of reliability logging events + * for verification in integration tests. + */ +public interface ReliabilityLoggingTestUtil { + /** + * Return the most recent "flows" (at most 30), or lists of logged events + * representing a user interaction, with each flow rendered as a string. + */ + default String getRecentFlowsForTesting() { + return ""; + } + + /** + * Return the number of recent flows that would be rendered by getRecentFlowsForTesting(). + */ + default int getRecentFlowsCountForTesting() { + return 0; + } + + /** Clear the list of recent flows. */ + default void clearRecentFlowsForTesting() {} +}
diff --git a/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/StreamType.java b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/StreamType.java new file mode 100644 index 0000000..f0421af5 --- /dev/null +++ b/chrome/browser/xsurface/android/java/src/org/chromium/chrome/browser/xsurface/feed/StreamType.java
@@ -0,0 +1,21 @@ +// Copyright 2023 The Chromium Authors +// 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.xsurface.feed; + +import androidx.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** Type of stream being launched (the "For you","Following", or "SingleWebFeed" feed). */ +@IntDef({StreamType.UNSPECIFIED, StreamType.FOR_YOU, StreamType.WEB_FEED, + StreamType.SINGLE_WEB_FEED}) +@Retention(RetentionPolicy.SOURCE) +public @interface StreamType { + int UNSPECIFIED = 0; + int FOR_YOU = 1; + int WEB_FEED = 2; + int SINGLE_WEB_FEED = 3; +}
diff --git a/chrome/build/lacros-arm64.pgo.txt b/chrome/build/lacros-arm64.pgo.txt new file mode 100644 index 0000000..9a4bc784 --- /dev/null +++ b/chrome/build/lacros-arm64.pgo.txt
@@ -0,0 +1 @@ +chrome-chromeos-arm64-generic-main-1681689459-17b02088ef9c3aaed27dc7508042f32f355c55ee.profdata \ No newline at end of file
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 7f1cb17..13f3371 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1681818706-83355b01f05f659fddc4541b3db657ae968412ce.profdata +chrome-linux-main-1681840647-3a51566332637ec1788be6b95a0900ce8faa5f6d.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index b5dd950..0564f7e 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1681833573-750ccc8a74a9df9ea3c210a175bec61e3ae27494.profdata +chrome-mac-arm-main-1681855118-05776b4e23dc63a836bf8f35c38143167a1f085f.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 61c216d..8ba325c 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1681818706-aaa7d2404342faec3fc0df4769cd70fb01711207.profdata +chrome-mac-main-1681840647-d5566fc27940004c741123a0c0db09a86d94bfdd.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 95cda77..4cb7845 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1681818706-e1393fafedb735d62f00f69924249e43aaa3bd9a.profdata +chrome-win32-main-1681851513-c6e6e570724c3bd82ffafb438b7e7134e2aa2ca4.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 005c21a..5cce8380 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1681829988-b39335b323b77ee1ebdf994e207576a6101fc875.profdata +chrome-win64-main-1681851513-cb681ad4d1b64517a03aef276f1d30cdd117067e.profdata
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 569a171..0c16d49 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -546,7 +546,7 @@ // survey. BASE_FEATURE(kHappinessTrackingSystemBluetoothRevamp, "HappinessTrackingSystemBluetoothRevamp", - base::FEATURE_ENABLED_BY_DEFAULT); + base::FEATURE_DISABLED_BY_DEFAULT); // Enables or disables the Happiness Tracking System for the Ent survey. BASE_FEATURE(kHappinessTrackingSystemEnt, "HappinessTrackingSystemEnt",
diff --git a/chrome/common/net/x509_certificate_model.cc b/chrome/common/net/x509_certificate_model.cc index b70fa15..28ab925 100644 --- a/chrome/common/net/x509_certificate_model.cc +++ b/chrome/common/net/x509_certificate_model.cc
@@ -775,17 +775,13 @@ } for (const auto& rfc822_name : names.rfc822_names) { // TODO(mattm): do something about newlines (or other control chars)? - rv += FormatGeneralName( - IDS_CERT_GENERAL_NAME_RFC822_NAME, - base::StringPiece(rfc822_name.data(), rfc822_name.size())); + rv += FormatGeneralName(IDS_CERT_GENERAL_NAME_RFC822_NAME, rfc822_name); } for (const auto& dns_name : names.dns_names) { // TODO(mattm): Should probably do ProcessIDN on dnsNames from // subjectAltName like we do on subject commonName? // TODO(mattm): do something about newlines (or other control chars)? - rv += - FormatGeneralName(IDS_CERT_GENERAL_NAME_DNS_NAME, - base::StringPiece(dns_name.data(), dns_name.size())); + rv += FormatGeneralName(IDS_CERT_GENERAL_NAME_DNS_NAME, dns_name); } for (const auto& x400_address : names.x400_addresses) { rv += FormatGeneralName(IDS_CERT_GENERAL_NAME_X400_ADDRESS, @@ -805,10 +801,8 @@ for (const auto& uniform_resource_identifier : names.uniform_resource_identifiers) { // TODO(mattm): do something about newlines (or other control chars)? - rv += FormatGeneralName( - IDS_CERT_GENERAL_NAME_URI, - base::StringPiece(uniform_resource_identifier.data(), - uniform_resource_identifier.size())); + rv += FormatGeneralName(IDS_CERT_GENERAL_NAME_URI, + uniform_resource_identifier); } for (const auto& ip_address : names.ip_addresses) { rv += FormatGeneralName(IDS_CERT_GENERAL_NAME_IP_ADDRESS, @@ -908,8 +902,9 @@ return absl::nullopt; break; case net::der::kUtf8String: - if (!base::IsStringUTF8AllowingNoncharacters(value.AsStringPiece())) + if (!base::IsStringUTF8AllowingNoncharacters(value.AsStringView())) { return absl::nullopt; + } display_text = value.AsString(); break; default: @@ -1242,7 +1237,7 @@ std::string X509CertificateModel::HashCertSHA256() const { auto hash = crypto::SHA256Hash(net::x509_util::CryptoBufferAsSpan(cert_data_.get())); - return base::HexEncode(hash.data(), hash.size()); + return base::HexEncode(hash); } std::string X509CertificateModel::HashCertSHA256WithSeparators() const {
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 2aed543..9e0bf51 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -7323,6 +7323,7 @@ "../browser/new_tab_page/customize_chrome/customize_chrome_feature_promo_helper_unittest.cc", "../browser/new_tab_page/modules/drive/drive_service_unittest.cc", "../browser/new_tab_page/modules/feed/feed_handler_unittest.cc", + "../browser/new_tab_page/modules/history_clusters/cart/cart_processor_unittest.cc", "../browser/new_tab_page/modules/history_clusters/history_clusters_page_handler_unittest.cc", "../browser/new_tab_page/modules/new_tab_page_modules_unittest.cc", "../browser/new_tab_page/modules/photos/photos_service_unittest.cc", @@ -7378,6 +7379,8 @@ "//chrome/browser/media/router/discovery:discovery", "//chrome/browser/media/router/discovery/access_code:access_code_sink_service", "//chrome/browser/new_tab_page/modules/feed:mojo_bindings", + "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings", + "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings", "//chrome/browser/resource_coordinator:intervention_policy_database_proto", "//chrome/browser/resource_coordinator:tab_manager_features", "//chrome/browser/resources:component_extension_resources_grit",
diff --git a/chrome/test/data/extensions/webui/sanity_check_available_apis.js b/chrome/test/data/extensions/webui/sanity_check_available_apis.js index 78ed7054..63e8413 100644 --- a/chrome/test/data/extensions/webui/sanity_check_available_apis.js +++ b/chrome/test/data/extensions/webui/sanity_check_available_apis.js
@@ -20,6 +20,9 @@ 'loadTimes', 'management', 'metricsPrivate', + // chrome.readAnything is exposed to all WebUIs but meant to be used in + // chrome://read-anything-side-panel.top-chrome. + 'readAnything', 'runtime', 'send', 'test',
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 5b3f125..5764183f 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -167,6 +167,7 @@ "chromeos/edu_coexistence/edu_coexistence_browsertest.js", "chromeos/emoji_picker/emoji_picker_browsertest.js", "chromeos/gaia_action_buttons/gaia_action_buttons_browsertest.js", + "chromeos/internet_config_dialog_browsertest.js", "chromeos/internet_detail_dialog_browsertest.js", "chromeos/network_browsertest.js", "chromeos/office_fallback/office_fallback_browsertest.js",
diff --git a/chrome/test/data/webui/chromeos/internet_config_dialog_browsertest.js b/chrome/test/data/webui/chromeos/internet_config_dialog_browsertest.js new file mode 100644 index 0000000..7681924 --- /dev/null +++ b/chrome/test/data/webui/chromeos/internet_config_dialog_browsertest.js
@@ -0,0 +1,21 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview Test suite for the Internet Config Dialog. + */ +GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']); + +GEN('#include "content/public/test/browser_test.h"'); + +var InternetConfigDialogBrowserTest = class extends PolymerTest { + /** @override */ + get browsePreload() { + return 'chrome://internet-config-dialog/test_loader.html?module=chromeos/internet_config_dialog_test.js&host=test'; + } +}; + +TEST_F('InternetConfigDialogBrowserTest', 'All', function() { + mocha.run(); +});
diff --git a/chrome/test/data/webui/chromeos/internet_config_dialog_test.js b/chrome/test/data/webui/chromeos/internet_config_dialog_test.js new file mode 100644 index 0000000..caea7218 --- /dev/null +++ b/chrome/test/data/webui/chromeos/internet_config_dialog_test.js
@@ -0,0 +1,48 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://internet-config-dialog/internet_config_dialog.js'; + +import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +suite('internet-config-dialog', () => { + let internetConfigDialog = null; + + function flushAsync() { + flush(); + // Use setTimeout to wait for the next macrotask. + return new Promise(resolve => setTimeout(resolve)); + } + + setup(() => { + PolymerTest.clearBody(); + }); + + async function init() { + internetConfigDialog = document.createElement('internet-config-dialog'); + document.body.appendChild(internetConfigDialog); + await flushAsync(); + } + + [false, true].forEach(isJellyEnabled => { + test( + `CSS theme is updated when isJellyEnabled is ${isJellyEnabled}`, + async () => { + loadTimeData.overrideValues({ + isJellyEnabled: isJellyEnabled, + }); + await init(); + + const link = document.head.querySelector( + `link[href*='chrome://theme/colors.css']`); + if (isJellyEnabled) { + assertTrue(!!link); + assertTrue(document.body.classList.contains('jelly-enabled')); + } else { + assertEquals(null, link); + assertFalse(document.body.classList.contains('jelly-enabled')); + } + }); + }); +});
diff --git a/chrome/test/data/webui/chromeos/personalization_app/dynamic_color_element_test.ts b/chrome/test/data/webui/chromeos/personalization_app/dynamic_color_element_test.ts index 30da249..b205bcb 100644 --- a/chrome/test/data/webui/chromeos/personalization_app/dynamic_color_element_test.ts +++ b/chrome/test/data/webui/chromeos/personalization_app/dynamic_color_element_test.ts
@@ -201,9 +201,9 @@ assertTrue( getStaticColorSelector().hidden, 'when the toggle is on, the static color buttons should be hidden.'); - const checkedButton = getColorSchemeSelector().querySelector( - 'cr-button[aria-checked="true"]') as HTMLElement; - assertEquals(String(colorScheme), checkedButton.dataset['colorSchemeId']); + const pressedButton = getColorSchemeSelector().querySelector( + 'cr-button[aria-pressed="true"]') as HTMLElement; + assertEquals(String(colorScheme), pressedButton.dataset['colorSchemeId']); }); test('displays static color on load', async () => { @@ -219,9 +219,9 @@ assertFalse( getStaticColorSelector().hidden, 'when the toggle is off, the static color buttons should be visible.'); - const checkedButton = getStaticColorSelector().querySelector( - 'cr-button[aria-checked="true"]') as HTMLElement; - assertTrue(checkedButton.getElementsByTagName('circle')[0]! + const pressedButton = getStaticColorSelector().querySelector( + 'cr-button[aria-pressed="true"]') as HTMLElement; + assertTrue(pressedButton.getElementsByTagName('circle')[0]! .getAttribute('style')!.includes(staticColorHex)); }); @@ -307,7 +307,7 @@ personalizationStore.expectAction(ThemeActionName.SET_COLOR_SCHEME); await showColorSchemeButtons(); const button = getColorSchemeButtons()[1]!; - assertEquals(button.getAttribute('aria-checked'), 'false'); + assertEquals(button.getAttribute('aria-pressed'), 'false'); button.click(); await themeProvider.whenCalled('setColorScheme'); @@ -319,7 +319,7 @@ assertEquals( Number(button.dataset['colorSchemeId']!), personalizationStore.data.theme.colorSchemeSelected); - assertEquals(button.getAttribute('aria-checked'), 'true'); + assertEquals(button.getAttribute('aria-pressed'), 'true'); }); test('set static color', async () => { @@ -327,7 +327,7 @@ personalizationStore.expectAction(ThemeActionName.SET_STATIC_COLOR); await showStaticColorButtons(); const button = getStaticColorButtons()[1]!; - assertEquals(button.getAttribute('aria-checked'), 'false'); + assertEquals(button.getAttribute('aria-pressed'), 'false'); button.click(); await themeProvider.whenCalled('setStaticColor'); @@ -343,14 +343,14 @@ '#.{6}')![0]); assertDeepEquals( buttonSkColor, personalizationStore.data.theme.staticColorSelected); - assertEquals(button.getAttribute('aria-checked'), 'true'); + assertEquals(button.getAttribute('aria-pressed'), 'true'); }); test('selects default color scheme on initial load', async () => { await initDynamicColorElement(); const colorSchemeButtons = getColorSchemeButtons(); - assertEquals('true', colorSchemeButtons[0]!.ariaChecked); + assertEquals('true', colorSchemeButtons[0]!.ariaPressed); }); test('selects default static color when static color is null', async () => { @@ -359,7 +359,7 @@ await initDynamicColorElement(); const staticColorButtons = getStaticColorButtons(); - assertEquals('true', staticColorButtons[0]!.ariaChecked); + assertEquals('true', staticColorButtons[0]!.ariaPressed); }); test('stores previous color scheme selection locally', async () => {
diff --git a/chrome/test/data/webui/new_tab_page/modules/history_clusters/cart/cart_tile_test.ts b/chrome/test/data/webui/new_tab_page/modules/history_clusters/cart/cart_tile_test.ts index af2fb24..c4acd95 100644 --- a/chrome/test/data/webui/new_tab_page/modules/history_clusters/cart/cart_tile_test.ts +++ b/chrome/test/data/webui/new_tab_page/modules/history_clusters/cart/cart_tile_test.ts
@@ -4,7 +4,7 @@ import 'chrome://webui-test/mojo_webui_test_support.js'; -import {MerchantCart} from 'chrome://new-tab-page/chrome_cart.mojom-webui.js'; +import {Cart} from 'chrome://new-tab-page/cart.mojom-webui.js'; import {CartTileModuleElement} from 'chrome://new-tab-page/lazy_load.js'; import {$$} from 'chrome://new-tab-page/new_tab_page.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; @@ -17,8 +17,7 @@ document.body.innerHTML = window.trustedTypes!.emptyHTML; }); - async function initializeModule(cart: MerchantCart): - Promise<CartTileModuleElement> { + async function initializeModule(cart: Cart): Promise<CartTileModuleElement> { const tileElement = new CartTileModuleElement(); tileElement.cart = cart; document.body.append(tileElement); @@ -29,6 +28,7 @@ test('Tile shows multiple images with extra image count card', async () => { // Arrange. const cart = { + domain: 'foo.com', merchant: 'Foo', cartUrl: {url: 'https://foo.com'}, productImageUrls: [...Array(5).keys()].map((_, i) => { @@ -37,6 +37,7 @@ }; }), discountText: '', + relativeDate: '6 mins ago', }; const tileElement = await initializeModule(cart); @@ -55,12 +56,15 @@ assertTrue(isVisible($$(tileElement, '#extraImageCard')!)); assertEquals($$(tileElement, '#extraImageCard')!.textContent!, '+2'); assertFalse(isVisible($$(tileElement, '#fallbackImage')!)); + assertEquals($$(tileElement, '#domain')!.textContent!, 'foo.com'); + assertEquals($$(tileElement, '#date')!.textContent!, '6 mins ago'); }); test( 'Tile shows multiple images without extra image count card', async () => { // Arrange. const cart = { + domain: 'foo.com', merchant: 'Foo', cartUrl: {url: 'https://foo.com'}, productImageUrls: [...Array(2).keys()].map((_, i) => { @@ -69,6 +73,7 @@ }; }), discountText: '', + relativeDate: '6 mins ago', }; const tileElement = await initializeModule(cart); @@ -88,11 +93,14 @@ tileElement.shadowRoot!.querySelectorAll('.large-image').length, 0); assertFalse(isVisible($$(tileElement, '#extraImageCard')!)); assertFalse(isVisible($$(tileElement, '#fallbackImage')!)); + assertEquals($$(tileElement, '#domain')!.textContent!, 'foo.com'); + assertEquals($$(tileElement, '#date')!.textContent!, '6 mins ago'); }); test('Tile shows single image', async () => { // Arrange. const cart = { + domain: 'foo.com', merchant: 'Foo', cartUrl: {url: 'https://foo.com'}, productImageUrls: [...Array(1).keys()].map((_, i) => { @@ -101,6 +109,7 @@ }; }), discountText: '', + relativeDate: '6 mins ago', }; const tileElement = await initializeModule(cart); @@ -119,15 +128,19 @@ tileElement.shadowRoot!.querySelectorAll('.large-image').length, 1); assertFalse(isVisible($$(tileElement, '#extraImageCard')!)); assertFalse(isVisible($$(tileElement, '#fallbackImage')!)); + assertEquals($$(tileElement, '#domain')!.textContent!, 'foo.com'); + assertEquals($$(tileElement, '#date')!.textContent!, '6 mins ago'); }); test('Tile shows fallback image with favicon', async () => { // Arrange. const cart = { + domain: 'foo.com', merchant: 'Foo', cartUrl: {url: 'https://foo.com'}, productImageUrls: [], discountText: '', + relativeDate: '6 mins ago', }; const tileElement = await initializeModule(cart); @@ -146,5 +159,7 @@ tileElement.shadowRoot!.querySelectorAll('.large-image').length, 0); assertFalse(isVisible($$(tileElement, '#extraImageCard')!)); assertTrue(isVisible($$(tileElement, '#fallbackImage')!)); + assertEquals($$(tileElement, '#domain')!.textContent!, 'foo.com'); + assertEquals($$(tileElement, '#date')!.textContent!, '6 mins ago'); }); });
diff --git a/chrome/test/data/webui/new_tab_page/modules/history_clusters/module_test.ts b/chrome/test/data/webui/new_tab_page/modules/history_clusters/module_test.ts index 3e541e0..aef8e11 100644 --- a/chrome/test/data/webui/new_tab_page/modules/history_clusters/module_test.ts +++ b/chrome/test/data/webui/new_tab_page/modules/history_clusters/module_test.ts
@@ -4,13 +4,14 @@ import 'chrome://webui-test/mojo_webui_test_support.js'; +import {Cart} from 'chrome://new-tab-page/cart.mojom-webui.js'; import {Cluster, URLVisit} from 'chrome://new-tab-page/history_cluster_types.mojom-webui.js'; import {PageHandlerRemote} from 'chrome://new-tab-page/history_clusters.mojom-webui.js'; import {DismissModuleEvent, HistoryClusterElementType, HistoryClusterImageDisplayState, HistoryClusterLayoutType, historyClustersDescriptor, HistoryClustersModuleElement, HistoryClustersProxyImpl, LAYOUT_1_MIN_IMAGE_VISITS, LAYOUT_1_MIN_VISITS, LAYOUT_2_MIN_IMAGE_VISITS, LAYOUT_2_MIN_VISITS, LAYOUT_3_MIN_IMAGE_VISITS, LAYOUT_3_MIN_VISITS, PageImageServiceBrowserProxy} from 'chrome://new-tab-page/lazy_load.js'; import {$$} from 'chrome://new-tab-page/new_tab_page.js'; import {PageImageServiceHandlerRemote} from 'chrome://resources/cr_components/page_image_service/page_image_service.mojom-webui.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; -import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js'; +import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {fakeMetricsPrivate, MetricsTracker} from 'chrome://webui-test/metrics_test_support.js'; import {waitAfterNextRender} from 'chrome://webui-test/polymer_test_util.js'; import {TestMock} from 'chrome://webui-test/test_mock.js'; @@ -89,9 +90,10 @@ metrics = fakeMetricsPrivate(); }); - async function initializeModule(clusters: Cluster[]): + async function initializeModule(clusters: Cluster[], cart: Cart|null = null): Promise<HistoryClustersModuleElement> { handler.setResultFor('getClusters', Promise.resolve({clusters})); + handler.setResultFor('getCartForCluster', Promise.resolve({cart})); const moduleElement = await historyClustersDescriptor.initialize(0) as HistoryClustersModuleElement; await handler.whenCalled('getClusters'); @@ -425,4 +427,64 @@ HistoryClusterImageDisplayState.ALL)); }); }); + + suite('cart tile rendering', () => { + test('Cart tile is not rendererd when feature is disabled', async () => { + loadTimeData.overrideValues({ + modulesChromeCartInHistoryClustersModuleEnabled: false, + }); + + const moduleElement = await initializeModule( + [createSampleCluster(HistoryClusterLayoutType.LAYOUT_1)], null); + + assertEquals(0, handler.getCallCount('getCartForCluster')); + assertTrue(!!moduleElement); + await waitAfterNextRender(moduleElement); + const cartTile = moduleElement.shadowRoot!.getElementById('cartTile'); + assertFalse(!!cartTile); + assertFalse(!!moduleElement.cart); + }); + + test( + 'Cart tile is not rendererd when feature is enabled but no cart', + async () => { + loadTimeData.overrideValues({ + modulesChromeCartInHistoryClustersModuleEnabled: true, + }); + + const moduleElement = await initializeModule( + [createSampleCluster(HistoryClusterLayoutType.LAYOUT_1)], null); + + assertEquals(1, handler.getCallCount('getCartForCluster')); + assertTrue(!!moduleElement); + await waitAfterNextRender(moduleElement); + const cartTile = moduleElement.shadowRoot!.getElementById('cartTile'); + assertFalse(!!cartTile); + assertFalse(!!moduleElement.cart); + }); + + test('Cart tile is correctly rendered', async () => { + loadTimeData.overrideValues({ + modulesChromeCartInHistoryClustersModuleEnabled: true, + }); + + const cart: Cart = Object.assign({ + domain: 'foo.com', + merchant: 'Foo', + cartUrl: {url: 'https://foo.com'}, + productImageUrls: [], + discountText: '', + relativeDate: '6 mins ago', + }); + const moduleElement = await initializeModule( + [createSampleCluster(HistoryClusterLayoutType.LAYOUT_1)], cart); + + assertEquals(1, handler.getCallCount('getCartForCluster')); + assertTrue(!!moduleElement); + await waitAfterNextRender(moduleElement); + const cartTile = moduleElement.shadowRoot!.getElementById('cartTile'); + assertTrue(!!cartTile); + assertTrue(!!moduleElement.cart); + }); + }); });
diff --git a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js index 8ea29c6..75c52e2 100644 --- a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js +++ b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.js
@@ -435,6 +435,13 @@ 'NewTabPageModulesHistoryClustersModuleTest unload metric all images'); }); +TEST_F( + 'NewTabPageModulesHistoryClustersModuleTest', 'CartTileRendering', + function() { + runMochaSuite( + 'NewTabPageModulesHistoryClustersModuleTest cart tile rendering'); + }); + var NewTabPageModulesHistoryClustersModuleTileTest = class extends NewTabPageBrowserTest { /** @override */
diff --git a/chrome/test/data/webui/settings/chromeos/BUILD.gn b/chrome/test/data/webui/settings/chromeos/BUILD.gn index e1a0fab..87bc621 100644 --- a/chrome/test/data/webui/settings/chromeos/BUILD.gn +++ b/chrome/test/data/webui/settings/chromeos/BUILD.gn
@@ -259,7 +259,6 @@ ts_deps = [ "//ash/webui/common/resources:build_ts", "//chrome/browser/resources/settings/chromeos:build_ts", - "//chrome/test/data/webui:build_ts", "//third_party/polymer/v3_0:library", "//ui/webui/resources/cr_components/app_management:build_ts", "//ui/webui/resources/cr_elements:build_ts",
diff --git a/chrome/test/data/webui/settings/chromeos/multidevice_page/test_multidevice_browser_proxy.ts b/chrome/test/data/webui/settings/chromeos/multidevice_page/test_multidevice_browser_proxy.ts index 7c581f85..e4506ee 100644 --- a/chrome/test/data/webui/settings/chromeos/multidevice_page/test_multidevice_browser_proxy.ts +++ b/chrome/test/data/webui/settings/chromeos/multidevice_page/test_multidevice_browser_proxy.ts
@@ -55,8 +55,6 @@ 'getPageContentData', 'setFeatureEnabledState', 'setUpAndroidSms', - 'getSmartLockSignInEnabled', - 'setSmartLockSignInEnabled', 'getSmartLockSignInAllowed', 'getAndroidSmsInfo', 'attemptNotificationSetup', @@ -98,17 +96,8 @@ this.methodCalled('setUpAndroidSms'); } - getSmartLockSignInEnabled(): Promise<boolean> { - this.methodCalled('getSmartLockSignInEnabled'); - return Promise.resolve(true); - } - - setSmartLockSignInEnabled(enabled: boolean, authToken?: string): void { - this.methodCalled('setSmartLockSignInEnabled', [enabled, authToken]); - webUIListenerCallback('smart-lock-signin-enabled-changed', enabled); - } - - getSmartLockSignInAllowed(): Promise<boolean> { + /** @override */ + getSmartLockSignInAllowed() { this.methodCalled('getSmartLockSignInAllowed'); return Promise.resolve(this.smartLockSignInAllowed_); }
diff --git a/chrome/test/webapps/coverage/coverage_mac.tsv b/chrome/test/webapps/coverage/coverage_mac.tsv index 9700e22..40f11aa6 100644 --- a/chrome/test/webapps/coverage/coverage_mac.tsv +++ b/chrome/test/webapps/coverage/coverage_mac.tsv
@@ -603,6 +603,45 @@ create_shortcut_NotPromotable_Windowed🌕 launch_from_platform_shortcut_NotPromotable🌓 check_window_not_created🌕 install_policy_app_NotPromotable_WithShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 install_policy_app_NotPromotable_NoShortcut_Windowed_WebApp🌓 launch_from_platform_shortcut_NotPromotable🌓 check_window_created🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 close_pwa🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Windowed🌕 close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_omnibox_icon_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +install_menu_option_Standalone🌕 close_pwa🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_WithShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Windowed🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Browser🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_omnibox_icon_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Browser🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +install_menu_option_Standalone🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Browser🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Default🌕 +create_shortcut_Standalone_Browser🌕 switch_active_profile_Profile2🌕 create_shortcut_Standalone_Windowed🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Browser🌕 switch_active_profile_Profile2🌕 install_omnibox_icon_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 +create_shortcut_Standalone_Browser🌕 switch_active_profile_Profile2🌕 install_menu_option_Standalone🌕 quit_app_shim_Standalone🌕 launch_from_platform_shortcut_Standalone🌓 check_pwa_window_created_in_profile_Standalone_One_Profile2🌕 install_policy_app_Standalone_NoShortcut_Windowed_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 install_policy_app_Standalone_NoShortcut_Browser_WebApp🌓 create_shortcuts_from_list_Standalone🌕 check_platform_shortcut_and_icon_Standalone🌕 create_shortcut_Standalone_Windowed🌕 delete_profile🌑 check_app_list_empty🌑
diff --git a/chrome/test/webapps/data/actions.md b/chrome/test/webapps/data/actions.md index bd0d6f3..07c57ed3 100644 --- a/chrome/test/webapps/data/actions.md +++ b/chrome/test/webapps/data/actions.md
@@ -20,7 +20,7 @@ TODO(dmurph): Possibly this table up into markdown-header section. -| # Action base name | Argument Types | Output Actions | Unique Identifier (next: 164) | Status (WIP, Implemented, Not Implemented, Parameterized) | Description | Metadata, implementation bug, etc | +| # Action base name | Argument Types | Output Actions | Unique Identifier (next: 166) | Status (WIP, Implemented, Not Implemented, Parameterized) | Description | Metadata, implementation bug, etc | | --- | --- | --- | --- | --- | --- | --- | | # Badging | | check_app_badge_empty | Site | | 2 | Not Implemented | Check that the 'badge' on the app icon is empty | | @@ -106,12 +106,14 @@ | check_window_created | | | 24 | Implemented | A window was created. | | | check_window_not_created | | | 127 | Implemented | A window was not created. | P2 | | check_pwa_window_created | Site, Number | | 123 | Implemented | A given number of windows were created for the given pwa. | | +| check_pwa_window_created_in_profile | Site, Number, ProfileName | | 165 | Implemented | A given number of windows were created for the given pwa in the given profile. | | | check_window_display_minimal | | | 25 | Implemented | Check that the window is a PWA window, and has minimal browser controls. | | | check_window_display_tabbed | | | 144 | Implemented | Check that the window is a PWA window, and has tabbed display mode. | | | check_window_display_standalone | | | 26 | Implemented | Check that the window is a PWA window, and has no browser controls. | | | close_custom_toolbar | | | 27 | Implemented | Press the 'x' button on the custom toolbar that is towards the top of the WebApp window. | | | close_pwa | | | 28 | Implemented | Close the WebApp window. | | | maybe_close_pwa | | | 143 | Implemented | Close the current app window if there is one open. | | +| quit_app_shim | Site | | 164 | Implemented | Closes the WebApp in all profiles by quitting the App Shim; Mac OS Only. | | | open_app_settings | Site | open_app_settings_from_chrome_apps($1) & open_app_settings_from_app_menu($1) & open_app_settings_from_command($1) | 95 | Parameterized | Launch chrome://app-settings/<app-id> page | phillis@ | | open_app_settings_from_app_menu | Site | | 97 | Implemented | | phillis@ | | open_app_settings_from_command | Site | | 163 | Implemented | Open app settings via its browser command. | |
diff --git a/chrome/test/webapps/data/critical_user_journeys.md b/chrome/test/webapps/data/critical_user_journeys.md index 86f2e545..e925e2d 100644 --- a/chrome/test/webapps/data/critical_user_journeys.md +++ b/chrome/test/webapps/data/critical_user_journeys.md
@@ -137,6 +137,16 @@ | M | install_or_shortcut_by_user_windowed(NotPromotable) | launch_from_platform_shortcut(NotPromotable) | check_window_not_created | | M | install_policy_app(NotPromotable, ShortcutOptions::All, Windowed, WebApp) | launch_from_platform_shortcut(NotPromotable) | check_window_created | +## Multi profile launches on Mac +| #Platforms | Test -> | | | | | | | | | | | | | | | | | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | check_pwa_window_created_in_profile(Standalone, One, Profile2) | +| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | close_pwa | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | +| M | install_or_shortcut_by_user_windowed | close_pwa | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Profile2) | +| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_policy_app(Standalone, ShortcutOptions::All, Windowed, WebApp) | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | +| M | install_or_shortcut_by_user_windowed | switch_active_profile(Profile2) | install_or_shortcut_by_user_tabbed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Default) | +| M | install_or_shortcut_by_user_tabbed | switch_active_profile(Profile2) | install_or_shortcut_by_user_windowed | quit_app_shim | launch_from_platform_shortcut | check_pwa_window_created_in_profile(Standalone, One, Profile2) | + # Misc UX Flows | #Platforms | Test -> | | | | | | | | | | | | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
diff --git a/chrome/test/webapps/data/framework_supported_actions.csv b/chrome/test/webapps/data/framework_supported_actions.csv index f63bff8..ab86fc4 100644 --- a/chrome/test/webapps/data/framework_supported_actions.csv +++ b/chrome/test/webapps/data/framework_supported_actions.csv
@@ -18,6 +18,7 @@ check_no_toolbar, 🌕, 🌕, 🌕, 🌕, check_platform_shortcut_and_icon, 🌕, 🌓, 🌓, 🌓, check_pwa_window_created, 🌕, 🌕, 🌕, 🌕, +check_pwa_window_created_in_profile, 🌕, 🌕, 🌕, 🌕, check_site_handles_file, 🌕, 🌕, 🌕, 🌑, check_site_not_handles_file, 🌕, 🌕, 🌕, 🌑, check_tab_created, 🌕, 🌕, 🌕, 🌕, @@ -33,6 +34,7 @@ close_custom_toolbar, 🌕, 🌕, 🌕, 🌕, close_pwa, 🌕, 🌕, 🌕, 🌕, maybe_close_pwa, 🌕, 🌕, 🌕, 🌕, +quit_app_shim, 🌕, 🌑, 🌑, 🌑, create_shortcuts_from_list, 🌕, 🌕, 🌕, 🌑, delete_platform_shortcut, 🌕, 🌕, 🌕, 🌑, disable_window_controls_overlay, 🌕, 🌕, 🌕, 🌕,
diff --git a/chromeos/ash/components/dbus/hermes/BUILD.gn b/chromeos/ash/components/dbus/hermes/BUILD.gn index a034b29..2a5312a8 100644 --- a/chromeos/ash/components/dbus/hermes/BUILD.gn +++ b/chromeos/ash/components/dbus/hermes/BUILD.gn
@@ -67,6 +67,7 @@ testonly = true public_deps = [ ":hermes" ] deps = [ + "//ash/constants", "//base", "//base/test:test_support", "//chromeos/dbus/common",
diff --git a/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.cc b/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.cc index a3f3ab421..1e2a9a5 100644 --- a/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.cc +++ b/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.cc
@@ -5,6 +5,7 @@ #include "chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.h" #include "ash/constants/ash_features.h" +#include "base/check.h" #include "base/command_line.h" #include "base/logging.h" #include "base/ranges/algorithm.h" @@ -324,6 +325,21 @@ interactive_delay_); } +void FakeHermesEuiccClient::RefreshSmdxProfiles( + const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + bool restore_slot, + RefreshSmdxProfilesCallback callback) { + DCHECK(ash::features::IsSmdsSupportEnabled()); + last_restore_slot_arg_ = restore_slot; + base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask( + FROM_HERE, + base::BindOnce(&FakeHermesEuiccClient::DoRefreshSmdxProfiles, + weak_ptr_factory_.GetWeakPtr(), euicc_path, + activation_code, std::move(callback)), + interactive_delay_); +} + void FakeHermesEuiccClient::RequestPendingProfiles( const dbus::ObjectPath& euicc_path, const std::string& root_smds, @@ -483,6 +499,28 @@ std::move(callback).Run(HermesResponseStatus::kSuccess); } +void FakeHermesEuiccClient::DoRefreshSmdxProfiles( + const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + RefreshSmdxProfilesCallback callback) { + // Use CHECK() here since the only caller has a DCHECK(). + CHECK(ash::features::IsSmdsSupportEnabled()); + + DVLOG(1) << "Refresh SM-DX Profiles Requested"; + + std::vector<dbus::ObjectPath> profile_paths; + + if (!error_status_queue_.empty()) { + std::move(callback).Run(error_status_queue_.front(), profile_paths); + error_status_queue_.pop(); + return; + } + + // TODO(b/271854446): Update this method to be able to have test profile paths + // able to be returned. + std::move(callback).Run(HermesResponseStatus::kSuccess, profile_paths); +} + void FakeHermesEuiccClient::DoRequestPendingProfiles( const dbus::ObjectPath& euicc_path, HermesResponseCallback callback) {
diff --git a/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.h b/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.h index 6cae7cc2..c5fdf3b9 100644 --- a/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.h +++ b/chromeos/ash/components/dbus/hermes/fake_hermes_euicc_client.h
@@ -82,6 +82,10 @@ void RefreshInstalledProfiles(const dbus::ObjectPath& euicc_path, bool restore_slot, HermesResponseCallback callback) override; + void RefreshSmdxProfiles(const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + bool restore_slot, + RefreshSmdxProfilesCallback callback) override; void RequestPendingProfiles(const dbus::ObjectPath& euicc_path, const std::string& root_smds, HermesResponseCallback callback) override; @@ -106,6 +110,9 @@ HermesResponseCallback callback); void DoRequestInstalledProfiles(const dbus::ObjectPath& euicc_path, HermesResponseCallback callback); + void DoRefreshSmdxProfiles(const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + RefreshSmdxProfilesCallback callback); void DoRequestPendingProfiles(const dbus::ObjectPath& euicc_path, HermesResponseCallback callback); void DoUninstallProfile(const dbus::ObjectPath& euicc_path,
diff --git a/chromeos/ash/components/dbus/hermes/hermes_euicc_client.cc b/chromeos/ash/components/dbus/hermes/hermes_euicc_client.cc index 955e209..740f335 100644 --- a/chromeos/ash/components/dbus/hermes/hermes_euicc_client.cc +++ b/chromeos/ash/components/dbus/hermes/hermes_euicc_client.cc
@@ -114,6 +114,22 @@ weak_ptr_factory_.GetWeakPtr(), std::move(callback))); } + void RefreshSmdxProfiles(const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + bool restore_slot, + RefreshSmdxProfilesCallback callback) override { + dbus::MethodCall method_call(hermes::kHermesEuiccInterface, + hermes::euicc::kRefreshSmdxProfiles); + dbus::MessageWriter writer(&method_call); + writer.AppendString(activation_code); + writer.AppendBool(restore_slot); + dbus::ObjectProxy* object_proxy = GetOrCreateProperties(euicc_path).first; + object_proxy->CallMethodWithErrorResponse( + &method_call, hermes_constants::kHermesNetworkOperationTimeoutMs, + base::BindOnce(&HermesEuiccClientImpl::OnRefreshSmdxProfilesResponse, + weak_ptr_factory_.GetWeakPtr(), std::move(callback))); + } + void UninstallProfile(const dbus::ObjectPath& euicc_path, const dbus::ObjectPath& carrier_profile_path, HermesResponseCallback callback) override { @@ -206,6 +222,34 @@ std::move(callback).Run(HermesResponseStatus::kSuccess, &profile_path); } + void OnRefreshSmdxProfilesResponse(RefreshSmdxProfilesCallback callback, + dbus::Response* response, + dbus::ErrorResponse* error_response) { + std::vector<dbus::ObjectPath> profile_paths; + + if (error_response) { + NET_LOG(ERROR) << "Refresh SM-DX profiles failed with error: " + << error_response->GetErrorName(); + std::move(callback).Run( + HermesResponseStatusFromErrorName(error_response->GetErrorName()), + profile_paths); + return; + } + + if (!response) { + // No Error or Response received. + NET_LOG(ERROR) << "Refresh SM-DX profiles Error: No error or " + "response received."; + std::move(callback).Run(HermesResponseStatus::kErrorNoResponse, + profile_paths); + return; + } + + dbus::MessageReader reader(response); + reader.PopArrayOfObjectPaths(&profile_paths); + std::move(callback).Run(HermesResponseStatus::kSuccess, profile_paths); + } + void OnHermesStatusResponse(HermesResponseCallback callback, dbus::Response* response, dbus::ErrorResponse* error_response) {
diff --git a/chromeos/ash/components/dbus/hermes/hermes_euicc_client.h b/chromeos/ash/components/dbus/hermes/hermes_euicc_client.h index 70bd800..92d179b 100644 --- a/chromeos/ash/components/dbus/hermes/hermes_euicc_client.h +++ b/chromeos/ash/components/dbus/hermes/hermes_euicc_client.h
@@ -28,6 +28,13 @@ base::OnceCallback<void(HermesResponseStatus status, const dbus::ObjectPath* carrier_profile_path)>; + // Callback for the RefreshSmdxProfiles(). Callback returns the status code + // and 0 or more object paths for profiles available to be installed for the + // activation code provided to the method. + using RefreshSmdxProfilesCallback = base::OnceCallback<void( + HermesResponseStatus status, + const std::vector<dbus::ObjectPath>& profile_paths)>; + class TestInterface { public: enum class AddCarrierProfileBehavior { @@ -213,6 +220,15 @@ bool restore_slot, HermesResponseCallback callback) = 0; + // Fetches the available profiles for Euicc at |euicc_path| using the + // activation code provided by |activation_code|. This method will update the + // set of known profiles before returning. If |restore_slot| is |true| then + // the SIM slot that was active prior to refreshing is restored. + virtual void RefreshSmdxProfiles(const dbus::ObjectPath& euicc_path, + const std::string& activation_code, + bool restore_slot, + RefreshSmdxProfilesCallback callback) = 0; + // Updates pending profiles for Euicc at |euicc_path| from the SMDS server // using the given |root_smds| server address. Passing an empty |root_smds| // will use default lpa.ds.gsma.com. This updates pending profiles list prior
diff --git a/chromeos/ash/components/dbus/hermes/hermes_euicc_client_unittest.cc b/chromeos/ash/components/dbus/hermes/hermes_euicc_client_unittest.cc index 6c39763a..9ed520cc 100644 --- a/chromeos/ash/components/dbus/hermes/hermes_euicc_client_unittest.cc +++ b/chromeos/ash/components/dbus/hermes/hermes_euicc_client_unittest.cc
@@ -4,7 +4,9 @@ #include <deque> +#include "ash/constants/ash_features.h" #include "base/run_loop.h" +#include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "chromeos/ash/components/dbus/hermes/hermes_client_test_base.h" #include "chromeos/ash/components/dbus/hermes/hermes_euicc_client.h" @@ -45,6 +47,25 @@ return true; } +MATCHER_P2(MatchRefreshSmdxProfilesCall, + expected_activation_code, + expected_restore_slot, + "") { + dbus::MessageReader reader(arg); + std::string activation_code; + bool restore_slot; + if (arg->GetMember() != hermes::euicc::kRefreshSmdxProfiles || + !reader.PopString(&activation_code) || + activation_code != expected_activation_code || + !reader.PopBool(&restore_slot) || restore_slot != expected_restore_slot) { + *result_listener << "has method_name=" << arg->GetMember() + << " activation_code=" << activation_code + << " restore_slot=" << restore_slot; + return false; + } + return true; +} + MATCHER_P(MatchRequestPendingProfilesCall, expected_root_smds, "") { dbus::MessageReader reader(arg); std::string root_smds; @@ -128,6 +149,15 @@ return true; } +void CopyRefreshSmdxProfilesResult( + HermesResponseStatus* dest_status, + std::vector<dbus::ObjectPath>* dest_profiles, + HermesResponseStatus status, + const std::vector<dbus::ObjectPath>& profiles) { + *dest_status = status; + *dest_profiles = profiles; +} + void CopyInstallResult(HermesResponseStatus* dest_status, dbus::ObjectPath* dest_path, HermesResponseStatus status, @@ -316,6 +346,56 @@ EXPECT_EQ(status, HermesResponseStatus::kErrorUnknown); } +TEST_F(HermesEuiccClientTest, TestRefreshSmdxProfiles) { + base::test::ScopedFeatureList feature_list; + feature_list.InitWithFeatures( + {{ash::features::kSmdsSupport, ash::features::kSmdsDbusMigration}}, {{}}); + + dbus::ObjectPath test_euicc_path(kTestEuiccPath); + dbus::MethodCall method_call(hermes::kHermesEuiccInterface, + hermes::euicc::kRefreshSmdxProfiles); + method_call.SetSerial(123); + EXPECT_CALL(*proxy_.get(), + DoCallMethodWithErrorResponse( + MatchRefreshSmdxProfilesCall(kTestRootSmds, + /*expected_restore_slot=*/true), + _, _)) + .Times(2) + .WillRepeatedly(Invoke(this, &HermesEuiccClientTest::OnMethodCalled)); + + HermesResponseStatus status; + std::vector<dbus::ObjectPath> profiles; + + const std::vector<dbus::ObjectPath> kProfilesToReturn{ + {dbus::ObjectPath(kTestCarrierProfilePath)}}; + + // Verify that client makes corresponding dbus method call with + // correct arguments. + std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); + dbus::MessageWriter response_writer(response.get()); + response_writer.AppendArrayOfObjectPaths(kProfilesToReturn); + AddPendingMethodCallResult(std::move(response), nullptr); + client_->RefreshSmdxProfiles( + test_euicc_path, kTestRootSmds, /*restore_slot=*/true, + base::BindOnce(CopyRefreshSmdxProfilesResult, &status, &profiles)); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(status, HermesResponseStatus::kSuccess); + ASSERT_EQ(profiles.size(), 1u); + EXPECT_EQ(profiles.front(), kProfilesToReturn.front()); + + // Verify that error responses are returned properly. + std::unique_ptr<dbus::ErrorResponse> error_response = + dbus::ErrorResponse::FromMethodCall(&method_call, + hermes::kErrorNoResponse, ""); + AddPendingMethodCallResult(nullptr, std::move(error_response)); + client_->RefreshSmdxProfiles( + test_euicc_path, kTestRootSmds, /*restore_slot=*/true, + base::BindOnce(CopyRefreshSmdxProfilesResult, &status, &profiles)); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(status, HermesResponseStatus::kErrorNoResponse); + EXPECT_TRUE(profiles.empty()); +} + TEST_F(HermesEuiccClientTest, TestRequestPendingProfiles) { dbus::ObjectPath test_euicc_path(kTestEuiccPath); dbus::MethodCall method_call(hermes::kHermesEuiccInterface,
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.cc b/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.cc index d2ff1f3..c3024a43 100644 --- a/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.cc +++ b/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.cc
@@ -23,13 +23,6 @@ const char kProximityAuthRemoteBleDevices[] = "proximity_auth.remote_ble_devices"; -// Whether or not EasyUnlock is enabled on the ChromeOS login screen (in -// addition to the lock screen). -// TODO(b/227674947): Delete this pref now that Sign in with Smart Lock is -// deprecated. -const char kProximityAuthIsChromeOSLoginEnabled[] = - "proximity_auth.is_chromeos_login_enabled"; - // The dictionary containing remote BLE devices. // TODO(b/227674947): Delete this pref now that Sign in with Smart Lock is // deprecated.
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h b/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h index e51c04a..072408f 100644 --- a/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h +++ b/chromeos/ash/components/proximity_auth/proximity_auth_pref_names.h
@@ -12,7 +12,6 @@ extern const char kProximityAuthLastPromotionCheckTimestampMs[]; extern const char kProximityAuthPromotionShownCount[]; extern const char kProximityAuthRemoteBleDevices[]; -extern const char kProximityAuthIsChromeOSLoginEnabled[]; extern const char kProximityAuthHasShownLoginDisabledMessage[]; } // namespace prefs
diff --git a/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.cc b/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.cc index 7d1dc869..e73e3ea 100644 --- a/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.cc +++ b/chromeos/ash/components/proximity_auth/proximity_auth_profile_pref_manager.cc
@@ -40,9 +40,6 @@ prefs::kProximityAuthLastPromotionCheckTimestampMs, 0L); registry->RegisterIntegerPref(prefs::kProximityAuthPromotionShownCount, 0); registry->RegisterDictionaryPref(prefs::kProximityAuthRemoteBleDevices); - registry->RegisterBooleanPref( - prefs::kProximityAuthIsChromeOSLoginEnabled, false, - user_prefs::PrefRegistrySyncable::SYNCABLE_OS_PREF); } bool ProximityAuthProfilePrefManager::IsEasyUnlockAllowed() const {
diff --git a/chromeos/ash/services/multidevice_setup/public/cpp/prefs.h b/chromeos/ash/services/multidevice_setup/public/cpp/prefs.h index cf60f68f..5bde211 100644 --- a/chromeos/ash/services/multidevice_setup/public/cpp/prefs.h +++ b/chromeos/ash/services/multidevice_setup/public/cpp/prefs.h
@@ -29,6 +29,8 @@ extern const char kInstantTetheringAllowedPrefName[]; extern const char kMessagesAllowedPrefName[]; extern const char kSmartLockAllowedPrefName[]; +// TODO(b/227674947): Deprecate kSmartLockSigninAllowedPrefName and its +// corresponding policy. extern const char kSmartLockSigninAllowedPrefName[]; extern const char kPhoneHubAllowedPrefName[]; extern const char kPhoneHubCameraRollAllowedPrefName[];
diff --git a/chromeos/chromeos_strings.grd b/chromeos/chromeos_strings.grd index fbd9a5e..e5628e4c 100644 --- a/chromeos/chromeos_strings.grd +++ b/chromeos/chromeos_strings.grd
@@ -2373,6 +2373,30 @@ <message name="IDS_PERSONALIZATION_APP_THEME_DYNAMIC_COLOR_DESCRIPTION" desc="Description for dynamic color theme element in personalization hub"> Use color sets that match your wallpaper </message> + <message name="IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_TONAL_SPOT" desc="Label for dynamic color tonal spot scheme in personalization hub"> + Wallpaper tone + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_NEUTRAL" desc="Label for dynamic color neutral scheme in personalization hub"> + Neutral + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_VIBRANT" desc="Label for dynamic color vibrant scheme in personalization hub"> + Vibrant + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_EXPRESSIVE" desc="Label for dynamic color expressive scheme in personalization hub"> + Expressive + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_GOOGLE_BLUE" desc="Label for static color google blue in personalization hub"> + Google blue + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PINK" desc="Label for static color light pink in personalization hub"> + Light pink + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_DARK_GREEN" desc="Label for static color dark green in personalization hub"> + Dark green + </message> + <message name="IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PURPLE" desc="Label for static color light purple in personalization hub"> + Light purple + </message> <message name="IDS_PERSONALIZATION_APP_THEME_DARK_COLOR_MODE" desc="Label for dark color mode setting"> Dark </message>
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_EXPRESSIVE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_EXPRESSIVE.png.sha1 new file mode 100644 index 0000000..d57a207 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_EXPRESSIVE.png.sha1
@@ -0,0 +1 @@ +f7ab1743d79f0e3a7a54b38e13fe9992f3b280fb \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_NEUTRAL.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_NEUTRAL.png.sha1 new file mode 100644 index 0000000..1ad1623 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_NEUTRAL.png.sha1
@@ -0,0 +1 @@ +97db7f36e1595c1346e314dab957d15d76d0251b \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_TONAL_SPOT.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_TONAL_SPOT.png.sha1 new file mode 100644 index 0000000..b6f7db6a --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_TONAL_SPOT.png.sha1
@@ -0,0 +1 @@ +862f1a078336e59947586f85c68a276c55f6772c \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_VIBRANT.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_VIBRANT.png.sha1 new file mode 100644 index 0000000..da927ca --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_COLOR_SCHEME_VIBRANT.png.sha1
@@ -0,0 +1 @@ +11b959fca2d4fe4173ce94c3f155da68cdc1271f \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_DARK_GREEN.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_DARK_GREEN.png.sha1 new file mode 100644 index 0000000..38ac88d --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_DARK_GREEN.png.sha1
@@ -0,0 +1 @@ +1ab45b45ef1d981463f395696e146a3fdd489925 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_GOOGLE_BLUE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_GOOGLE_BLUE.png.sha1 new file mode 100644 index 0000000..e1c06f5 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_GOOGLE_BLUE.png.sha1
@@ -0,0 +1 @@ +a22bc9fed092ed834bc11f13ba81948c5a1f2fb8 \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PINK.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PINK.png.sha1 new file mode 100644 index 0000000..9a35e6f --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PINK.png.sha1
@@ -0,0 +1 @@ +260fb88e2b38c7002744fbdd9f68d30b0e3ca33f \ No newline at end of file
diff --git a/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PURPLE.png.sha1 b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PURPLE.png.sha1 new file mode 100644 index 0000000..0a57f855 --- /dev/null +++ b/chromeos/chromeos_strings_grd/IDS_PERSONALIZATION_APP_THEME_STATIC_COLOR_LIGHT_PURPLE.png.sha1
@@ -0,0 +1 @@ +454e862232fd6f888b5675d448e5fb7eea493e3e \ No newline at end of file
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index db2a67a..7272277 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -313,6 +313,8 @@ "payments/autofill_error_dialog_context.h", "payments/autofill_offer_manager.cc", "payments/autofill_offer_manager.h", + "payments/autofill_payments_feature_availability.cc", + "payments/autofill_payments_feature_availability.h", "payments/autofill_wallet_model_type_controller.cc", "payments/autofill_wallet_model_type_controller.h", "payments/card_unmask_challenge_option.cc",
diff --git a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc index 35001a1d..dadb08d 100644 --- a/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc +++ b/components/autofill/core/browser/autofill_suggestion_generator_unittest.cc
@@ -18,6 +18,7 @@ #include "components/autofill/core/browser/data_model/iban.h" #include "components/autofill/core/browser/metrics/payments/card_metadata_metrics.h" #include "components/autofill/core/browser/mock_autofill_optimization_guide.h" +#include "components/autofill/core/browser/payments/constants.h" #include "components/autofill/core/browser/test_autofill_client.h" #include "components/autofill/core/browser/test_personal_data_manager.h" #include "components/autofill/core/browser/ui/suggestion.h" @@ -1071,31 +1072,22 @@ : public AutofillSuggestionGeneratorTest, public testing::WithParamInterface<std::tuple<bool, bool, bool>> { public: - AutofillSuggestionGeneratorTestForMetadata() - : card_product_description_enabled_(std::get<0>(GetParam())), - card_art_image_enabled_(std::get<1>(GetParam())), - card_has_linked_virtual_card_(std::get<2>(GetParam())) { + AutofillSuggestionGeneratorTestForMetadata() { feature_list_card_product_description_.InitWithFeatureState( - features::kAutofillEnableCardProductName, - card_product_description_enabled_); + features::kAutofillEnableCardProductName, std::get<0>(GetParam())); feature_list_card_art_image_.InitWithFeatureState( - features::kAutofillEnableCardArtImage, card_art_image_enabled_); + features::kAutofillEnableCardArtImage, std::get<1>(GetParam())); } ~AutofillSuggestionGeneratorTestForMetadata() override = default; bool card_product_description_enabled() const { - return card_product_description_enabled_; + return std::get<0>(GetParam()); } - bool card_art_image_enabled() const { return card_art_image_enabled_; } - bool card_has_linked_virtual_card() const { - return card_has_linked_virtual_card_; - } + bool card_art_image_enabled() const { return std::get<1>(GetParam()); } + bool card_has_static_art_image() const { return std::get<2>(GetParam()); } private: - const bool card_product_description_enabled_; - const bool card_art_image_enabled_; - const bool card_has_linked_virtual_card_; base::test::ScopedFeatureList feature_list_card_product_description_; base::test::ScopedFeatureList feature_list_card_art_image_; }; @@ -1209,10 +1201,9 @@ { // Create one server card with no metadata. CreditCard server_card = CreateServerCard(); - server_card.set_issuer_id("amex"); - if (card_has_linked_virtual_card()) { - server_card.set_virtual_card_enrollment_state( - CreditCard::VirtualCardEnrollmentState::ENROLLED); + server_card.set_issuer_id(kCapitalOneCardIssuerId); + if (card_has_static_art_image()) { + server_card.set_card_art_url(GURL(kCapitalOneCardArtUrl)); } personal_data()->AddServerCreditCard(server_card); @@ -1228,10 +1219,10 @@ EXPECT_FALSE(metadata_logging_context.card_product_description_shown); EXPECT_FALSE(metadata_logging_context.card_art_image_shown); - // Verify that a record is added that an American Express card suggestion + // Verify that a record is added that a Capital One card suggestion // was generated, and it did not have metadata. base::flat_map<std::string, bool> expected_issuer_to_metadata_availability = - {{"amex", false}}; + {{kCapitalOneCardIssuerId, false}}; EXPECT_EQ(metadata_logging_context.issuer_to_metadata_availability, expected_issuer_to_metadata_availability); } @@ -1241,14 +1232,10 @@ { // Create a server card with card product description & card art image. CreditCard server_card_with_metadata = CreateServerCard(); - server_card_with_metadata.set_issuer_id("amex"); + server_card_with_metadata.set_issuer_id(kCapitalOneCardIssuerId); server_card_with_metadata.set_product_description(u"product_description"); server_card_with_metadata.set_card_art_url( GURL("https://www.example.com/card-art.png")); - if (card_has_linked_virtual_card()) { - server_card_with_metadata.set_virtual_card_enrollment_state( - CreditCard::VirtualCardEnrollmentState::ENROLLED); - } personal_data()->AddServerCreditCard(server_card_with_metadata); bool should_display_gpay_logo; @@ -1263,12 +1250,12 @@ EXPECT_EQ(metadata_logging_context.card_product_description_shown, card_product_description_enabled()); EXPECT_EQ(metadata_logging_context.card_art_image_shown, - card_art_image_enabled() || card_has_linked_virtual_card()); + card_art_image_enabled()); - // Verify that a record is added that an American Express card suggestion + // Verify that a record is added that a Capital One card suggestion // was generated, and it had metadata. base::flat_map<std::string, bool> expected_issuer_to_metadata_availability = - {{"amex", true}}; + {{kCapitalOneCardIssuerId, true}}; EXPECT_EQ(metadata_logging_context.issuer_to_metadata_availability, expected_issuer_to_metadata_availability); }
diff --git a/components/autofill/core/browser/manual_testing_profile_import.cc b/components/autofill/core/browser/manual_testing_profile_import.cc index 3737fd1..7181c4ae 100644 --- a/components/autofill/core/browser/manual_testing_profile_import.cc +++ b/components/autofill/core/browser/manual_testing_profile_import.cc
@@ -5,31 +5,44 @@ #include "components/autofill/core/browser/manual_testing_profile_import.h" #include <string> -#include <type_traits> #include "base/check.h" #include "base/command_line.h" #include "base/containers/fixed_flat_map.h" -#include "base/containers/flat_map.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/functional/bind.h" #include "base/json/json_reader.h" #include "base/location.h" -#include "base/strings/strcat.h" #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" #include "base/task/task_traits.h" #include "base/task/thread_pool.h" +#include "components/autofill/core/browser/autofill_type.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_component.h" +#include "components/autofill/core/browser/field_type_utils.h" #include "components/autofill/core/browser/field_types.h" namespace autofill { namespace { +// Util struct for storing the list of profiles and credit cards to be imported. +// If any of `profiles` or `credit_cards` are absl::nullopt, then the data used +// for import is malformed, and this will cause a crash. +// When any of `profiles` or `credit_cards` is empty, it means that the JSON +// file used for import did not include the corresponding key. It'll be treated +// as valid but won't be imported so that existing data in the PDM isn't +// cleared without replacement. +struct AutofillProfilesAndCreditCards { + absl::optional<std::vector<AutofillProfile>> profiles; + absl::optional<std::vector<CreditCard>> credit_cards; +}; + constexpr base::StringPiece kKeyProfiles = "profiles"; +constexpr base::StringPiece kKeyCreditCards = "credit-cards"; constexpr base::StringPiece kKeySource = "source"; +constexpr base::StringPiece kKeyNickname = "nickname"; constexpr auto kSourceMapping = base::MakeFixedFlatMap<base::StringPiece, AutofillProfile::Source>( {{"account", AutofillProfile::Source::kAccount}, @@ -119,9 +132,15 @@ LOG(ERROR) << "Unknown type " << key << "."; return absl::nullopt; } - profile.SetRawInfoWithVerificationStatus( - lookup_table.at(key), base::UTF8ToUTF16(value.GetString()), - VerificationStatus::kObserved); + if (ServerFieldType type = lookup_table.at(key); + IsAddressType(AutofillType(type))) { + profile.SetRawInfoWithVerificationStatus( + type, base::UTF8ToUTF16(value.GetString()), + VerificationStatus::kObserved); + } else { + LOG(ERROR) << "Profile description contains non profile-related types."; + return absl::nullopt; + } } if (!IsFullyStructuredProfile(profile)) { LOG(ERROR) << "Some profile is not fully structured."; @@ -130,83 +149,163 @@ return profile; } +absl::optional<CreditCard> MakeCard(const base::Value::Dict& dict, + const FieldTypeLookupTable& lookup_table) { + CreditCard card; + // `dict` is a dictionary of std::string -> base::Value. + for (const auto [key, value] : dict) { + if (key == kKeyNickname) { + card.SetNickname(base::UTF8ToUTF16(value.GetString())); + continue; + } + if (!lookup_table.contains(key)) { + LOG(ERROR) << "Unknown type " << key << "."; + return absl::nullopt; + } + if (ServerFieldType type = lookup_table.at(key); + GroupTypeOfServerFieldType(type) == FieldTypeGroup::kCreditCard) { + card.SetRawInfo(type, base::UTF8ToUTF16(value.GetString())); + } else { + LOG(ERROR) << "Credit card description contains non CC-related types."; + return absl::nullopt; + } + } + if (!card.IsValid()) { + LOG(ERROR) << "Some credit card is not valid."; + return absl::nullopt; + } + return card; +} + +// Sets all of the `pdm`'s profiles or credit cards to `profiles` or +// `credit_cards`, if the `pdm` still exists. +void SetData( + base::WeakPtr<PersonalDataManager> pdm, + absl::optional<AutofillProfilesAndCreditCards> profiles_or_credit_cards) { + // This check intentionally crashes when the data is malformed, to prevent + // testing with incorrect data. + CHECK(profiles_or_credit_cards.has_value() && + profiles_or_credit_cards->profiles.has_value() && + profiles_or_credit_cards->credit_cards.has_value()); + if (pdm == nullptr) { + return; + } + // If a list in `profiles_or_credit_cards` is empty, do not trigger the PDM + // because this will clear all corresponding existing data. + if (!profiles_or_credit_cards->profiles->empty()) { + pdm->SetProfilesForAllSources(&*profiles_or_credit_cards->profiles); + } + if (!profiles_or_credit_cards->credit_cards->empty()) { + pdm->SetCreditCards(&*profiles_or_credit_cards->credit_cards); + } +} + +// Converts all `entries of `json_array` to a vector of Ts using +// `to_data_model`. In case any conversion fails, nullopt is returned. +template <class T> +absl::optional<std::vector<T>> DataModelsFromJSON( + const base::Value::List* const json_array, + base::RepeatingCallback<absl::optional<T>(const base::Value::Dict&, + const FieldTypeLookupTable&)> + to_data_model) { + if (!json_array) { + return {}; + } + const auto lookup_table = MakeFieldTypeLookupTable(); + std::vector<T> data_models; + for (const base::Value& json : *json_array) { + if (!json.is_dict()) { + LOG(ERROR) << "Description is not a dictionary."; + return absl::nullopt; + } + absl::optional<T> data_model = + to_data_model.Run(json.GetDict(), lookup_table); + if (!data_model.has_value()) { + return absl::nullopt; + } + data_models.push_back(std::move(*data_model)); + } + return data_models; +} + // Parses AutofillProfiles from the JSON `content` string. // If parsing fails the error is logged and absl::nullopt is returned. -absl::optional<std::vector<AutofillProfile>> LoadProfilesFromJSONContent( - std::string content) { - if (absl::optional<base::Value> json = base::JSONReader::Read(content)) { - return AutofillProfilesFromJSON(*json); +absl::optional<AutofillProfilesAndCreditCards> LoadDataFromJSONContent( + const std::string& file_content) { + absl::optional<base::Value> json = base::JSONReader::Read(file_content); + if (!json.has_value()) { + LOG(ERROR) << "Failed to parse JSON file."; + return absl::nullopt; } - LOG(ERROR) << "Failed to parse JSON file."; - return absl::nullopt; + if (!json->is_dict()) { + LOG(ERROR) << "JSON is not a dictionary at it's top level."; + return absl::nullopt; + } + const base::Value::List* const profiles_json = + json->GetDict().FindList(kKeyProfiles); + const base::Value::List* const cards_json = + json->GetDict().FindList(kKeyCreditCards); + if (!cards_json && !profiles_json) { + LOG(ERROR) << "JSON has no " << kKeyProfiles << " or " << kKeyCreditCards + << " keys."; + return absl::nullopt; + } + return AutofillProfilesAndCreditCards{ + .profiles = AutofillProfilesFromJSON(profiles_json), + .credit_cards = CreditCardsFromJSON(cards_json)}; } -// Sets all of the `pdm`'s profiles to `profiles`, if the `pdm` still exists. -void SetProfiles(base::WeakPtr<PersonalDataManager> pdm, - absl::optional<std::vector<AutofillProfile>> profiles) { - CHECK(profiles.has_value()); - if (pdm) { - pdm->SetProfilesForAllSources(&*profiles); - } -} - -} // namespace - -absl::optional<std::vector<AutofillProfile>> LoadProfilesFromFile( +absl::optional<AutofillProfilesAndCreditCards> LoadDataFromFile( base::FilePath file) { std::string file_content; if (!base::ReadFileToString(file, &file_content)) { LOG(ERROR) << "Failed to read file " << file.MaybeAsASCII() << "."; return absl::nullopt; } - return LoadProfilesFromJSONContent(file_content); + return LoadDataFromJSONContent(file_content); +} + +} // namespace + +absl::optional<std::vector<AutofillProfile>> LoadProfilesFromFile( + base::FilePath file) { + if (absl::optional<AutofillProfilesAndCreditCards> profiles_and_credit_cards = + LoadDataFromFile(file)) { + return profiles_and_credit_cards->profiles; + } + return absl::nullopt; +} + +absl::optional<std::vector<CreditCard>> LoadCreditCardsFromFile( + base::FilePath file) { + if (absl::optional<AutofillProfilesAndCreditCards> profiles_and_credit_cards = + LoadDataFromFile(file)) { + return profiles_and_credit_cards->credit_cards; + } + return absl::nullopt; } absl::optional<std::vector<AutofillProfile>> AutofillProfilesFromJSON( - const base::Value& json) { - if (!json.is_dict()) { - LOG(ERROR) << "JSON is not a dictionary at it's top level."; - return absl::nullopt; - } - const base::Value::List* profiles_json = - json.GetDict().FindList(kKeyProfiles); - if (!profiles_json) { - LOG(ERROR) << "No " << kKeyProfiles << " key."; - return absl::nullopt; - } - - const auto kLookupTable = MakeFieldTypeLookupTable(); - std::vector<AutofillProfile> profiles_to_import; - for (const base::Value& profile_json : *profiles_json) { - if (!profile_json.is_dict()) { - LOG(ERROR) << "Profile description is not a dictionary."; - return absl::nullopt; - } - absl::optional<AutofillProfile> profile = - MakeProfile(profile_json.GetDict(), kLookupTable); - if (!profile.has_value()) { - return absl::nullopt; - } - profiles_to_import.push_back(*profile); - } - return profiles_to_import; + const base::Value::List* const profiles_json) { + return DataModelsFromJSON(profiles_json, base::BindRepeating(&MakeProfile)); } -void MaybeImportProfilesForManualTesting( - base::WeakPtr<PersonalDataManager> pdm) { +absl::optional<std::vector<CreditCard>> CreditCardsFromJSON( + const base::Value::List* const cards_json) { + return DataModelsFromJSON(cards_json, base::BindRepeating(&MakeCard)); +} + +void MaybeImportDataForManualTesting(base::WeakPtr<PersonalDataManager> pdm) { const auto* kCommandLine = base::CommandLine::ForCurrentProcess(); - if (kCommandLine->HasSwitch(kManualProfileImportForTestingFlag)) { + if (kCommandLine->HasSwitch(kManualFileImportForTestingFlag)) { base::ThreadPool::PostTaskAndReplyWithResult( FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()}, - base::BindOnce(&LoadProfilesFromFile, - kCommandLine->GetSwitchValuePath( - kManualProfileImportForTestingFlag)), - base::BindOnce(&SetProfiles, pdm)); - } else if (kCommandLine->HasSwitch( - kManualProfileContentImportForTestingFlag)) { - SetProfiles(pdm, - LoadProfilesFromJSONContent(kCommandLine->GetSwitchValueASCII( - kManualProfileContentImportForTestingFlag))); + base::BindOnce(&LoadDataFromFile, kCommandLine->GetSwitchValuePath( + kManualFileImportForTestingFlag)), + base::BindOnce(&SetData, pdm)); + } else if (kCommandLine->HasSwitch(kManualContentImportForTestingFlag)) { + SetData(pdm, LoadDataFromJSONContent(kCommandLine->GetSwitchValueASCII( + kManualContentImportForTestingFlag))); } }
diff --git a/components/autofill/core/browser/manual_testing_profile_import.h b/components/autofill/core/browser/manual_testing_profile_import.h index 67e7762..0aa2ca7 100644 --- a/components/autofill/core/browser/manual_testing_profile_import.h +++ b/components/autofill/core/browser/manual_testing_profile_import.h
@@ -5,7 +5,6 @@ #ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_MANUAL_TESTING_PROFILE_IMPORT_H_ #define COMPONENTS_AUTOFILL_CORE_BROWSER_MANUAL_TESTING_PROFILE_IMPORT_H_ -#include <string> #include <vector> #include "base/memory/weak_ptr.h" @@ -18,10 +17,11 @@ // Command line flags that enable importing AutofillProfiles for manual testing: // --autofill-profiles-content-for-manual-testing -// Expects profile descriptions as a string in JSON format. +// Expects profile and credit card descriptions as a string in JSON +// format. // --autofill-profiles-for-manual-testing // The same as above, but instead of the JSON content, expects the path -// to a file with profile descriptions in JSON format. +// to a file with profile and credit card descriptions in JSON format. // The following format is expected: // { // "profiles" : [ @@ -32,6 +32,13 @@ // ... // }, // ... +// ], +// "credit-cards" : [ +// { +// "nickname" : "...", +// "field-type" : "value", +// ... +// } // ] // } // The "source" is optional and can either be "account" or "localOrSyncable". @@ -39,44 +46,60 @@ // default to "localOrSyncable". // The "initial_creator_id" is an optional int value which sets the profile's // property of the same name. -// "field-type" corresponds to ServerFieldTypes like "NAME_FULL". -// All profiles specified in the file are imported. They replace any existing -// profiles. -// The profiles are expected to be fully structured -constexpr char kManualProfileImportForTestingFlag[] = +// The "nickname" in credit cards optional as well. +// "field-type" corresponds to ServerFieldTypes like "NAME_FULL". For profiles +// and credit cards, only field types valid for AutofillProfile or CreditCard +// are accepted. +// All profiles and credit cards specified in the file are imported. They +// replace any existing data. +// The profiles are expected to be fully structured. +// TODO(crbug/1413177): remove `profiles` from flags' name. +constexpr char kManualFileImportForTestingFlag[] = "autofill-profiles-for-manual-testing"; -constexpr char kManualProfileContentImportForTestingFlag[] = +constexpr char kManualContentImportForTestingFlag[] = "autofill-profiles-content-for-manual-testing"; // Reads the contents of `file`, parses it as a JSON file and converts its -// content into AutofillProfiles. +// content into a list of AutofillProfiles. // If any step fails, an error message is logged and absl::nullopt is returned. absl::optional<std::vector<AutofillProfile>> LoadProfilesFromFile( base::FilePath file); -// Given a description of fully structured profiles in the aforementioned -// JSON format, converts it to a vector of AutofillProfiles. If the JSON -// doesn't adhere to the above format, or if any of the profiles is not -// fully structured, an error is logged and absl::nullopt is returned. A -// profile is considered "fully structured" if `FinalizeAfterImport()` -// doesn't change it. This condition exists to prevent profiles from -// silently changing, since `FinalizeAfterImport()` is called when -// retrieving a profile from the database. For example, if the structure is -// invalid because the last name is not part of the full name, the routine -// will clear this information. -absl::optional<std::vector<AutofillProfile>> AutofillProfilesFromJSON( - const base::Value& json); +// Reads the contents of `file`, parses it as a JSON file and converts its +// content into a list of CreditCards. +// If any step fails, an error message is logged and absl::nullopt is returned. +absl::optional<std::vector<CreditCard>> LoadCreditCardsFromFile( + base::FilePath file); -// Checks if the `kManualProfileImportForTestingFlag` flag is present. If so, -// reads the specified file, parses the profile description and imports the -// profiles into the `pdm`. +// Given the array of descriptions of fully structured profiles in the +// aforementioned JSON format, converts it to a vector of AutofillProfiles. +// If the JSON list doesn't adhere to the above format, or if any of the +// profiles is not fully structured, an error is logged and absl::nullopt is +// returned. A profile is considered "fully structured" if +// `FinalizeAfterImport()` doesn't change it. This condition exists to prevent +// profiles from silently changing, since `FinalizeAfterImport()` is called when +// retrieving a profile from the database. For example, if the structure is +// invalid because the last name is not part of the full name, the routine will +// clear this information. +absl::optional<std::vector<AutofillProfile>> AutofillProfilesFromJSON( + const base::Value::List* const profiles_json); + +// Given the array of valid credit cards in the aforementioned JSON format, +// converts it to a vector of CreditCards. +// If the JSON list doesn't adhere to the above format, an error message is +// logged and absl::nullopt is returned. +absl::optional<std::vector<CreditCard>> CreditCardsFromJSON( + const base::Value::List* const cards_json); + +// Checks if the `kManualImportForTestingFlag` flag is present. If so, +// reads the specified file, parses the profiles and credit cards description +// and imports them into the `pdm`. // In case the import fails, an error message is logged and the browser -// intentionally exist ungracefully. This is to prevent manual testing with +// intentionally exits ungracefully. This is to prevent manual testing with // incorrect data. // Since importing is done in a separate thread, the `pdm` is passed as a weak // ptr. It is updated once the import has finished. -void MaybeImportProfilesForManualTesting( - base::WeakPtr<PersonalDataManager> pdm); +void MaybeImportDataForManualTesting(base::WeakPtr<PersonalDataManager> pdm); } // namespace autofill
diff --git a/components/autofill/core/browser/manual_testing_profile_import_unittest.cc b/components/autofill/core/browser/manual_testing_profile_import_unittest.cc index 94e7a9f..08e365e 100644 --- a/components/autofill/core/browser/manual_testing_profile_import_unittest.cc +++ b/components/autofill/core/browser/manual_testing_profile_import_unittest.cc
@@ -2,18 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <vector> + #include "components/autofill/core/browser/manual_testing_profile_import.h" + #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" - #include "base/json/json_reader.h" #include "base/values.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 "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "testing/platform_test.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace autofill { @@ -23,13 +25,13 @@ // Matches two AutofillProfiles and expects that they `Compare()` equal. This // means that their values and verification statuses match for every field type, // but their GUID, usage data, etc might differ. -MATCHER(ProfilesCompareEqual, "") { +MATCHER(DataModelsCompareEqual, "") { return std::get<0>(arg).Compare(std::get<1>(arg)) == 0; } } // namespace -class ManualTestingProfileImportTest : public testing::Test { +class ManualTestingImportTest : public testing::Test { void SetUp() override { ASSERT_TRUE(scoped_temp_dir.CreateUniqueTempDir()); } public: @@ -41,12 +43,141 @@ }; // Tests that profiles are converted correctly. -TEST_F(ManualTestingProfileImportTest, LoadProfilesFromFile_Valid) { +TEST_F(ManualTestingImportTest, LoadCreditCardsFromFile_Valid) { + base::FilePath file_path = GetFilePath(); + base::WriteFile(file_path, R"({ + "credit-cards" : [ + { + "CREDIT_CARD_NAME_FULL" : "first1 last1", + "CREDIT_CARD_NAME_FIRST" : "first1", + "CREDIT_CARD_NAME_LAST" : "last1", + "CREDIT_CARD_NUMBER" : "4111111111111111", + "CREDIT_CARD_EXP_MONTH" : "10", + "CREDIT_CARD_EXP_2_DIGIT_YEAR" : "27", + "CREDIT_CARD_VERIFICATION_CODE" : "123" + }, + { + "nickname" : "some nickname", + "CREDIT_CARD_NAME_FULL" : "first2 last2", + "CREDIT_CARD_NAME_FIRST" : "first2", + "CREDIT_CARD_NAME_LAST" : "last2", + "CREDIT_CARD_NUMBER" : "6011111111111117", + "CREDIT_CARD_EXP_MONTH" : "10", + "CREDIT_CARD_EXP_2_DIGIT_YEAR" : "27", + "CREDIT_CARD_VERIFICATION_CODE" : "321" + } + ] + })"); + + CreditCard expected_card1; + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_FULL, u"first1 last1", + VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_FIRST, u"first1", VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_LAST, u"last1", VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NUMBER, u"4111111111111111", + VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_EXP_MONTH, u"10", VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_EXP_2_DIGIT_YEAR, u"27", VerificationStatus::kUserVerified); + expected_card1.SetRawInfoWithVerificationStatus( + CREDIT_CARD_VERIFICATION_CODE, u"123", VerificationStatus::kUserVerified); + + CreditCard expected_card2; + expected_card2.SetNickname(u"some nickname"); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_FULL, u"first2 last2", + VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_FIRST, u"first2", VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NAME_LAST, u"last2", VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_NUMBER, u"6011111111111117", + VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_EXP_MONTH, u"10", VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_EXP_2_DIGIT_YEAR, u"27", VerificationStatus::kUserVerified); + expected_card2.SetRawInfoWithVerificationStatus( + CREDIT_CARD_VERIFICATION_CODE, u"321", VerificationStatus::kUserVerified); + + absl::optional<std::vector<CreditCard>> loaded_cards = + LoadCreditCardsFromFile(file_path); + EXPECT_THAT(loaded_cards, + testing::Optional(testing::Pointwise( + DataModelsCompareEqual(), {expected_card1, expected_card2}))); +} + +// Tests that the conversion fails when a non-CC type is passed for a credit +// card. +TEST_F(ManualTestingImportTest, LoadCreditCardsFromFile_Invalid_NoDictionary) { + base::FilePath file_path = GetFilePath(); + base::WriteFile(file_path, R"([ + "4111111111111111", + "10", + "27", + "street-address" + ])"); + EXPECT_FALSE(LoadCreditCardsFromFile(file_path).has_value()); +} + +// Tests that the conversion fails when a non-CC type is passed for a credit +// card. +TEST_F(ManualTestingImportTest, + LoadCreditCardsFromFile_Invalid_NonRelatedType) { + base::FilePath file_path = GetFilePath(); + base::WriteFile(file_path, R"({ + "credit-cards" : [ + { + "CREDIT_CARD_NUMBER" : "4111111111111111", + "CREDIT_CARD_EXP_MONTH" : "10", + "CREDIT_CARD_EXP_2_DIGIT_YEAR" : "27", + "ADDRESS_HOME_STREET_ADDRESS" : "street-address" + } + ] + })"); + + EXPECT_FALSE(LoadCreditCardsFromFile(file_path).has_value()); +} + +// Tests that the conversion fails when an unrecognized field type is present. +TEST_F(ManualTestingImportTest, + LoadCreditCardsFromFile_Invalid_UnrecognizedType) { + base::FilePath file_path = GetFilePath(); + base::WriteFile(file_path, R"({ + "credit-cards" : [ + { + "CREDIT_CARD_NAME_LOST" : "..." + } + ] + })"); + EXPECT_FALSE(LoadCreditCardsFromFile(file_path).has_value()); +} + +// Tests that the conversion fails when an invalid description is provided. +TEST_F(ManualTestingImportTest, LoadCreditCardsFromFile_NotValid) { + base::FilePath file_path = GetFilePath(); + base::WriteFile(file_path, R"({ + "credit-cards" : [ + { + "CREDIT_CARD_NAME_FULL" : "first last" + } + ] + })"); + EXPECT_FALSE(LoadCreditCardsFromFile(file_path).has_value()); +} + +// Tests that profiles are converted correctly. +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Valid) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"({ "profiles" : [ { - "source" : "localOrSyncable", "NAME_FULL" : "first last", "NAME_FIRST" : "first", "NAME_LAST" : "last" @@ -82,19 +213,18 @@ EXPECT_THAT( LoadProfilesFromFile(file_path), testing::Optional(testing::Pointwise( - ProfilesCompareEqual(), {expected_profile1, expected_profile2}))); + DataModelsCompareEqual(), {expected_profile1, expected_profile2}))); } // Tests that conversion fails when the file doesn't exist -TEST_F(ManualTestingProfileImportTest, +TEST_F(ManualTestingImportTest, AutofillProfileFromJSON_Invalid_FailedToOpenFile) { EXPECT_FALSE(LoadProfilesFromFile(GetFilePath()).has_value()); } // Tests that the conversion fails when the passed JSON file isn't a dictionary // at its top level. -TEST_F(ManualTestingProfileImportTest, - LoadProfilesFromFile_Invalid_NotDictionary) { +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Invalid_NotDictionary) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"([ "first last" @@ -103,7 +233,7 @@ } // Tests that the conversion fails when the passed JSON file isn't valid. -TEST_F(ManualTestingProfileImportTest, +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Invalid_FailedToParseJSON) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"([ @@ -113,8 +243,7 @@ } // Tests that the conversion fails when an unrecognized field type is present. -TEST_F(ManualTestingProfileImportTest, - LoadProfilesFromFile_Invalid_UnrecognizedType) { +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Invalid_UnrecognizedType) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"({ "profiles" : [ @@ -127,7 +256,7 @@ } // Tests that the conversion fails when the "source" has an unrecognized value. -TEST_F(ManualTestingProfileImportTest, +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Invalid_UnrecognizedSource) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"({ @@ -142,10 +271,9 @@ // Tests that the conversion fails when the "initial_creator_id" has // an invalid value. -TEST_F(ManualTestingProfileImportTest, - LoadProfilesFromFile_InvalidInitialCreatorId) { +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_InvalidInitialCreatorId) { base::FilePath file_path1 = - scoped_temp_dir.GetPath().Append(FILE_PATH_LITERAL("test_file_1.json")); + scoped_temp_dir.GetPath().Append(FILE_PATH_LITERAL("test_file1.json")); base::WriteFile(file_path1, R"({ "profiles" : [ { @@ -156,7 +284,7 @@ EXPECT_FALSE(LoadProfilesFromFile(file_path1).has_value()); base::FilePath file_path2 = - scoped_temp_dir.GetPath().Append(FILE_PATH_LITERAL("test_file_2.json")); + scoped_temp_dir.GetPath().Append(FILE_PATH_LITERAL("test_file2.json")); base::WriteFile(file_path2, R"({ "profiles" : [ { @@ -168,7 +296,7 @@ } // Tests that the conversion fails for non-fully structured profiles. -TEST_F(ManualTestingProfileImportTest, +TEST_F(ManualTestingImportTest, LoadProfilesFromFile_Invalid_NotFullyStructured) { base::FilePath file_path = GetFilePath(); base::WriteFile(file_path, R"({
diff --git a/components/autofill/core/browser/metrics/form_events/credit_card_form_event_logger.cc b/components/autofill/core/browser/metrics/form_events/credit_card_form_event_logger.cc index 67f509e..c4fe5440 100644 --- a/components/autofill/core/browser/metrics/form_events/credit_card_form_event_logger.cc +++ b/components/autofill/core/browser/metrics/form_events/credit_card_form_event_logger.cc
@@ -72,6 +72,12 @@ ? FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN : FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN, form); + if (!has_logged_suggestion_with_metadata_shown_) { + Log(metadata_logging_context_.card_metadata_available + ? FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN_ONCE + : FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN_ONCE, + form); + } // Log issuer-specific metrics on whether metadata was shown. LogCardWithMetadataFormEventMetric( autofill_metrics::CardMetadataLoggingEvent::kShown, @@ -128,6 +134,12 @@ ? FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED : FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED, form); + if (!has_logged_suggestion_with_metadata_selected_) { + Log(metadata_logging_context_.card_metadata_available + ? FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED_ONCE + : FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED_ONCE, + form); + } LogCardWithMetadataFormEventMetric( autofill_metrics::CardMetadataLoggingEvent::kSelected, metadata_logging_context_,
diff --git a/components/autofill/core/browser/metrics/form_events/form_events.h b/components/autofill/core/browser/metrics/form_events/form_events.h index e202aad..f74a87b 100644 --- a/components/autofill/core/browser/metrics/form_events/form_events.h +++ b/components/autofill/core/browser/metrics/form_events/form_events.h
@@ -158,11 +158,24 @@ // DenseSet<FormEvent> and passing it to a UKM builder. FORM_EVENT_RESERVED_NOT_FOR_USE = 63, - // The number of events is temporarily rounded up to 64 to prepare the code - // for passing this threshold (UKM events are uploaded as uint64 blocks of a - // bit mask). Once we pass the 64 threshold, this should reflect the real last - // value. - NUM_FORM_EVENTS = 64, + // Credit card suggestions were shown, and they included at least one + // suggestion with metadata. Logged once per page load. + FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN_ONCE = 64, + // Credit card suggestions were shown, and none had metadata. Logged once per + // page load. + FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN_ONCE = 65, + // The selected credit card suggestion had metadata. Logged once per page + // load. + FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED_ONCE = 66, + // The selected credit card suggestion did not have metadata. Logged once per + // page load. + FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED_ONCE = 67, + + // Next form event should use 62 if possible. One note is that if the newly + // added events are a group of related events, maybe it is easier to continue + // using 68 to make sure they are in the same UKM metric. + + NUM_FORM_EVENTS, }; } // namespace autofill::autofill_metrics
diff --git a/components/autofill/core/browser/metrics/payments/card_metadata_metrics.cc b/components/autofill/core/browser/metrics/payments/card_metadata_metrics.cc index 0d5850a..709b32d 100644 --- a/components/autofill/core/browser/metrics/payments/card_metadata_metrics.cc +++ b/components/autofill/core/browser/metrics/payments/card_metadata_metrics.cc
@@ -53,6 +53,17 @@ return std::string(); } +// Returns true when the card has rich card art, excluding any static card art +// image. +bool HasRichCardArtImageFromMetadata(const CreditCard& card) { + return card.card_art_url().is_valid() && + card.card_art_url().spec() != + (base::FeatureList::IsEnabled( + features::kAutofillEnableNewCardArtAndNetworkImages) + ? kCapitalOneLargeCardArtUrl + : kCapitalOneCardArtUrl); +} + } // namespace CardMetadataLoggingContext::CardMetadataLoggingContext() = default; @@ -65,49 +76,40 @@ CardMetadataLoggingContext GetMetadataLoggingContext( const std::vector<CreditCard>& cards) { CardMetadataLoggingContext metadata_logging_context; - bool card_product_description_available = false; - bool card_art_image_available = false; - bool virtual_card_with_card_art_image = false; for (const CreditCard& card : cards) { if (card.issuer_id().empty()) { continue; } + // If there is a product description, denote in the + // `metadata_logging_context` that we have shown at least one product + // description so we can log it later. if (!card.product_description().empty()) { - card_product_description_available = true; + metadata_logging_context.card_product_description_shown = + base::FeatureList::IsEnabled( + features::kAutofillEnableCardProductName); } - if (card.card_art_url().is_valid()) { - card_art_image_available = true; - if (card.virtual_card_enrollment_state() == - CreditCard::VirtualCardEnrollmentState::ENROLLED) { - virtual_card_with_card_art_image = true; - } + // If there is rich card art we received from the metadata for this card, + // denote in the `metadata_logging_context` that we have shown an enriched + // card art so we can log it later. + if (HasRichCardArtImageFromMetadata(card)) { + metadata_logging_context.card_art_image_shown = + base::FeatureList::IsEnabled(features::kAutofillEnableCardArtImage); } - bool card_has_metadata = - !card.product_description().empty() || card.card_art_url().is_valid(); + bool card_has_metadata = !card.product_description().empty() || + HasRichCardArtImageFromMetadata(card); metadata_logging_context .issuer_to_metadata_availability[card.issuer_id()] |= card_has_metadata; + // If there is at least one card having product description or rich card + // art, denote in the `metadata_logging_context`. + if (card_has_metadata) { + metadata_logging_context.card_metadata_available = true; + } } - metadata_logging_context.card_metadata_available = - card_product_description_available || card_art_image_available; - - metadata_logging_context.card_product_description_shown = - card_product_description_available && - base::FeatureList::IsEnabled(features::kAutofillEnableCardProductName); - - // `card_art_image_shown` is set to true if art image is available and - // 1. the experiment is enabled or - // 2. the card with art image has a linked virtual card (for virtual cards, - // the card art image is always shown if available). - metadata_logging_context.card_art_image_shown = - card_art_image_available && - (base::FeatureList::IsEnabled(features::kAutofillEnableCardArtImage) || - virtual_card_with_card_art_image); - return metadata_logging_context; }
diff --git a/components/autofill/core/browser/metrics/payments/card_metadata_metrics_unittest.cc b/components/autofill/core/browser/metrics/payments/card_metadata_metrics_unittest.cc index ea7ed62..ee1912cc 100644 --- a/components/autofill/core/browser/metrics/payments/card_metadata_metrics_unittest.cc +++ b/components/autofill/core/browser/metrics/payments/card_metadata_metrics_unittest.cc
@@ -6,6 +6,7 @@ #include "base/test/metrics/histogram_tester.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/metrics/autofill_metrics_test_base.h" +#include "components/autofill/core/browser/payments/constants.h" #include "components/autofill/core/browser/test_autofill_tick_clock.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -23,18 +24,19 @@ // Params: // 1. Whether card issuer is available. // 2. Whether card metadata is available. +// 3. Whether card has a static card art image (instead of the rich card art +// from metadata). class CardMetadataFormEventMetricsTest : public AutofillMetricsBaseTest, public testing::Test, - public testing::WithParamInterface<std::tuple<bool, bool>> { + public testing::WithParamInterface<std::tuple<bool, bool, bool>> { public: - CardMetadataFormEventMetricsTest() - : card_issuer_available_(std::get<0>(GetParam())), - card_metadata_available_(std::get<1>(GetParam())) {} + CardMetadataFormEventMetricsTest() = default; ~CardMetadataFormEventMetricsTest() override = default; - bool card_issuer_available() const { return card_issuer_available_; } - bool card_metadata_available() const { return card_metadata_available_; } + bool card_issuer_available() const { return std::get<0>(GetParam()); } + bool card_metadata_available() const { return std::get<1>(GetParam()); } + bool card_has_static_art_image() const { return std::get<2>(GetParam()); } FormData form() { return form_; } @@ -51,12 +53,18 @@ .action = ""}); // Add a masked server card. - CreditCard card = test::GetRandomCreditCard(CreditCard::MASKED_SERVER_CARD); + CreditCard card = test::GetMaskedServerCard(); card.set_guid(kCardGuid); if (card_issuer_available()) { - card.set_issuer_id("amex"); + card.set_issuer_id(kCapitalOneCardIssuerId); } - // Set metadata to card. + if (card_has_static_art_image()) { + card.set_card_art_url(GURL(kCapitalOneCardArtUrl)); + } + // Set metadata to card. The `card_art_url` will be overriden with rich card + // art url regarless of `card_has_static_art_image()` in the test set-up, + // because rich card art, if available, is preferred by Payments server and + // will be sent to the client . if (card_metadata_available()) { card.set_product_description(u"card_description"); card.set_card_art_url(GURL("https://www.example.com/cardart.png")); @@ -68,14 +76,14 @@ void TearDown() override { TearDownHelper(); } private: - const bool card_issuer_available_; - const bool card_metadata_available_; FormData form_; }; INSTANTIATE_TEST_SUITE_P(All, CardMetadataFormEventMetricsTest, - testing::Combine(testing::Bool(), testing::Bool())); + testing::Combine(testing::Bool(), + testing::Bool(), + testing::Bool())); // Test metadata shown metrics are correctly logged. TEST_P(CardMetadataFormEventMetricsTest, LogShownMetrics) { @@ -86,38 +94,61 @@ autofill_manager().DidShowSuggestions(/*has_autofill_suggestions=*/true, form(), form().fields.back()); + const bool should_log_for_metadata = + card_issuer_available() && card_metadata_available(); // Verify that: // 1. if the card suggestion shown had issuer id and metadata, - // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN` is logged. - // 2. if the card suggestion shown did not have either issuer id or metadata, - // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN` is logged. - // 3. if the card suggestion shown had issuer id, a histogram is logged which - // tells if the card from the issuer had metadata. - EXPECT_THAT( - histogram_tester.GetAllSamples("Autofill.FormEvents.CreditCard"), - BucketsInclude( - Bucket(FORM_EVENT_SUGGESTIONS_SHOWN, 1), - Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN, - card_issuer_available() && card_metadata_available()), - Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN, - !card_issuer_available() || !card_metadata_available()))); + // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN` is logged as many times + // as the suggestions are shown, and + // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN_ONCE` is logged only + // once. + // 2. if the card suggestion shown did not have either issuer id or metadata, + // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN` is logged as many times + // as the suggestions are shown, and + // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN_ONCE` is logged only + // once. + // 3. if the card suggestion shown had issuer id, two histograms are logged + // which tells if the card from the issuer had metadata. + EXPECT_THAT(histogram_tester.GetAllSamples("Autofill.FormEvents.CreditCard"), + BucketsInclude( + Bucket(FORM_EVENT_SUGGESTIONS_SHOWN, 1), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN, + should_log_for_metadata ? 1 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN, + should_log_for_metadata ? 0 : 1), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN_ONCE, + should_log_for_metadata ? 1 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN_ONCE, + should_log_for_metadata ? 0 : 1))); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.ShownWithMetadata", card_metadata_available(), - card_issuer_available() ? 1 : 0); + "Autofill.CreditCard.CapitalOne.ShownWithMetadata", + card_metadata_available(), card_issuer_available() ? 1 : 0); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.ShownWithMetadataOnce", + "Autofill.CreditCard.CapitalOne.ShownWithMetadataOnce", card_metadata_available(), card_issuer_available() ? 1 : 0); // Show the popup again. autofill_manager().OnAskForValuesToFillTest(form(), form().fields.back()); autofill_manager().DidShowSuggestions(/*has_autofill_suggestions=*/true, form(), form().fields.back()); + + EXPECT_THAT(histogram_tester.GetAllSamples("Autofill.FormEvents.CreditCard"), + BucketsInclude( + Bucket(FORM_EVENT_SUGGESTIONS_SHOWN, 2), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN, + should_log_for_metadata ? 2 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN, + should_log_for_metadata ? 0 : 2), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SHOWN_ONCE, + should_log_for_metadata ? 1 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SHOWN_ONCE, + should_log_for_metadata ? 0 : 1))); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.ShownWithMetadata", card_metadata_available(), - card_issuer_available() ? 2 : 0); + "Autofill.CreditCard.CapitalOne.ShownWithMetadata", + card_metadata_available(), card_issuer_available() ? 2 : 0); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.ShownWithMetadataOnce", + "Autofill.CreditCard.CapitalOne.ShownWithMetadataOnce", card_metadata_available(), card_issuer_available() ? 1 : 0); } @@ -134,26 +165,38 @@ MakeFrontendId({.credit_card_id = kCardGuid}), AutofillTriggerSource::kPopup); + const bool should_log_for_metadata = + card_issuer_available() && card_metadata_available(); // Verify that: // 1. if the selected card had issuer id and metadata, - // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED` is logged. + // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED` is logged as many times + // as the suggestions are shown, and + // `FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED_ONCE` is logged only + // once. // 2. if the selected card did not have either issuer id or metadata, - // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED` is logged. - // 3. if the selected card had issuer id, a histogram is logged which tells if - // the card from the issuer had metadata. + // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED` is logged as many + // times as the suggestions are shown, and + // `FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED_ONCE` is logged only + // once. + // 3. if the selected card had issuer id, two histogram are logged which tells + // if the card from the issuer had metadata. EXPECT_THAT( histogram_tester.GetAllSamples("Autofill.FormEvents.CreditCard"), BucketsInclude( Bucket(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 1), Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED, - card_issuer_available() && card_metadata_available()), + should_log_for_metadata ? 1 : 0), Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED, - !card_issuer_available() || !card_metadata_available()))); + should_log_for_metadata ? 0 : 1), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED_ONCE, + should_log_for_metadata ? 1 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED_ONCE, + should_log_for_metadata ? 0 : 1))); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.SelectedWithMetadata", + "Autofill.CreditCard.CapitalOne.SelectedWithMetadata", card_metadata_available(), card_issuer_available() ? 1 : 0); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.SelectedWithMetadataOnce", + "Autofill.CreditCard.CapitalOne.SelectedWithMetadataOnce", card_metadata_available(), card_issuer_available() ? 1 : 0); // Select the suggestion again. @@ -161,11 +204,24 @@ mojom::RendererFormDataAction::kFill, form(), form().fields.back(), MakeFrontendId({.credit_card_id = kCardGuid}), AutofillTriggerSource::kPopup); + + EXPECT_THAT( + histogram_tester.GetAllSamples("Autofill.FormEvents.CreditCard"), + BucketsInclude( + Bucket(FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SELECTED, 2), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED, + should_log_for_metadata ? 2 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED, + should_log_for_metadata ? 0 : 2), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITH_METADATA_SELECTED_ONCE, + should_log_for_metadata ? 1 : 0), + Bucket(FORM_EVENT_CARD_SUGGESTION_WITHOUT_METADATA_SELECTED_ONCE, + should_log_for_metadata ? 0 : 1))); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.SelectedWithMetadata", + "Autofill.CreditCard.CapitalOne.SelectedWithMetadata", card_metadata_available(), card_issuer_available() ? 2 : 0); histogram_tester.ExpectUniqueSample( - "Autofill.CreditCard.Amex.SelectedWithMetadataOnce", + "Autofill.CreditCard.CapitalOne.SelectedWithMetadataOnce", card_metadata_available(), card_issuer_available() ? 1 : 0); } @@ -179,27 +235,22 @@ public testing::Test, public testing::WithParamInterface<std::tuple<bool, bool, bool, bool>> { public: - CardMetadataLatencyMetricsTest() - : card_product_name_enabled_(std::get<0>(GetParam())), - card_art_image_enabled_(std::get<1>(GetParam())), - card_metadata_available_(std::get<2>(GetParam())), - card_has_linked_virtual_card_(std::get<3>(GetParam())) { - feature_list_card_product_name_.InitWithFeatureState( - features::kAutofillEnableCardProductName, card_product_name_enabled_); - feature_list_card_art_image_.InitWithFeatureState( - features::kAutofillEnableCardArtImage, card_art_image_enabled_); - } + CardMetadataLatencyMetricsTest() = default; ~CardMetadataLatencyMetricsTest() override = default; - bool card_product_name_enabled() { return card_product_name_enabled_; } - bool card_art_image_enabled() { return card_art_image_enabled_; } - bool card_metadata_available() { return card_metadata_available_; } - bool card_has_linked_virtual_card() { return card_has_linked_virtual_card_; } + bool card_product_name_enabled() { return std::get<0>(GetParam()); } + bool card_art_image_enabled() { return std::get<1>(GetParam()); } + bool card_metadata_available() { return std::get<2>(GetParam()); } + bool card_has_static_art_image() { return std::get<3>(GetParam()); } FormData form() { return form_; } void SetUp() override { SetUpHelper(); + feature_list_card_product_name_.InitWithFeatureState( + features::kAutofillEnableCardProductName, card_product_name_enabled()); + feature_list_card_art_image_.InitWithFeatureState( + features::kAutofillEnableCardArtImage, card_art_image_enabled()); // Set up the form data. Reset form action to skip the IsFormMixedContent // check. form_ = @@ -212,13 +263,14 @@ CreditCard masked_server_card = test::GetMaskedServerCard(); masked_server_card.set_guid(kTestMaskedCardId); - masked_server_card.set_issuer_id("capitalone"); - if (card_has_linked_virtual_card()) { - masked_server_card.set_virtual_card_enrollment_state( - CreditCard::VirtualCardEnrollmentState::ENROLLED); - masked_server_card.set_card_art_url( - GURL("https://www.example.com/cardart.png")); + masked_server_card.set_issuer_id(kCapitalOneCardIssuerId); + if (card_has_static_art_image()) { + masked_server_card.set_card_art_url(GURL(kCapitalOneCardArtUrl)); } + // If metadata is available, the `card_art_url` will be overriden with rich + // card art url regarless of `card_has_static_art_image()` in the test + // set-up, because rich card art, if available, is preferred by Payments + // server and will be sent to the client. if (card_metadata_available()) { masked_server_card.set_product_description(u"card_description"); masked_server_card.set_card_art_url( @@ -231,10 +283,6 @@ void TearDown() override { TearDownHelper(); } private: - const bool card_product_name_enabled_; - const bool card_art_image_enabled_; - const bool card_metadata_available_; - const bool card_has_linked_virtual_card_; base::test::ScopedFeatureList feature_list_card_product_name_; base::test::ScopedFeatureList feature_list_card_art_image_; FormData form_; @@ -274,20 +322,17 @@ // Card art image is shown when 1. card_has_linked_virtual_card() or // 2. card_metadata_available() and card_art_image_enabled() both return true. if (card_metadata_available()) { - if (card_product_name_enabled() && - (card_art_image_enabled() || card_has_linked_virtual_card())) { + if (card_product_name_enabled() && card_art_image_enabled()) { latency_histogram_suffix = autofill_metrics::kProductNameAndArtImageBothShownSuffix; } else if (card_product_name_enabled()) { latency_histogram_suffix = autofill_metrics::kProductNameShownOnlySuffix; - } else if (card_art_image_enabled() || card_has_linked_virtual_card()) { + } else if (card_art_image_enabled()) { latency_histogram_suffix = autofill_metrics::kArtImageShownOnlySuffix; } else { latency_histogram_suffix = autofill_metrics::kProductNameAndArtImageNotShownSuffix; } - } else if (card_has_linked_virtual_card()) { - latency_histogram_suffix = autofill_metrics::kArtImageShownOnlySuffix; } else { latency_histogram_suffix = autofill_metrics::kProductNameAndArtImageNotShownSuffix;
diff --git a/components/autofill/core/browser/payments/autofill_payments_feature_availability.cc b/components/autofill/core/browser/payments/autofill_payments_feature_availability.cc new file mode 100644 index 0000000..89999d6 --- /dev/null +++ b/components/autofill/core/browser/payments/autofill_payments_feature_availability.cc
@@ -0,0 +1,21 @@ +// Copyright 2023 The Chromium Authors +// 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/payments/autofill_payments_feature_availability.h" + +#include "components/autofill/core/browser/data_model/credit_card.h" +#include "components/autofill/core/common/autofill_payments_features.h" + +namespace autofill { + +bool ShouldShowCardMetadata(const CreditCard& card) { + // The product name and the art image must both be valid. + return !card.product_description().empty() && + card.card_art_url().is_valid() && + base::FeatureList::IsEnabled( + features::kAutofillEnableCardProductName) && + base::FeatureList::IsEnabled(features::kAutofillEnableCardArtImage); +} + +} // namespace autofill
diff --git a/components/autofill/core/browser/payments/autofill_payments_feature_availability.h b/components/autofill/core/browser/payments/autofill_payments_feature_availability.h new file mode 100644 index 0000000..b923751 --- /dev/null +++ b/components/autofill/core/browser/payments/autofill_payments_feature_availability.h
@@ -0,0 +1,21 @@ +// Copyright 2023 The Chromium Authors +// 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_PAYMENTS_AUTOFILL_PAYMENTS_FEATURE_AVAILABILITY_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_AUTOFILL_PAYMENTS_FEATURE_AVAILABILITY_H_ + +namespace autofill { + +class CreditCard; + +// Returns whether the `card` is populated with a card art image and a card +// product name and whether they both should be shown. +bool ShouldShowCardMetadata(const CreditCard& card); + +// TODO(crbug.com/1431355): Move here payments related feature availability +// checks from autofill_experiments. + +} // namespace autofill + +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_AUTOFILL_PAYMENTS_FEATURE_AVAILABILITY_H_
diff --git a/components/autofill/core/browser/payments/client_behavior_constants.h b/components/autofill/core/browser/payments/client_behavior_constants.h index 8eb40a2a..66dd522 100644 --- a/components/autofill/core/browser/payments/client_behavior_constants.h +++ b/components/autofill/core/browser/payments/client_behavior_constants.h
@@ -21,6 +21,11 @@ // from M113 onwards as this retrieves the correct TOS footer for // FasterAndProtected bubble. kUsingFasterAndProtectedUi = 1, + + // From M114 onwards, this enum is added to the client_behavior_signals in the + // UnmaskCardRequest when a selected suggestion contains the credit card's + // metadata (both card art image AND card product name to be shown). + kShowingCardArtImageAndCardProductName = 2, }; } // namespace autofill
diff --git a/components/autofill/core/browser/payments/constants.h b/components/autofill/core/browser/payments/constants.h index 81a53506..5c9c21b9 100644 --- a/components/autofill/core/browser/payments/constants.h +++ b/components/autofill/core/browser/payments/constants.h
@@ -17,6 +17,12 @@ constexpr char kChaseCardIssuerId[] = "chase"; constexpr char kMarqetaCardIssuerId[] = "marqeta"; +// The urls to the static card art images used by Capital One cards. +constexpr char kCapitalOneCardArtUrl[] = + "https://www.gstatic.com/autofill/virtualcard/icon/capitalone.png"; +constexpr char kCapitalOneLargeCardArtUrl[] = + "https://www.gstatic.com/autofill/virtualcard/icon/capitalone_40_24.png"; + } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_PAYMENTS_CONSTANTS_H_
diff --git a/components/autofill/core/browser/payments/credit_card_access_manager.cc b/components/autofill/core/browser/payments/credit_card_access_manager.cc index 356d7d1..6a9723b 100644 --- a/components/autofill/core/browser/payments/credit_card_access_manager.cc +++ b/components/autofill/core/browser/payments/credit_card_access_manager.cc
@@ -28,6 +28,7 @@ #include "components/autofill/core/browser/metrics/payments/better_auth_metrics.h" #include "components/autofill/core/browser/metrics/payments/card_unmask_flow_metrics.h" #include "components/autofill/core/browser/payments/autofill_error_dialog_context.h" +#include "components/autofill/core/browser/payments/autofill_payments_feature_availability.h" #include "components/autofill/core/browser/payments/payments_client.h" #include "components/autofill/core/browser/payments/payments_util.h" #include "components/autofill/core/browser/payments/webauthn_callback_types.h" @@ -1064,6 +1065,10 @@ .last_committed_primary_main_frame_origin = last_committed_primary_main_frame_origin; virtual_card_unmask_request_details_.card = *card_; + if (ShouldShowCardMetadata(*card_)) { + virtual_card_unmask_request_details_.client_behavior_signals.push_back( + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName); + } virtual_card_unmask_request_details_.billing_customer_number = payments::GetBillingCustomerId(personal_data_manager_);
diff --git a/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc b/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc index daba0cb..b8e357d 100644 --- a/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc +++ b/components/autofill/core/browser/payments/credit_card_access_manager_unittest.cc
@@ -3013,4 +3013,70 @@ autofill_metrics::ServerCardUnmaskResult::kFlowCancelled, 1); } +// Params of the CreditCardAccessManagerCardMetadataTest: +// -- bool card_name_available; +// -- bool card_art_available; +// -- bool metadata_enabled; +class CreditCardAccessManagerCardMetadataTest + : public CreditCardAccessManagerTest, + public testing::WithParamInterface<std::tuple<bool, bool, bool>> { + public: + CreditCardAccessManagerCardMetadataTest() = default; + ~CreditCardAccessManagerCardMetadataTest() override = default; + + bool CardNameAvailable() { return std::get<0>(GetParam()); } + bool CardArtAvailable() { return std::get<1>(GetParam()); } + bool MetadataEnabled() { return std::get<2>(GetParam()); } +}; + +INSTANTIATE_TEST_SUITE_P(, + CreditCardAccessManagerCardMetadataTest, + testing::Combine(testing::Bool(), + testing::Bool(), + testing::Bool())); + +TEST_P(CreditCardAccessManagerCardMetadataTest, MetadataSignal) { + base::test::ScopedFeatureList metadata_feature_list; + CreateServerCard(kTestGUID, kTestNumber, /*masked=*/false, kTestServerId); + CreditCard* virtual_card = personal_data().GetCreditCardByGUID(kTestGUID); + virtual_card->set_record_type(CreditCard::VIRTUAL_CARD); + if (MetadataEnabled()) { + metadata_feature_list.InitWithFeatures( + /*enabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}, + /*disabled_features=*/{}); + } else { + metadata_feature_list.InitWithFeaturesAndParameters( + /*enabled_features=*/{}, + /*disabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}); + } + if (CardNameAvailable()) { + virtual_card->set_product_description(u"Fake card product name"); + } + if (CardArtAvailable()) { + virtual_card->set_card_art_url(GURL("https://www.example.com")); + } + + credit_card_access_manager_->FetchCreditCard(virtual_card, + accessor_->GetWeakPtr()); + + // Ensures the UnmaskRequestDetails is populated with correct contents. + EXPECT_TRUE(payments_client_->unmask_request()->context_token.empty()); + EXPECT_FALSE(payments_client_->unmask_request()->risk_data.empty()); + EXPECT_TRUE(payments_client_->unmask_request() + ->last_committed_primary_main_frame_origin.has_value()); + std::vector<ClientBehaviorConstants> signals = + payments_client_->unmask_request()->client_behavior_signals; + if (MetadataEnabled() && CardNameAvailable() && CardArtAvailable()) { + EXPECT_NE( + signals.end(), + base::ranges::find( + signals, + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName)); + } else { + EXPECT_TRUE(signals.empty()); + } +} + } // namespace autofill
diff --git a/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc b/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc index df2bf9e..c1fd06f 100644 --- a/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc +++ b/components/autofill/core/browser/payments/credit_card_otp_authenticator.cc
@@ -6,6 +6,7 @@ #include "components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.h" #include "components/autofill/core/browser/payments/autofill_error_dialog_context.h" +#include "components/autofill/core/browser/payments/autofill_payments_feature_availability.h" #include "components/autofill/core/browser/payments/otp_unmask_result.h" #include "components/autofill/core/common/autofill_tick_clock.h" @@ -31,6 +32,10 @@ unmask_request_->billing_customer_number = billing_customer_number_; unmask_request_->context_token = context_token_; unmask_request_->otp = otp_; + if (ShouldShowCardMetadata(*card_)) { + unmask_request_->client_behavior_signals.push_back( + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName); + } if (card_->record_type() == CreditCard::VIRTUAL_CARD) { absl::optional<GURL> last_committed_primary_main_frame_origin;
diff --git a/components/autofill/core/browser/payments/credit_card_otp_authenticator.h b/components/autofill/core/browser/payments/credit_card_otp_authenticator.h index d7c2eb7..bc96751 100644 --- a/components/autofill/core/browser/payments/credit_card_otp_authenticator.h +++ b/components/autofill/core/browser/payments/credit_card_otp_authenticator.h
@@ -118,9 +118,9 @@ // Reset the authenticator to initial states. virtual void Reset(); - private: - friend class CreditCardOtpAuthenticatorTest; + std::string ContextTokenForTesting() const { return context_token_; } + private: // Display the OTP dialog UI. // Once user confirms the OTP, we wil invoke |OnUnmaskPromptAccepted(otp)|. // If user asks for a new OTP code, we will invoke
diff --git a/components/autofill/core/browser/payments/credit_card_otp_authenticator_unittest.cc b/components/autofill/core/browser/payments/credit_card_otp_authenticator_unittest.cc index 013ee2c..74e5710 100644 --- a/components/autofill/core/browser/payments/credit_card_otp_authenticator_unittest.cc +++ b/components/autofill/core/browser/payments/credit_card_otp_authenticator_unittest.cc
@@ -31,11 +31,10 @@ const int64_t kTestBillingCustomerNumber = 123456; } // namespace -class CreditCardOtpAuthenticatorTest - : public testing::Test, - public testing::WithParamInterface<CardUnmaskChallengeOptionType> { +class CreditCardOtpAuthenticatorTestBase : public testing::Test { public: - CreditCardOtpAuthenticatorTest() = default; + CreditCardOtpAuthenticatorTestBase() = default; + ~CreditCardOtpAuthenticatorTestBase() override = default; void SetUp() override { autofill_client_.SetPrefs(test::PrefServiceForTesting()); @@ -63,14 +62,6 @@ card_ = test::GetMaskedServerCard(); card_.set_record_type(CreditCard::VIRTUAL_CARD); - selected_otp_challenge_option_.type = GetParam(); - selected_otp_challenge_option_.id = - CardUnmaskChallengeOption::ChallengeOptionId(kTestChallengeId); - if (GetParam() == CardUnmaskChallengeOptionType::kSmsOtp) { - selected_otp_challenge_option_.challenge_info = kMaskedPhoneNumber; - } else if (GetParam() == CardUnmaskChallengeOptionType::kEmailOtp) { - selected_otp_challenge_option_.challenge_info = kMaskedEmailAddress; - } } void TearDown() override { @@ -114,7 +105,7 @@ } std::string OtpAuthenticatorContextToken() { - return authenticator_->context_token_; + return authenticator_->ContextTokenForTesting(); } void verifySelectChallengeOptionRequest(const std::string& context_token, @@ -128,8 +119,15 @@ selected_otp_challenge_option_.id); } - std::string GetOtpAuthType() { - return autofill_metrics::GetOtpAuthType(GetParam()); + void CreateSelectedOtpChallengeOption(CardUnmaskChallengeOptionType type) { + selected_otp_challenge_option_.type = type; + selected_otp_challenge_option_.id = + CardUnmaskChallengeOption::ChallengeOptionId(kTestChallengeId); + if (type == CardUnmaskChallengeOptionType::kSmsOtp) { + selected_otp_challenge_option_.challenge_info = kMaskedPhoneNumber; + } else if (type == CardUnmaskChallengeOptionType::kEmailOtp) { + selected_otp_challenge_option_.challenge_info = kMaskedEmailAddress; + } } protected: @@ -143,6 +141,23 @@ CardUnmaskChallengeOption selected_otp_challenge_option_; }; +class CreditCardOtpAuthenticatorTest + : public CreditCardOtpAuthenticatorTestBase, + public testing::WithParamInterface<CardUnmaskChallengeOptionType> { + public: + CreditCardOtpAuthenticatorTest() = default; + ~CreditCardOtpAuthenticatorTest() override = default; + + void SetUp() override { + CreditCardOtpAuthenticatorTestBase::SetUp(); + CreateSelectedOtpChallengeOption(GetParam()); + } + + std::string GetOtpAuthType() { + return autofill_metrics::GetOtpAuthType(GetParam()); + } +}; + TEST_P(CreditCardOtpAuthenticatorTest, AuthenticateServerCardSuccess) { base::HistogramTester histogram_tester; // Simulate user selects OTP challenge option. Current context_token is from @@ -564,4 +579,80 @@ testing::Values(CardUnmaskChallengeOptionType::kSmsOtp, CardUnmaskChallengeOptionType::kEmailOtp)); +// Params of the CreditCardOtpAuthenticatorCardMetadataTest: +// -- bool card_name_available; +// -- bool card_art_available; +// -- bool metadata_enabled; +class CreditCardOtpAuthenticatorCardMetadataTest + : public CreditCardOtpAuthenticatorTestBase, + public testing::WithParamInterface<std::tuple<bool, bool, bool>> { + public: + CreditCardOtpAuthenticatorCardMetadataTest() = default; + ~CreditCardOtpAuthenticatorCardMetadataTest() override = default; + + void SetUp() override { + CreditCardOtpAuthenticatorTestBase::SetUp(); + CreateSelectedOtpChallengeOption(CardUnmaskChallengeOptionType::kSmsOtp); + } + + bool CardNameAvailable() { return std::get<0>(GetParam()); } + bool CardArtAvailable() { return std::get<1>(GetParam()); } + bool MetadataEnabled() { return std::get<2>(GetParam()); } +}; + +INSTANTIATE_TEST_SUITE_P(, + CreditCardOtpAuthenticatorCardMetadataTest, + testing::Combine(testing::Bool(), + testing::Bool(), + testing::Bool())); + +TEST_P(CreditCardOtpAuthenticatorCardMetadataTest, MetadataSignal) { + base::test::ScopedFeatureList metadata_feature_list; + if (MetadataEnabled()) { + metadata_feature_list.InitWithFeatures( + /*enabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}, + /*disabled_features=*/{}); + } else { + metadata_feature_list.InitWithFeaturesAndParameters( + /*enabled_features=*/{}, + /*disabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}); + } + if (CardNameAvailable()) { + card_.set_product_description(u"fake product description"); + } + if (CardArtAvailable()) { + card_.set_card_art_url(GURL("https://www.example.com")); + } + + // Simulate user selects OTP challenge option. Current context_token is from + // previous unmask response. TestPaymentsClient will ack the select + // challenge option request and directly invoke the callback. + authenticator_->OnChallengeOptionSelected( + &card_, selected_otp_challenge_option_, requester_->GetWeakPtr(), + /*context_token=*/"context_token_from_previous_unmask_response", + /*billing_customer_number=*/kTestBillingCustomerNumber); + + // Simulate user provides the OTP and clicks 'Confirm' in the OTP dialog. + // TestPaymentsClient just stores the unmask request detail, won't invoke + // the callback. OnDidGetRealPan below will manually invoke the callback. + authenticator_->OnUnmaskPromptAccepted(/*otp=*/u"111111"); + // Verify that the otp is correctly set in UnmaskRequestDetails. + EXPECT_EQ(payments_client_->unmask_request()->otp, u"111111"); + // Also verify that risk data is set in UnmaskRequestDetails. + EXPECT_FALSE(payments_client_->unmask_request()->risk_data.empty()); + std::vector<ClientBehaviorConstants> signals = + payments_client_->unmask_request()->client_behavior_signals; + if (MetadataEnabled() && CardNameAvailable() && CardArtAvailable()) { + EXPECT_NE( + signals.end(), + base::ranges::find( + signals, + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName)); + } else { + EXPECT_TRUE(signals.empty()); + } +} + } // namespace autofill
diff --git a/components/autofill/core/browser/payments/full_card_request.cc b/components/autofill/core/browser/payments/full_card_request.cc index 8f31212..b82dff3 100644 --- a/components/autofill/core/browser/payments/full_card_request.cc +++ b/components/autofill/core/browser/payments/full_card_request.cc
@@ -16,6 +16,7 @@ #include "components/autofill/core/browser/metrics/autofill_metrics.h" #include "components/autofill/core/browser/metrics/payments/better_auth_metrics.h" #include "components/autofill/core/browser/metrics/payments/card_unmask_authentication_metrics.h" +#include "components/autofill/core/browser/payments/autofill_payments_feature_availability.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" @@ -153,6 +154,11 @@ request_->fido_assertion_info = std::move(fido_assertion_info); + if (ShouldShowCardMetadata(card)) { + request_->client_behavior_signals.push_back( + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName); + } + // If there is a UI delegate, then perform a CVC check. // Otherwise, continue and use |fido_assertion_info| to unmask. if (ui_delegate_) {
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 972f67c..84a38c7d 100644 --- a/components/autofill/core/browser/payments/full_card_request_unittest.cc +++ b/components/autofill/core/browser/payments/full_card_request_unittest.cc
@@ -843,5 +843,67 @@ card_unmask_delegate()->OnUnmaskPromptClosed(); } +// Params of the FullCardRequestCardMetadataTest: +// -- bool card_name_available; +// -- bool card_art_available; +// -- bool metadata_enabled; +class FullCardRequestCardMetadataTest + : public FullCardRequestTest, + public testing::WithParamInterface<std::tuple<bool, bool, bool>> { + public: + FullCardRequestCardMetadataTest() = default; + ~FullCardRequestCardMetadataTest() override = default; + + bool CardNameAvailable() { return std::get<0>(GetParam()); } + bool CardArtAvailable() { return std::get<1>(GetParam()); } + bool MetadataEnabled() { return std::get<2>(GetParam()); } +}; + +INSTANTIATE_TEST_SUITE_P(, + FullCardRequestCardMetadataTest, + testing::Combine(testing::Bool(), + testing::Bool(), + testing::Bool())); + +// Verify the metadata signal is correctly set in the unmask request. +TEST_P(FullCardRequestCardMetadataTest, MetadataSignal) { + base::test::ScopedFeatureList metadata_feature_list; + CreditCard card = test::GetMaskedServerCard(); + if (MetadataEnabled()) { + metadata_feature_list.InitWithFeatures( + /*enabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}, + /*disabled_features=*/{}); + } else { + metadata_feature_list.InitWithFeaturesAndParameters( + /*enabled_features=*/{}, + /*disabled_features=*/{features::kAutofillEnableCardProductName, + features::kAutofillEnableCardArtImage}); + } + if (CardNameAvailable()) { + card.set_product_description(u"fake product description"); + } + if (CardArtAvailable()) { + card.set_card_art_url(GURL("https://www.example.com")); + } + + request()->GetFullCard(card, AutofillClient::UnmaskCardReason::kAutofill, + result_delegate()->AsWeakPtr(), + ui_delegate()->AsWeakPtr()); + + EXPECT_TRUE(request()->GetShouldUnmaskCardForTesting()); + std::vector<ClientBehaviorConstants> signals = + request()->GetUnmaskRequestDetailsForTesting()->client_behavior_signals; + if (MetadataEnabled() && CardNameAvailable() && CardArtAvailable()) { + EXPECT_NE( + signals.end(), + base::ranges::find( + signals, + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName)); + } else { + EXPECT_TRUE(signals.empty()); + } +} + } // namespace payments } // namespace autofill
diff --git a/components/autofill/core/browser/payments/payments_client.cc b/components/autofill/core/browser/payments/payments_client.cc index 5b8e66e..b7a6140d 100644 --- a/components/autofill/core/browser/payments/payments_client.cc +++ b/components/autofill/core/browser/payments/payments_client.cc
@@ -119,6 +119,7 @@ last_committed_primary_main_frame_origin = other.last_committed_primary_main_frame_origin; selected_challenge_option = other.selected_challenge_option; + client_behavior_signals = other.client_behavior_signals; return *this; } PaymentsClient::UnmaskRequestDetails::~UnmaskRequestDetails() = default;
diff --git a/components/autofill/core/browser/payments/payments_client.h b/components/autofill/core/browser/payments/payments_client.h index 833a8b2..b063beb 100644 --- a/components/autofill/core/browser/payments/payments_client.h +++ b/components/autofill/core/browser/payments/payments_client.h
@@ -117,6 +117,9 @@ // The selected challenge option. Should be populated when we are doing CVC // unmasking for a virtual card. absl::optional<CardUnmaskChallengeOption> selected_challenge_option; + // A vector of signals used to share client behavior with the Payments + // server. + std::vector<ClientBehaviorConstants> client_behavior_signals; }; // Information retrieved from an UnmaskRequest.
diff --git a/components/autofill/core/browser/payments/payments_requests/payments_request.cc b/components/autofill/core/browser/payments/payments_requests/payments_request.cc index 04df0b5..f1fb1429 100644 --- a/components/autofill/core/browser/payments/payments_requests/payments_request.cc +++ b/components/autofill/core/browser/payments/payments_requests/payments_request.cc
@@ -65,6 +65,7 @@ for (ClientBehaviorConstants signal : client_behavior_signals) { active_client_signals.Append(base::to_underlying(signal)); } + base::ranges::sort(active_client_signals); chrome_user_context.Set("client_behavior_signals", std::move(active_client_signals)); }
diff --git a/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc b/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc index cfc1ade8..b049b1c 100644 --- a/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc +++ b/components/autofill/core/browser/payments/payments_requests/unmask_card_request.cc
@@ -224,9 +224,10 @@ } request_dict.Set("context", std::move(context)); - base::Value::Dict chrome_user_context; - chrome_user_context.Set("full_sync_enabled", full_sync_enabled_); - request_dict.Set("chrome_user_context", std::move(chrome_user_context)); + request_dict.Set( + "chrome_user_context", + BuildChromeUserContext(request_details_.client_behavior_signals, + full_sync_enabled_)); if (!request_details_.context_token.empty()) request_dict.Set("context_token", request_details_.context_token);
diff --git a/components/autofill/core/browser/payments/payments_requests/unmask_card_request_unittest.cc b/components/autofill/core/browser/payments/payments_requests/unmask_card_request_unittest.cc index aa7f35d..476fc1be 100644 --- a/components/autofill/core/browser/payments/payments_requests/unmask_card_request_unittest.cc +++ b/components/autofill/core/browser/payments/payments_requests/unmask_card_request_unittest.cc
@@ -8,6 +8,7 @@ #include "base/functional/callback_helpers.h" #include "base/json/json_reader.h" +#include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/autofill_test_utils.h" #include "components/autofill/core/browser/payments/card_unmask_challenge_option.h" #include "testing/gtest/include/gtest/gtest.h" @@ -19,7 +20,7 @@ // tested in Payments Client tests, but they should be tested here as well. class UnmaskCardRequestTest : public testing::Test { public: - UnmaskCardRequestTest() = default; + UnmaskCardRequestTest() { SetUpUnmaskCardRequest(); } UnmaskCardRequestTest(const UnmaskCardRequestTest&) = delete; UnmaskCardRequestTest& operator=(const UnmaskCardRequestTest&) = delete; ~UnmaskCardRequestTest() override = default; @@ -45,8 +46,52 @@ // The `request_` that is created for each specific test instance. Set in the // initial test set up. std::unique_ptr<UnmaskCardRequest> request_; + + private: + void SetUpUnmaskCardRequest() { + PaymentsClient::UnmaskRequestDetails request_details; + request_details.billing_customer_number = 111222333444; + request_details.card = test::GetMaskedServerCard(); + request_details.card.set_server_id("test server id"); + request_details.user_response.exp_month = + base::UTF8ToUTF16(test::NextMonth()); + request_details.user_response.exp_year = + base::UTF8ToUTF16(test::NextYear()); + request_details.user_response.cvc = u"123"; + request_details.risk_data = "some risk data"; + request_details.client_behavior_signals = { + ClientBehaviorConstants::kShowingCardArtImageAndCardProductName}; + request_ = std::make_unique<UnmaskCardRequest>( + request_details, /*full_sync_enabled=*/true, + /*callback=*/base::DoNothing()); + } }; +// Test to ensure that the request content is correctly populated for a regular +// unmask request. +TEST_F(UnmaskCardRequestTest, GetRequestContent) { + EXPECT_EQ(GetRequest()->GetRequestUrlPath(), + "payments/apis-secure/creditcardservice/" + "getrealpan?s7e_suffix=chromewallet"); + ASSERT_TRUE(!GetRequest()->GetRequestContentType().empty()); + EXPECT_TRUE(IsIncludedInRequestContent("customer_context")); + EXPECT_TRUE(IsIncludedInRequestContent("credit_card_id")); + EXPECT_TRUE(IsIncludedInRequestContent("risk_data_encoded")); + EXPECT_TRUE(IsIncludedInRequestContent("billable_service")); + EXPECT_TRUE(IsIncludedInRequestContent("full_sync_enabled")); + EXPECT_TRUE(IsIncludedInRequestContent("chrome_user_context")); + EXPECT_TRUE(IsIncludedInRequestContent("expiration_month")); + EXPECT_TRUE(IsIncludedInRequestContent("expiration_year")); + EXPECT_TRUE(IsIncludedInRequestContent("opt_in_fido_auth")); + EXPECT_TRUE(IsIncludedInRequestContent("encrypted_cvc")); + EXPECT_TRUE(IsIncludedInRequestContent("&s7e_13_cvc=123")); + EXPECT_TRUE(IsIncludedInRequestContent("client_behavior_signals")); + EXPECT_TRUE(IsIncludedInRequestContent( + "%5B2%5D")); // '[2]' here stands for the + // kShowingCardArtImageAndCardProductName in the + // client_behavior_signals. +} + // Params of the VirtualCardUnmaskCardRequestTest: // -- autofill::CardUnmaskChallengeOptionType challenge_option_type // -- bool autofill_enable_email_otp_for_vcn_yellow_path @@ -85,8 +130,10 @@ request_details.billing_customer_number = 111222333444; request_details.card = test::GetVirtualCard(); request_details.card.set_server_id("test server id"); - request_details.user_response.exp_month = u"10"; - request_details.user_response.exp_year = u"2025"; + request_details.user_response.exp_month = + base::UTF8ToUTF16(test::NextMonth()); + request_details.user_response.exp_year = + base::UTF8ToUTF16(test::NextYear()); request_details.user_response.cvc = u"123"; request_details.risk_data = "some risk data"; request_details.last_committed_primary_main_frame_origin = @@ -124,6 +171,7 @@ EXPECT_TRUE(IsIncludedInRequestContent("challenge_id")); EXPECT_TRUE(IsIncludedInRequestContent("cvc_length")); EXPECT_TRUE(IsIncludedInRequestContent("cvc_position")); + EXPECT_FALSE(IsIncludedInRequestContent("client_behavior_signals")); } }
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc index 1efab123..2599afe 100644 --- a/components/autofill/core/browser/personal_data_manager.cc +++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -380,7 +380,7 @@ // Potentially import profiles for testing. `Init()` is called whenever the // corresponding Chrome profile is created. This is either during start-up or // when the Chrome profile is changed (including incognito mode). - MaybeImportProfilesForManualTesting(weak_factory_.GetWeakPtr()); + MaybeImportDataForManualTesting(weak_factory_.GetWeakPtr()); } PersonalDataManager::~PersonalDataManager() {
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h index 57285f4..41fba55 100644 --- a/components/autofill/core/browser/personal_data_manager.h +++ b/components/autofill/core/browser/personal_data_manager.h
@@ -542,6 +542,10 @@ virtual void SetProfilesForAllSources( std::vector<AutofillProfile>* new_profiles); + // Sets |credit_cards_| to the contents of |credit_cards| and updates the web + // database by adding, updating and removing credit cards. + void SetCreditCards(std::vector<CreditCard>* credit_cards); + // Returns true if a `kLocalOrSyncable` profile identified by its guid is // blocked for migration to a `kAccount` profile. bool IsProfileMigrationBlocked(const std::string& guid) const; @@ -690,10 +694,6 @@ virtual const AutofillProfileUpdateStrikeDatabase* GetProfileUpdateStrikeDatabase() const; - // Sets |credit_cards_| to the contents of |credit_cards| and updates the web - // database by adding, updating and removing credit cards. - void SetCreditCards(std::vector<CreditCard>* credit_cards); - // Like `SetProfilesForAllSources()`, but assumes that all profiles in // `new_profiles` have the given `source`. // Returns true if a change happened.
diff --git a/components/browser_ui/widget/android/BUILD.gn b/components/browser_ui/widget/android/BUILD.gn index fec29638..12d6c28e 100644 --- a/components/browser_ui/widget/android/BUILD.gn +++ b/components/browser_ui/widget/android/BUILD.gn
@@ -226,6 +226,7 @@ "java/res/drawable/oval_surface_2.xml", "java/res/drawable/query_tile_overlay.xml", "java/res/drawable/rectangle_surface_1.xml", + "java/res/drawable/rounded_rectangle_surface_0.xml", "java/res/drawable/rounded_rectangle_surface_1.xml", "java/res/drawable/search_toolbar_modern_bg.xml", "java/res/drawable/tile_view_highlight.xml",
diff --git a/components/browser_ui/widget/android/java/res/drawable/rounded_rectangle_surface_0.xml b/components/browser_ui/widget/android/java/res/drawable/rounded_rectangle_surface_0.xml new file mode 100644 index 0000000..6fbc30f --- /dev/null +++ b/components/browser_ui/widget/android/java/res/drawable/rounded_rectangle_surface_0.xml
@@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +Copyright 2021 The Chromium Authors +Use of this source code is governed by a BSD-style license that can be +found in the LICENSE file. +--> +<org.chromium.components.browser_ui.widget.SurfaceColorDrawable + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:shape="rectangle" + app:surfaceElevation="@dimen/default_elevation_0"> + <corners android:radius="@dimen/default_rounded_corner_radius"/> +</org.chromium.components.browser_ui.widget.SurfaceColorDrawable>
diff --git a/components/commerce/core/BUILD.gn b/components/commerce/core/BUILD.gn index b1436247..ab965a5 100644 --- a/components/commerce/core/BUILD.gn +++ b/components/commerce/core/BUILD.gn
@@ -294,6 +294,7 @@ ":shopping_service_test_support", "subscriptions:test_support", "webui:unit_tests", + "//components/search", ] }
diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc index f8a4010de..a64335bc 100644 --- a/components/commerce/core/commerce_feature_list.cc +++ b/components/commerce/core/commerce_feature_list.cc
@@ -42,7 +42,6 @@ static const base::NoDestructor<CountryLocaleMap> allowed_map([] { CountryLocaleMap map; - map[&kCommerceProductInfoApiEnabledRegionLaunched] = {{"us", {"en-us"}}}; map[&kShoppingListRegionLaunched] = {{"us", {"en-us"}}}; map[&kShoppingPDPMetricsRegionLaunched] = {{"us", {"en-us"}}}; map[&ntp_features::kNtpChromeCartModule] = {{"us", {"en-us"}}}; @@ -153,14 +152,6 @@ base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) -BASE_FEATURE(kCommerceProductInfoApiEnabled, - "CommerceProductInfoApiEnabled", - base::FEATURE_DISABLED_BY_DEFAULT); - -BASE_FEATURE(kCommerceProductInfoApiEnabledRegionLaunched, - "CommerceProductInfoApiEnabledRegionLaunched", - base::FEATURE_ENABLED_BY_DEFAULT); - const base::FeatureParam<bool> kDeleteAllMerchantsOnClearBrowsingHistory{ &kCommerceMerchantViewer, "delete_all_merchants_on_clear_history", false};
diff --git a/components/commerce/core/commerce_feature_list.h b/components/commerce/core/commerce_feature_list.h index b2cb84b..d13c598 100644 --- a/components/commerce/core/commerce_feature_list.h +++ b/components/commerce/core/commerce_feature_list.h
@@ -75,8 +75,6 @@ BASE_DECLARE_FEATURE(kCommerceAllowServerImages); BASE_DECLARE_FEATURE(kCommerceMerchantViewer); BASE_DECLARE_FEATURE(kCommerceMerchantViewerRegionLaunched); -BASE_DECLARE_FEATURE(kCommerceProductInfoApiEnabled); -BASE_DECLARE_FEATURE(kCommerceProductInfoApiEnabledRegionLaunched); extern const base::FeatureParam<bool> kDeleteAllMerchantsOnClearBrowsingHistory; BASE_DECLARE_FEATURE(kShoppingList); BASE_DECLARE_FEATURE(kShoppingListRegionLaunched);
diff --git a/components/commerce/core/shopping_service.cc b/components/commerce/core/shopping_service.cc index 2562ff6..5433c99c 100644 --- a/components/commerce/core/shopping_service.cc +++ b/components/commerce/core/shopping_service.cc
@@ -398,9 +398,12 @@ bool ShoppingService::IsProductInfoApiEnabled() { return IsRegionLockedFeatureEnabled( - kCommerceProductInfoApiEnabled, - kCommerceProductInfoApiEnabledRegionLaunched, country_on_startup_, - locale_on_startup_); + kShoppingList, kShoppingListRegionLaunched, country_on_startup_, + locale_on_startup_) || + (base::FeatureList::IsEnabled(ntp_features::kNtpChromeCartModule) && + IsEnabledForCountryAndLocale(ntp_features::kNtpChromeCartModule, + country_on_startup_, + locale_on_startup_)); } bool ShoppingService::IsPDPMetricsRecordingEnabled() {
diff --git a/components/commerce/core/shopping_service_unittest.cc b/components/commerce/core/shopping_service_unittest.cc index aa75409..5665e74 100644 --- a/components/commerce/core/shopping_service_unittest.cc +++ b/components/commerce/core/shopping_service_unittest.cc
@@ -22,6 +22,7 @@ #include "components/power_bookmarks/core/proto/power_bookmark_meta.pb.h" #include "components/power_bookmarks/core/proto/shopping_specifics.pb.h" #include "components/prefs/testing_pref_service.h" +#include "components/search/ntp_features.h" #include "testing/gtest/include/gtest/gtest.h" using optimization_guide::OptimizationGuideDecision; @@ -74,9 +75,10 @@ // Test that product info is processed correctly. TEST_F(ShoppingServiceTest, TestProductInfoResponse) { - // Ensure a feature that uses product info is enabled. + // Ensure a feature that uses product info is enabled. This doesn't + // necessarily need to be the shopping list. test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowServerImages}, {}); + {commerce::kShoppingList, commerce::kCommerceAllowServerImages}, {}); OptimizationMetadata meta = opt_guide_->BuildPriceTrackingResponse( kTitle, kImageUrl, kOfferId, kClusterId, kCountryCode, kPrice, @@ -117,7 +119,9 @@ // if it is disabled. TEST_F(ShoppingServiceTest, TestProductInfoResponse_ApiDisabled) { // Ensure a feature that uses product info is disabled. - test_features_.InitAndDisableFeature(kCommerceProductInfoApiEnabled); + test_features_.InitWithFeatures({}, + {kShoppingList, kShoppingListRegionLaunched, + ntp_features::kNtpChromeCartModule}); base::RunLoop run_loop; shopping_service_->GetProductInfoForUrl( @@ -136,7 +140,7 @@ // Ensure a feature that uses product info is enabled. This doesn't // necessarily need to be the shopping list. test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowServerImages}, {}); + {commerce::kShoppingList, commerce::kCommerceAllowServerImages}, {}); OptimizationMetadata meta = opt_guide_->BuildPriceTrackingResponse( kTitle, kImageUrl, kOfferId, kClusterId, kCountryCode, kPrice, @@ -178,8 +182,7 @@ // Test that no object is provided for a negative optimization guide response. TEST_F(ShoppingServiceTest, TestProductInfoResponse_OptGuideFalse) { test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowLocalImages, - kCommerceAllowServerImages}, + {kShoppingList, kCommerceAllowLocalImages, kCommerceAllowServerImages}, {}); opt_guide_->SetResponse(GURL(kProductUrl), OptimizationType::PRICE_TRACKING, @@ -202,8 +205,7 @@ // Test that the product info cache only keeps track of live tabs. TEST_F(ShoppingServiceTest, TestProductInfoCacheURLCount) { test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowLocalImages, - kCommerceAllowServerImages}, + {kShoppingList, kCommerceAllowLocalImages, kCommerceAllowServerImages}, {}); std::string url = "http://example.com/foo"; @@ -252,8 +254,7 @@ // necessarily querying for it. TEST_F(ShoppingServiceTest, TestProductInfoCacheFullLifecycle) { test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowLocalImages, - kCommerceAllowServerImages}, + {kShoppingList, kCommerceAllowLocalImages, kCommerceAllowServerImages}, {}); MockWebWrapper web(GURL(kProductUrl), false); @@ -306,8 +307,7 @@ // necessarily querying for it. TEST_F(ShoppingServiceTest, TestProductInfoCacheFullLifecycleWithFallback) { test_features_.InitWithFeatures( - {kCommerceProductInfoApiEnabled, kCommerceAllowLocalImages, - kCommerceAllowServerImages}, + {kShoppingList, kCommerceAllowLocalImages, kCommerceAllowServerImages}, {}); MockWebWrapper web(GURL(kProductUrl), false);
diff --git a/components/cronet/android/cronet_bidirectional_stream_adapter.cc b/components/cronet/android/cronet_bidirectional_stream_adapter.cc index 291fa61..14945d80 100644 --- a/components/cronet/android/cronet_bidirectional_stream_adapter.cc +++ b/components/cronet/android/cronet_bidirectional_stream_adapter.cc
@@ -11,7 +11,6 @@ #include "base/functional/bind.h" #include "base/location.h" #include "base/logging.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "components/cronet/android/cronet_context_adapter.h" #include "components/cronet/android/cronet_jni_headers/CronetBidirectionalStream_jni.h" @@ -279,9 +278,9 @@ // Get http status code from response headers. jint http_status_code = 0; const auto http_status_header = response_headers.find(":status"); - if (http_status_header != response_headers.end()) - base::StringToInt(base::StringViewToStringPiece(http_status_header->second), - &http_status_code); + if (http_status_header != response_headers.end()) { + base::StringToInt(http_status_header->second, &http_status_code); + } std::string protocol; switch (bidi_stream_->GetProtocol()) {
diff --git a/components/grpc_support/bidirectional_stream.cc b/components/grpc_support/bidirectional_stream.cc index 982a773..eb33b8c 100644 --- a/components/grpc_support/bidirectional_stream.cc +++ b/components/grpc_support/bidirectional_stream.cc
@@ -14,7 +14,6 @@ #include "base/location.h" #include "base/logging.h" #include "base/memory/ref_counted.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "base/task/single_thread_task_runner.h" #include "net/base/http_user_agent_settings.h" @@ -185,9 +184,9 @@ // Get http status code from response headers. int http_status_code = 0; const auto http_status_header = response_headers.find(":status"); - if (http_status_header != response_headers.end()) - base::StringToInt(base::StringViewToStringPiece(http_status_header->second), - &http_status_code); + if (http_status_header != response_headers.end()) { + base::StringToInt(http_status_header->second, &http_status_code); + } const char* protocol = "unknown"; switch (bidi_stream_->GetProtocol()) { case net::kProtoHTTP2:
diff --git a/components/lens/lens_rendering_environment.h b/components/lens/lens_rendering_environment.h index 82969c7..552c862 100644 --- a/components/lens/lens_rendering_environment.h +++ b/components/lens/lens_rendering_environment.h
@@ -12,6 +12,7 @@ ONELENS_DESKTOP_WEB_CHROME_SIDE_PANEL, ONELENS_DESKTOP_WEB_FULLSCREEN, ONELENS_AMBIENT_VISUAL_SEARCH_WEB_FULLSCREEN, + CHROME_SEARCH_COMPANION, RENDERING_ENV_UNKNOWN, };
diff --git a/components/lens/lens_url_utils.cc b/components/lens/lens_url_utils.cc index 4a3e737..3132002d 100644 --- a/components/lens/lens_url_utils.cc +++ b/components/lens/lens_url_utils.cc
@@ -34,10 +34,18 @@ constexpr char kStartTimeQueryParameter[] = "st"; constexpr char kLensMetadataParameter[] = "lm"; +// TODO(b/278746005): Refactor code to to have origin in one place. +// Query parameter for the Chrome WebUI origin. This needs to be different +// from the WebUI URL constant because it does not include the last '/'. +inline constexpr char kOriginQueryParameter[] = "origin"; +inline constexpr char kOriginQueryParameterValue[] = + "chrome-untrusted://companion-side-panel.top-chrome"; + constexpr char kRenderingEnvironmentQueryParameter[] = "re"; constexpr char kOneLensDesktopWebChromeSidePanel[] = "dcsp"; constexpr char kOneLensDesktopWebFullscreen[] = "df"; constexpr char kOneLensAmbientVisualSearchWebFullscreen[] = "avsf"; +constexpr char kChromeSearchCompanion[] = "csc"; void AppendQueryParam(std::string* query_string, const char name[], @@ -92,6 +100,14 @@ query_parameters.insert({kRenderingEnvironmentQueryParameter, kOneLensAmbientVisualSearchWebFullscreen}); break; + case lens::CHROME_SEARCH_COMPANION: + query_parameters.insert( + {kRenderingEnvironmentQueryParameter, kChromeSearchCompanion}); + // This rendering environment also needs to provide an 'origin' parameter + // on all requests. + query_parameters.insert( + {kOriginQueryParameter, kOriginQueryParameterValue}); + break; default: // Empty strings are ignored when query parameters are built. break; @@ -106,7 +122,12 @@ lens::RenderingEnvironment GetRenderingEnvironment( bool is_side_panel_request, - bool is_full_screen_region_search_request) { + bool is_full_screen_region_search_request, + bool is_companion_request) { + if (is_companion_request) { + return lens::RenderingEnvironment::CHROME_SEARCH_COMPANION; + } + if (is_full_screen_region_search_request) return lens::RenderingEnvironment:: ONELENS_AMBIENT_VISUAL_SEARCH_WEB_FULLSCREEN; @@ -144,9 +165,11 @@ std::string GetQueryParametersForLensRequest( lens::EntryPoint ep, bool is_side_panel_request, - bool is_full_screen_region_search_request) { + bool is_full_screen_region_search_request, + bool is_companion_request) { auto re = GetRenderingEnvironment(is_side_panel_request, - is_full_screen_region_search_request); + is_full_screen_region_search_request, + is_companion_request); std::string query_string; for (auto const& param : GetLensQueryParametersMap(ep, re, is_side_panel_request))
diff --git a/components/lens/lens_url_utils.h b/components/lens/lens_url_utils.h index 2b4dd36f..5713e1d 100644 --- a/components/lens/lens_url_utils.h +++ b/components/lens/lens_url_utils.h
@@ -17,6 +17,13 @@ // Query parameter for the payload. constexpr char kPayloadQueryParameter[] = "p"; +// Query parameter for the translate source language. +constexpr char kTranslateSourceQueryParameter[] = "sourcelang"; +// Query parameter for the translate target language. +constexpr char kTranslateTargetQueryParameter[] = "targetlang"; +// Query parameter for the filter type. +constexpr char kFilterTypeQueryParameter[] = "filtertype"; +constexpr char kTranslateFilterTypeQueryParameterValue[] = "tr"; // Appends logs to query param as a string extern void AppendLogsQueryParam( @@ -36,7 +43,9 @@ extern std::string GetQueryParametersForLensRequest( lens::EntryPoint ep, bool is_side_panel_request, - bool is_full_screen_region_search_request); + bool is_full_screen_region_search_request, + bool is_companion_request = false); + } // namespace lens -#endif // COMPONENTS_LENS_LENS_URL_UTILS_H_ \ No newline at end of file +#endif // COMPONENTS_LENS_LENS_URL_UTILS_H_
diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc index 40c4b9c..7b143d9 100644 --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc
@@ -1526,22 +1526,27 @@ AutocompleteInput input, const base::ElapsedTimer elapsed_timer, base::OnceClosure completion_callback, - std::vector<std::pair<absl::optional<float>, size_t>> - outputs_and_match_indices) { + std::vector<std::tuple<absl::optional<float>, size_t, GURL>> + outputs_and_match_info) { TRACE_EVENT0("omnibox", "AutocompleteController::OnUrlScoringModelDone"); // The goal is to redistribute the existing relevance scores among the URL // suggestions according to the ML model output values. Construct two max // heaps for the (legacy) relevance score and the output scores. std::priority_queue<int> relevance_heap; std::priority_queue<std::pair<float, size_t>> output_and_match_index_heap; - for (auto output_and_index : outputs_and_match_indices) { - const auto& output = output_and_index.first; - auto index = output_and_index.second; - + for (auto& [output, index, destination_url] : outputs_and_match_info) { + // If the index is out of bounds or the match destination url for that index + // doesn't match the url at the time scoring was called, this is likely a + // stale result. In that case, discard this entire set of scores. if (index >= result_.matches_.size()) { NOTREACHED(); return; } + auto* match = result_.match_at(index); + if (match->destination_url != destination_url) { + NOTREACHED(); + return; + } // Output is absl::nullopt for non-URL suggestions. In that case, skip these // as their relevance scores should not be updated. @@ -1549,7 +1554,7 @@ continue; } - relevance_heap.emplace(result_.match_at(index)->relevance); + relevance_heap.emplace(match->relevance); output_and_match_index_heap.emplace(output.value(), index); } @@ -1596,7 +1601,7 @@ TRACE_EVENT0("omnibox", "AutocompleteController::RunUrlScoringModel"); auto barrier_callback = - base::BarrierCallback<std::pair<absl::optional<float>, size_t>>( + base::BarrierCallback<std::tuple<absl::optional<float>, size_t, GURL>>( result_.size(), base::BindOnce(&AutocompleteController::OnUrlScoringModelDone, scoring_model_weak_ptr_, input_, base::ElapsedTimer(), @@ -1610,13 +1615,14 @@ // any other match type. if (AutocompleteMatch::GetDefaultGroupId(match->type) != omnibox::GROUP_OTHER_NAVS) { - barrier_callback.Run(std::make_pair(absl::nullopt, match_index)); + barrier_callback.Run( + std::make_tuple(absl::nullopt, match_index, match->destination_url)); continue; } provider_client_->GetAutocompleteScoringModelService() ->ScoreAutocompleteUrlMatch(&scoring_model_task_tracker_, match->scoring_signals, match_index, - barrier_callback); + match->destination_url, barrier_callback); } }
diff --git a/components/omnibox/browser/autocomplete_controller.h b/components/omnibox/browser/autocomplete_controller.h index be43159..3a5da688 100644 --- a/components/omnibox/browser/autocomplete_controller.h +++ b/components/omnibox/browser/autocomplete_controller.h
@@ -372,8 +372,8 @@ AutocompleteInput input, const base::ElapsedTimer elapsed_timer, base::OnceClosure completion_callback, - std::vector<std::pair<absl::optional<float>, size_t>> - outputs_and_match_indices); + std::vector<std::tuple<absl::optional<float>, size_t, GURL>> + outputs_and_match_info); // Runs the ML scoring model asynchronously for all the eligible matches in // `results_.matches_`. Passes `completion_callback` to
diff --git a/components/omnibox/browser/autocomplete_scoring_model_service.cc b/components/omnibox/browser/autocomplete_scoring_model_service.cc index b8533cf6..8257723 100644 --- a/components/omnibox/browser/autocomplete_scoring_model_service.cc +++ b/components/omnibox/browser/autocomplete_scoring_model_service.cc
@@ -39,19 +39,24 @@ const metrics::OmniboxEventProto::Suggestion::ScoringSignals& scoring_signals, size_t match_index, + GURL match_destination_url, ResultCallback result_callback) { TRACE_EVENT0("omnibox", "AutocompleteScoringModelService::ScoreAutocompleteUrlMatch"); if (!UrlScoringModelAvailable()) { - std::move(result_callback).Run(std::make_pair(absl::nullopt, match_index)); + std::move(result_callback) + .Run( + std::make_tuple(absl::nullopt, match_index, match_destination_url)); return; } absl::optional<std::vector<float>> input_signals = url_scoring_model_handler_->GetModelInput(scoring_signals); if (!input_signals) { - std::move(result_callback).Run(std::make_pair(absl::nullopt, match_index)); + std::move(result_callback) + .Run( + std::make_tuple(absl::nullopt, match_index, match_destination_url)); return; } @@ -59,7 +64,7 @@ tracker, base::BindOnce(&AutocompleteScoringModelService::ProcessModelOutput, base::Unretained(this), std::move(result_callback), - match_index), + match_index, match_destination_url), *input_signals); } @@ -71,6 +76,7 @@ void AutocompleteScoringModelService::ProcessModelOutput( ResultCallback result_callback, size_t match_index, + GURL match_destination_url, const absl::optional<AutocompleteScoringModelExecutor::ModelOutput>& model_output) { TRACE_EVENT0("omnibox", @@ -78,10 +84,12 @@ if (model_output.has_value()) { if (!model_output.value().empty()) { std::move(result_callback) - .Run(std::make_pair(model_output.value()[0], match_index)); + .Run(std::make_tuple(model_output.value()[0], match_index, + match_destination_url)); return; } NOTREACHED() << "The model generated an empty output vector."; } - std::move(result_callback).Run(std::make_pair(absl::nullopt, match_index)); + std::move(result_callback) + .Run(std::make_tuple(absl::nullopt, match_index, match_destination_url)); }
diff --git a/components/omnibox/browser/autocomplete_scoring_model_service.h b/components/omnibox/browser/autocomplete_scoring_model_service.h index ad50eff..153f56f3 100644 --- a/components/omnibox/browser/autocomplete_scoring_model_service.h +++ b/components/omnibox/browser/autocomplete_scoring_model_service.h
@@ -23,7 +23,7 @@ class AutocompleteScoringModelService : public KeyedService { public: using ResultCallback = - base::OnceCallback<void(std::pair<absl::optional<float>, size_t>)>; + base::OnceCallback<void(std::tuple<absl::optional<float>, size_t, GURL>)>; explicit AutocompleteScoringModelService( optimization_guide::OptimizationGuideModelProvider* model_provider); @@ -42,6 +42,7 @@ const metrics::OmniboxEventProto::Suggestion::ScoringSignals& scoring_signals, size_t match_index, + GURL match_destination_url, ResultCallback result_callback); // Returns whether the scoring model is loaded and the pointer to the @@ -55,6 +56,7 @@ void ProcessModelOutput( ResultCallback result_callback, size_t match_index, + GURL match_destination_url, const absl::optional<AutocompleteScoringModelExecutor::ModelOutput>& model_output);
diff --git a/components/safe_browsing/content/browser/browser_url_loader_throttle.cc b/components/safe_browsing/content/browser/browser_url_loader_throttle.cc index bc88b051..5f43cec 100644 --- a/components/safe_browsing/content/browser/browser_url_loader_throttle.cc +++ b/components/safe_browsing/content/browser/browser_url_loader_throttle.cc
@@ -389,9 +389,16 @@ "WillRedirectRequestAfterWillProcessResponse", will_process_response_count_ > 0); + // TODO(crbug.com/1410939): Below histograms are for debugging. Remove them + // afterwards. safe_browsing::scheme_logger::LogScheme( original_url_, "SafeBrowsing.BrowserThrottle.RedirectedOriginalUrlScheme"); + if (original_url_.SchemeIs("chrome-extension")) { + safe_browsing::scheme_logger::LogScheme( + redirect_info->new_url, + "SafeBrowsing.BrowserThrottle.RedirectedExtensionUrlScheme"); + } if (blocked_) { // OnCheckUrlResult() has set |blocked_| to true and called
diff --git a/components/safe_browsing/core/browser/db/v4_database.cc b/components/safe_browsing/core/browser/db/v4_database.cc index f095a7e..06c79cc 100644 --- a/components/safe_browsing/core/browser/db/v4_database.cc +++ b/components/safe_browsing/core/browser/db/v4_database.cc
@@ -7,6 +7,7 @@ #include <memory> #include <utility> +#include "base/debug/crash_logging.h" #include "base/files/file_util.h" #include "base/functional/bind.h" #include "base/functional/callback.h" @@ -98,6 +99,9 @@ if (!g_store_factory.Get()) g_store_factory.Get() = std::make_unique<V4StoreFactory>(); + SCOPED_CRASH_KEY_STRING256("SafeBrowsing", "database-path", + base_path.AsUTF8Unsafe()); + if (!base::CreateDirectory(base_path)) NOTREACHED();
diff --git a/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc b/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc index c7be77ad..02ba946 100644 --- a/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc +++ b/components/safe_browsing/core/browser/realtime/url_lookup_service_base.cc
@@ -281,12 +281,11 @@ } void RealTimeUrlLookupServiceBase::MayBeCacheRealTimeUrlVerdict( - const GURL& url, RTLookupResponse response) { if (cache_manager_ && response.threat_info_size() > 0) { base::SequencedTaskRunner::GetCurrentDefault()->PostTask( FROM_HERE, base::BindOnce(&VerdictCacheManager::CacheRealTimeUrlVerdict, - cache_manager_->GetWeakPtr(), url, response, + cache_manager_->GetWeakPtr(), response, base::Time::Now())); } } @@ -378,7 +377,7 @@ // NOTE: Pass |callback_task_runner| by copying it here as it's also needed // just below. SendRequestInternal( - std::move(resource_request), req_data, url, access_token_string, + std::move(resource_request), req_data, access_token_string, std::move(response_callback), callback_task_runner, request->population().user_population(), is_sampled_report); @@ -390,7 +389,6 @@ void RealTimeUrlLookupServiceBase::SendRequestInternal( std::unique_ptr<network::ResourceRequest> resource_request, const std::string& req_data, - const GURL& url, absl::optional<std::string> access_token_string, RTLookupResponseCallback response_callback, scoped_refptr<base::SequencedTaskRunner> callback_task_runner, @@ -408,15 +406,14 @@ owned_loader->DownloadToStringOfUnboundedSizeUntilCrashAndDie( url_loader_factory_.get(), base::BindOnce(&RealTimeUrlLookupServiceBase::OnURLLoaderComplete, - GetWeakPtr(), url, access_token_string, loader, - user_population, base::TimeTicks::Now(), is_sampled_report, + GetWeakPtr(), access_token_string, loader, user_population, + base::TimeTicks::Now(), is_sampled_report, std::move(callback_task_runner))); pending_requests_[owned_loader.release()] = std::move(response_callback); } void RealTimeUrlLookupServiceBase::OnURLLoaderComplete( - const GURL& url, absl::optional<std::string> access_token_string, network::SimpleURLLoader* url_loader, ChromeUserPopulation::UserPopulation user_population, @@ -463,7 +460,7 @@ is_rt_lookup_successful ? backoff_operator_->ReportSuccess() : backoff_operator_->ReportError(); - MayBeCacheRealTimeUrlVerdict(url, *response); + MayBeCacheRealTimeUrlVerdict(*response); RecordCount100WithAndWithoutSuffix("SafeBrowsing.RT.ThreatInfoSize", GetMetricSuffix(),
diff --git a/components/safe_browsing/core/browser/realtime/url_lookup_service_base.h b/components/safe_browsing/core/browser/realtime/url_lookup_service_base.h index 4d187ce..d62b608 100644 --- a/components/safe_browsing/core/browser/realtime/url_lookup_service_base.h +++ b/components/safe_browsing/core/browser/realtime/url_lookup_service_base.h
@@ -210,9 +210,8 @@ std::unique_ptr<RTLookupResponse> GetCachedRealTimeUrlVerdict( const GURL& url); - // Called to post a task to store the response keyed by the |url| in - // |cache_manager|. - void MayBeCacheRealTimeUrlVerdict(const GURL& url, RTLookupResponse response); + // Called to post a task to store the response in |cache_manager|. + void MayBeCacheRealTimeUrlVerdict(RTLookupResponse response); // Get a resource request with URL, load_flags and method set. std::unique_ptr<network::ResourceRequest> GetResourceRequest(); @@ -220,7 +219,6 @@ void SendRequestInternal( std::unique_ptr<network::ResourceRequest> resource_request, const std::string& req_data, - const GURL& url, absl::optional<std::string> access_token_string, RTLookupResponseCallback response_callback, scoped_refptr<base::SequencedTaskRunner> callback_task_runner, @@ -230,11 +228,10 @@ // Called when the response from the real-time lookup remote endpoint is // received. |url_loader| is the unowned loader that was used to send the // request. |request_start_time| is the time when the request was sent. - // |response_body| is the response received. |url| is used for calling - // |MayBeCacheRealTimeUrlVerdict|. |access_token_string| is used for calling - // |OnResponseUnauthorized| in case the response code is HTTP_UNAUTHORIZED. + // |response_body| is the response received. |access_token_string| is used for + // calling |OnResponseUnauthorized| in case the response code is + // HTTP_UNAUTHORIZED. void OnURLLoaderComplete( - const GURL& url, absl::optional<std::string> access_token_string, network::SimpleURLLoader* url_loader, ChromeUserPopulation::UserPopulation user_population,
diff --git a/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc b/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc index 97950f5..40c7910 100644 --- a/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc +++ b/components/safe_browsing/core/browser/realtime/url_lookup_service_unittest.cc
@@ -147,7 +147,6 @@ } void MayBeCacheRealTimeUrlVerdict( - GURL url, RTLookupResponse::ThreatInfo::VerdictType verdict_type, RTLookupResponse::ThreatInfo::ThreatType threat_type, int cache_duration_sec, @@ -162,7 +161,7 @@ new_threat_info->set_cache_expression_using_match_type(cache_expression); new_threat_info->set_cache_expression_match_type( cache_expression_match_type); - rt_service_->MayBeCacheRealTimeUrlVerdict(url, response); + rt_service_->MayBeCacheRealTimeUrlVerdict(response); } void SetUpRTLookupResponse( @@ -427,7 +426,7 @@ TEST_F(RealTimeUrlLookupServiceTest, TestCacheInCacheManager) { GURL url("https://a.example.test/path1/path2"); - MayBeCacheRealTimeUrlVerdict(url, RTLookupResponse::ThreatInfo::DANGEROUS, + MayBeCacheRealTimeUrlVerdict(RTLookupResponse::ThreatInfo::DANGEROUS, RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "a.example.test/path1/path2", RTLookupResponse::ThreatInfo::COVERING_MATCH); @@ -445,7 +444,7 @@ TEST_F(RealTimeUrlLookupServiceTest, TestStartLookup_ResponseIsAlreadyCached) { base::HistogramTester histograms; GURL url(kTestUrl); - MayBeCacheRealTimeUrlVerdict(url, RTLookupResponse::ThreatInfo::DANGEROUS, + MayBeCacheRealTimeUrlVerdict(RTLookupResponse::ThreatInfo::DANGEROUS, RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "example.test/", RTLookupResponse::ThreatInfo::COVERING_MATCH); @@ -901,8 +900,6 @@ } TEST_F(RealTimeUrlLookupServiceTest, TestShutdown_CacheManagerReset) { - GURL url("https://a.example.test/path1/path2"); - // Shutdown and delete depending objects. rt_service()->Shutdown(); cache_manager_.reset(); @@ -910,7 +907,7 @@ content_setting_map_.reset(); // Post a task to cache_manager_ to cache the verdict. - MayBeCacheRealTimeUrlVerdict(url, RTLookupResponse::ThreatInfo::DANGEROUS, + MayBeCacheRealTimeUrlVerdict(RTLookupResponse::ThreatInfo::DANGEROUS, RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "a.example.test/path1/path2", RTLookupResponse::ThreatInfo::COVERING_MATCH);
diff --git a/components/safe_browsing/core/browser/verdict_cache_manager.cc b/components/safe_browsing/core/browser/verdict_cache_manager.cc index fd30354..b804d23 100644 --- a/components/safe_browsing/core/browser/verdict_cache_manager.cc +++ b/components/safe_browsing/core/browser/verdict_cache_manager.cc
@@ -612,7 +612,6 @@ } void VerdictCacheManager::CacheRealTimeUrlVerdict( - const GURL& url, const RTLookupResponse& verdict, const base::Time& receive_time) { if (is_shut_down_) { @@ -1095,7 +1094,7 @@ RTLookupResponse::ThreatInfo::EXACT_MATCH); RemoveContentSettingsOnURLsDeleted(/*all_history=*/false, {history::URLRow(artificial_unsafe_url)}); - CacheRealTimeUrlVerdict(artificial_unsafe_url, response, base::Time::Now()); + CacheRealTimeUrlVerdict(response, base::Time::Now()); } void VerdictCacheManager::CacheArtificialPhishGuardVerdict() {
diff --git a/components/safe_browsing/core/browser/verdict_cache_manager.h b/components/safe_browsing/core/browser/verdict_cache_manager.h index 6fa1b83..edcc7c63 100644 --- a/components/safe_browsing/core/browser/verdict_cache_manager.h +++ b/components/safe_browsing/core/browser/verdict_cache_manager.h
@@ -77,10 +77,9 @@ size_t GetStoredPhishGuardVerdictCount( LoginReputationClientRequest::TriggerType trigger_type); - // Stores |verdict| in |content_settings_| based on its |url|, |verdict| and + // Stores |verdict| in |content_settings_| based on its |verdict| and // |receive_time|. - void CacheRealTimeUrlVerdict(const GURL& url, - const RTLookupResponse& verdict, + void CacheRealTimeUrlVerdict(const RTLookupResponse& verdict, const base::Time& receive_time); // Looks up |content_settings_| to find the cached verdict response. If
diff --git a/components/safe_browsing/core/browser/verdict_cache_manager_unittest.cc b/components/safe_browsing/core/browser/verdict_cache_manager_unittest.cc index 85e9f701..74dfc433 100644 --- a/components/safe_browsing/core/browser/verdict_cache_manager_unittest.cc +++ b/components/safe_browsing/core/browser/verdict_cache_manager_unittest.cc
@@ -406,8 +406,7 @@ RTLookupResponse::ThreatInfo::UNWANTED_SOFTWARE, 60, "www.example.com/path", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); ASSERT_EQ(2u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); // Prepare 2 page load tokens: @@ -569,7 +568,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "www.example.com/path", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, @@ -606,7 +605,7 @@ RTLookupResponse::ThreatInfo::UNCLEAR_BILLING, 60, "www.example.com/path", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url2, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, @@ -633,7 +632,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 0, "www.example.com/path", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::VERDICT_TYPE_UNSPECIFIED, @@ -649,7 +648,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "www.example.com/path", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, cache_manager_->GetCachedRealTimeUrlVerdict(url, &out_verdict)); @@ -683,7 +682,7 @@ safe_browsing::ClientSideDetectionType:: CLIENT_SIDE_DETECTION_TYPE_UNSPECIFIED); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::SUSPICIOUS, @@ -711,7 +710,7 @@ response2.set_client_side_detection_type( safe_browsing::ClientSideDetectionType::FORCE_REQUEST); - cache_manager_->CacheRealTimeUrlVerdict(url, response2, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response2, base::Time::Now()); EXPECT_EQ( static_cast<int>(safe_browsing::ClientSideDetectionType::FORCE_REQUEST), @@ -720,7 +719,6 @@ TEST_F(VerdictCacheManagerTest, TestHostSuffixMatching) { // Password protection verdict. - GURL url("https://a.example.test/path"); ReusedPasswordAccountType password_type; password_type.set_account_type(ReusedPasswordAccountType::GSUITE); password_type.set_is_account_syncing(true); @@ -742,7 +740,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "example.test/path/", RTLookupResponse::ThreatInfo::COVERING_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, cache_manager_->GetCachedRealTimeUrlVerdict( @@ -781,8 +779,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING, 60, "a.example.test/path1/", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict( - GURL("https://a.example.test/path1/path2"), response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, @@ -807,7 +804,7 @@ RTLookupResponse::ThreatInfo::SOCIAL_ENGINEERING); new_threat_info->set_cache_duration_sec(60); new_threat_info->set_cache_expression_using_match_type(cache_expression); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); RTLookupResponse::ThreatInfo out_verdict; // If |cache_expression_match_type| is not set, ignore this cache. @@ -819,7 +816,7 @@ new_threat_info->set_cache_expression_match_type( RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(url, response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); // Should be able to get the cache if |cache_expression_match_type| is set. EXPECT_EQ(RTLookupResponse::ThreatInfo::DANGEROUS, cache_manager_->GetCachedRealTimeUrlVerdict(url, &out_verdict)); @@ -835,8 +832,7 @@ "www.example.com/", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); ASSERT_EQ(1u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); task_environment_.FastForwardBy(base::Seconds(119)); ASSERT_EQ(1u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); @@ -844,8 +840,7 @@ task_environment_.FastForwardBy(base::Seconds(2)); ASSERT_EQ(0u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); task_environment_.FastForwardBy(base::Seconds(1798)); ASSERT_EQ(1u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); // The second cleanup task should happen at 120 + 1800 seconds after @@ -853,8 +848,7 @@ task_environment_.FastForwardBy(base::Seconds(2)); ASSERT_EQ(0u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); task_environment_.FastForwardBy(base::Seconds(1798)); ASSERT_EQ(1u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); // The third cleanup task should happen at 120 + 1800 + 1800 seconds after @@ -872,8 +866,7 @@ "www.example.com/", RTLookupResponse::ThreatInfo::EXACT_MATCH); - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); ASSERT_EQ(1u, cache_manager_->GetStoredRealTimeUrlCheckVerdictCount()); // Fast forward by 8 days. task_environment_.FastForwardBy(base::Seconds(8 * 24 * 60 * 60)); @@ -955,8 +948,7 @@ cache_manager_->Shutdown(); RTLookupResponse rt_response; // Call to cache_manager after shutdown should not cause a crash. - cache_manager_->CacheRealTimeUrlVerdict(GURL("https://www.example.com/"), - rt_response, base::Time::Now()); + cache_manager_->CacheRealTimeUrlVerdict(rt_response, base::Time::Now()); RTLookupResponse::ThreatInfo out_rt_verdict; cache_manager_->GetCachedRealTimeUrlVerdict( GURL("https://www.example.com/path"), &out_rt_verdict);
diff --git a/components/services/storage/public/cpp/filesystem/filesystem_impl.cc b/components/services/storage/public/cpp/filesystem/filesystem_impl.cc index 4f9cfe24..faac14f 100644 --- a/components/services/storage/public/cpp/filesystem/filesystem_impl.cc +++ b/components/services/storage/public/cpp/filesystem/filesystem_impl.cc
@@ -97,13 +97,16 @@ } // namespace -FilesystemImpl::FilesystemImpl(const base::FilePath& root) : root_(root) {} +FilesystemImpl::FilesystemImpl(const base::FilePath& root, + ClientType client_type) + : root_(root), client_type_(client_type) {} FilesystemImpl::~FilesystemImpl() = default; void FilesystemImpl::Clone(mojo::PendingReceiver<mojom::Directory> receiver) { - mojo::MakeSelfOwnedReceiver(std::make_unique<FilesystemImpl>(root_), - std::move(receiver)); + mojo::MakeSelfOwnedReceiver( + std::make_unique<FilesystemImpl>(root_, client_type_), + std::move(receiver)); } void FilesystemImpl::PathExists(const base::FilePath& path, @@ -189,8 +192,10 @@ break; } - // This file may be passed to an untrusted process. - flags = base::File::AddFlagsForPassingToUntrustedProcess(flags); + if (client_type_ == ClientType::kUntrusted) { + // This file may be passed to an untrusted process. + flags = base::File::AddFlagsForPassingToUntrustedProcess(flags); + } const base::FilePath full_path = MakeAbsolute(path); base::File file(full_path, flags);
diff --git a/components/services/storage/public/cpp/filesystem/filesystem_impl.h b/components/services/storage/public/cpp/filesystem/filesystem_impl.h index 90ac122d..92c9074 100644 --- a/components/services/storage/public/cpp/filesystem/filesystem_impl.h +++ b/components/services/storage/public/cpp/filesystem/filesystem_impl.h
@@ -28,11 +28,26 @@ class COMPONENT_EXPORT(STORAGE_SERVICE_FILESYSTEM_SUPPORT) FilesystemImpl : public mojom::Directory { public: + enum class ClientType { + // No additional restrictions are placed on file objects returned by this + // implementation. + kTrusted, + + // The client is not trusted to handle certain types of file objects, + // so this object must not return such objects to the client. In + // particular, such clients are not trusted with file handles that + // are both executable and writable. See + // base::File::AddFlagsForPassingToUntrustedProcess. + kUntrusted, + }; + // |root| must be an absolute path. Operations performed by this object // will be contained within |root| or a transitive subdirectory thereof. All // relative paths given to methods of this object are interpreted as relative // to |root|. - explicit FilesystemImpl(const base::FilePath& root); + // |client_type| specifies the level of trust the client has in handling + // certain types of file objects. + FilesystemImpl(const base::FilePath& root, ClientType client_type); FilesystemImpl(const FilesystemImpl&) = delete; FilesystemImpl& operator=(const FilesystemImpl) = delete; @@ -93,6 +108,7 @@ base::FilePath MakeAbsolute(const base::FilePath& path) const; const base::FilePath root_; + const ClientType client_type_; }; } // namespace storage
diff --git a/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc b/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc index d8b2e46..0440ad9 100644 --- a/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc +++ b/components/services/storage/public/cpp/filesystem/filesystem_proxy_unittest.cc
@@ -76,15 +76,18 @@ // restricted FilesystemProxy behavior. mojo::PendingRemote<mojom::Directory> remote; base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}) - ->PostTask(FROM_HERE, - base::BindOnce( - [](const base::FilePath& root, - mojo::PendingReceiver<mojom::Directory> receiver) { - mojo::MakeSelfOwnedReceiver( - std::make_unique<FilesystemImpl>(root), - std::move(receiver)); - }, - root, remote.InitWithNewPipeAndPassReceiver())); + ->PostTask( + FROM_HERE, + base::BindOnce( + [](const base::FilePath& root, + mojo::PendingReceiver<mojom::Directory> receiver) { + mojo::MakeSelfOwnedReceiver( + std::make_unique<FilesystemImpl>( + root, + storage::FilesystemImpl::ClientType::kUntrusted), + std::move(receiver)); + }, + root, remote.InitWithNewPipeAndPassReceiver())); proxy_ = std::make_unique<FilesystemProxy>( FilesystemProxy::RESTRICTED, root, std::move(remote), base::ThreadPool::CreateSequencedTaskRunner({}));
diff --git a/components/services/unzip/BUILD.gn b/components/services/unzip/BUILD.gn index 1bd0881..1342587 100644 --- a/components/services/unzip/BUILD.gn +++ b/components/services/unzip/BUILD.gn
@@ -16,7 +16,7 @@ ] public_deps = [ - "//components/services/filesystem/public/mojom", + "//components/services/storage/public/cpp/filesystem", "//components/services/unzip/public/mojom", ] }
diff --git a/components/services/unzip/public/cpp/BUILD.gn b/components/services/unzip/public/cpp/BUILD.gn index 9995f658..4524e91 100644 --- a/components/services/unzip/public/cpp/BUILD.gn +++ b/components/services/unzip/public/cpp/BUILD.gn
@@ -11,7 +11,7 @@ ] public_deps = [ - "//components/services/filesystem:lib", + "//components/services/storage/public/cpp/filesystem", "//components/services/unzip/public/mojom", ] }
diff --git a/components/services/unzip/public/cpp/unzip.cc b/components/services/unzip/public/cpp/unzip.cc index 837fa2b..4546f09 100644 --- a/components/services/unzip/public/cpp/unzip.cc +++ b/components/services/unzip/public/cpp/unzip.cc
@@ -21,7 +21,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/task/thread_pool.h" #include "base/time/time.h" -#include "components/services/filesystem/directory_impl.h" +#include "components/services/storage/public/cpp/filesystem/filesystem_impl.h" #include "components/services/unzip/public/mojom/unzipper.mojom.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h" @@ -175,11 +175,14 @@ const base::FilePath& output_dir, UnzipFilterCallback filter_callback, UnzipListenerCallback listener_callback, - mojo::PendingRemote<filesystem::mojom::Directory>& directory_remote, + mojo::PendingRemote<storage::mojom::Directory>& directory_remote, mojo::PendingRemote<unzip::mojom::UnzipFilter>& filter_remote, mojo::PendingRemote<unzip::mojom::UnzipListener>& listener_remote) { + // kTrusted is set to allow the unzipping process to handle all types of + // files. mojo::MakeSelfOwnedReceiver( - std::make_unique<filesystem::DirectoryImpl>(output_dir, nullptr), + std::make_unique<storage::FilesystemImpl>( + output_dir, storage::FilesystemImpl::ClientType::kTrusted), directory_remote.InitWithNewPipeAndPassReceiver()); unzip_params->unzipper().set_disconnect_handler( @@ -217,7 +220,7 @@ auto unzip_params = base::MakeRefCounted<UnzipParams>( std::move(unzipper), std::move(result_callback)); - mojo::PendingRemote<filesystem::mojom::Directory> directory_remote; + mojo::PendingRemote<storage::mojom::Directory> directory_remote; mojo::PendingRemote<unzip::mojom::UnzipFilter> filter_remote; mojo::PendingRemote<unzip::mojom::UnzipListener> listener_remote; PrepareUnzipParams(unzip_params, output_dir, filter_callback, @@ -382,7 +385,7 @@ unzip_params = base::MakeRefCounted<UnzipParams>(std::move(unzipper), std::move(result_callback)); - mojo::PendingRemote<filesystem::mojom::Directory> directory_remote; + mojo::PendingRemote<storage::mojom::Directory> directory_remote; mojo::PendingRemote<unzip::mojom::UnzipFilter> filter_remote; mojo::PendingRemote<unzip::mojom::UnzipListener> listener_remote; PrepareUnzipParams(unzip_params, output_dir, filter_callback,
diff --git a/components/services/unzip/public/cpp/unzip.h b/components/services/unzip/public/cpp/unzip.h index 8f3411c3..f5430257 100644 --- a/components/services/unzip/public/cpp/unzip.h +++ b/components/services/unzip/public/cpp/unzip.h
@@ -85,7 +85,6 @@ base::File zip_file_; scoped_refptr<UnzipParams> params_; - mojo::PendingRemote<filesystem::mojom::Directory> directory_remote_; mojo::PendingRemote<unzip::mojom::UnzipFilter> filter_remote_; mojo::PendingRemote<unzip::mojom::UnzipListener> listener_remote_; };
diff --git a/components/services/unzip/public/mojom/BUILD.gn b/components/services/unzip/public/mojom/BUILD.gn index 80374a0d..17b8d7e5 100644 --- a/components/services/unzip/public/mojom/BUILD.gn +++ b/components/services/unzip/public/mojom/BUILD.gn
@@ -8,7 +8,7 @@ sources = [ "unzipper.mojom" ] public_deps = [ - "//components/services/filesystem/public/mojom", + "//components/services/storage/public/mojom/filesystem", "//mojo/public/mojom/base", "//sandbox/policy/mojom", ]
diff --git a/components/services/unzip/public/mojom/unzipper.mojom b/components/services/unzip/public/mojom/unzipper.mojom index c1dcad7a..ee99e7f 100644 --- a/components/services/unzip/public/mojom/unzipper.mojom +++ b/components/services/unzip/public/mojom/unzipper.mojom
@@ -4,7 +4,7 @@ module unzip.mojom; -import "components/services/filesystem/public/mojom/directory.mojom"; +import "components/services/storage/public/mojom/filesystem/directory.mojom"; import "mojo/public/mojom/base/file_path.mojom"; import "mojo/public/mojom/base/read_only_file.mojom"; import "sandbox/policy/mojom/sandbox.mojom"; @@ -55,7 +55,7 @@ // If provided, |listener| is called repeatedly with the bytes extracted. Unzip( mojo_base.mojom.ReadOnlyFile zip_file, - pending_remote<filesystem.mojom.Directory> output_dir, + pending_remote<storage.mojom.Directory> output_dir, UnzipOptions options, pending_remote<UnzipFilter>? filter, pending_remote<UnzipListener>? listener) => (bool result);
diff --git a/components/services/unzip/unzipper_impl.cc b/components/services/unzip/unzipper_impl.cc index 7e23b857..c7878354 100644 --- a/components/services/unzip/unzipper_impl.cc +++ b/components/services/unzip/unzipper_impl.cc
@@ -9,12 +9,12 @@ #include "base/compiler_specific.h" #include "base/files/file.h" +#include "base/files/file_error_or.h" #include "base/functional/bind.h" #include "base/logging.h" #include "base/memory/raw_ptr.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" -#include "components/services/filesystem/public/mojom/directory.mojom.h" #include "third_party/ced/src/compact_enc_det/compact_enc_det.h" #include "third_party/zlib/google/redact.h" #include "third_party/zlib/google/zip.h" @@ -23,19 +23,17 @@ namespace unzip { namespace { -// Modifies output_dir to point to the final directory. -bool CreateDirectory(filesystem::mojom::Directory* output_dir, +bool CreateDirectory(storage::mojom::Directory* output_dir, const base::FilePath& path) { - base::File::Error err = base::File::Error::FILE_OK; - return output_dir->OpenDirectory(path.AsUTF8Unsafe(), mojo::NullReceiver(), - filesystem::mojom::kFlagOpenAlways, &err) && - err == base::File::Error::FILE_OK; + base::File::Error error = base::File::FILE_ERROR_IO; + output_dir->CreateDirectory(path, &error); + return error == base::File::FILE_OK; } -// A file writer that uses a mojom::Directory. +// A file writer that uses a storage::FilesystemProxy. class Writer : public zip::FileWriterDelegate { public: - Writer(mojo::Remote<filesystem::mojom::Directory> output_dir, + Writer(mojo::Remote<storage::mojom::Directory> output_dir, base::FilePath path) : FileWriterDelegate(base::File()), owned_output_dir_(std::move(output_dir)), @@ -44,7 +42,7 @@ DCHECK(output_dir_); } - Writer(filesystem::mojom::Directory* output_dir, base::FilePath path) + Writer(storage::mojom::Directory* output_dir, base::FilePath path) : FileWriterDelegate(base::File()), output_dir_(output_dir), path_(std::move(path)) { @@ -53,13 +51,12 @@ // Creates the output file. bool PrepareOutput() override { - if (base::File::Error err; - !output_dir_->OpenFileHandle( - path_.AsUTF8Unsafe(), - filesystem::mojom::kFlagCreate | filesystem::mojom::kFlagWrite | - filesystem::mojom::kFlagWriteAttributes, - &err, &owned_file_) || - err != base::File::Error::FILE_OK) { + base::File::Error error = base::File::FILE_ERROR_IO; + output_dir_->OpenFile( + path_, storage::mojom::FileOpenMode::kCreateAndOpenOnlyIfNotExists, + storage::mojom::FileReadAccess::kReadAllowed, + storage::mojom::FileWriteAccess::kWriteAllowed, &error, &owned_file_); + if (error != base::File::FILE_OK) { LOG(ERROR) << "Cannot create extracted file " << zip::Redact(path_); return false; } @@ -72,36 +69,32 @@ FileWriterDelegate::OnError(); owned_file_.Close(); - if (base::File::Error err; - !output_dir_->Delete(path_.AsUTF8Unsafe(), 0, &err) || - err != base::File::Error::FILE_OK) { + bool success = false; + output_dir_->DeleteFile(path_, &success); + if (!success) { LOG(ERROR) << "Cannot delete extracted file " << zip::Redact(path_); } } private: - const mojo::Remote<filesystem::mojom::Directory> owned_output_dir_; - const raw_ptr<filesystem::mojom::Directory> output_dir_; + const mojo::Remote<storage::mojom::Directory> owned_output_dir_; + const raw_ptr<storage::mojom::Directory> output_dir_; const base::FilePath path_; }; std::unique_ptr<zip::WriterDelegate> MakeFileWriterDelegate( - filesystem::mojom::Directory* output_dir, + storage::mojom::Directory* output_dir, const base::FilePath& path) { if (path == path.BaseName()) return std::make_unique<Writer>(output_dir, path); - mojo::Remote<filesystem::mojom::Directory> parent; - - if (base::File::Error err; - !output_dir->OpenDirectory(path.DirName().AsUTF8Unsafe(), - parent.BindNewPipeAndPassReceiver(), - filesystem::mojom::kFlagOpenAlways, &err) || - err != base::File::Error::FILE_OK) { + base::File::Error error = base::File::FILE_ERROR_IO; + output_dir->CreateDirectory(path.DirName(), &error); + if (error != base::File::Error::FILE_OK) { return nullptr; } - return std::make_unique<Writer>(std::move(parent), path.BaseName()); + return std::make_unique<Writer>(output_dir, path); } bool Filter(const mojo::Remote<mojom::UnzipFilter>& filter, @@ -189,30 +182,13 @@ listener->OnProgress(bytes); } -bool DoUnzip(base::File zip_file, - mojo::Remote<filesystem::mojom::Directory> output_dir, - std::string encoding_name, - std::string password, - zip::FilterCallback filter_cb, - zip::UnzipProgressCallback progress_cb) { - return zip::Unzip( - zip_file.GetPlatformFile(), - base::BindRepeating(&MakeFileWriterDelegate, output_dir.get()), - base::BindRepeating(&CreateDirectory, output_dir.get()), - {.encoding = std::move(encoding_name), - .filter = std::move(filter_cb), - .progress = std::move(progress_cb), - .password = std::move(password)}); -} - -bool RunUnzip( - base::File zip_file, - mojo::PendingRemote<filesystem::mojom::Directory> output_dir_remote, - std::string encoding_name, - std::string password, - mojo::PendingRemote<mojom::UnzipFilter> filter_remote, - mojo::PendingRemote<mojom::UnzipListener> listener_remote) { - mojo::Remote<filesystem::mojom::Directory> output_dir( +bool RunUnzip(base::File zip_file, + mojo::PendingRemote<storage::mojom::Directory> output_dir_remote, + std::string encoding_name, + std::string password, + mojo::PendingRemote<mojom::UnzipFilter> filter_remote, + mojo::PendingRemote<mojom::UnzipListener> listener_remote) { + mojo::Remote<storage::mojom::Directory> output_dir( std::move(output_dir_remote)); zip::FilterCallback filter_cb; @@ -239,7 +215,7 @@ void UnzipperImpl::Unzip( base::File zip_file, - mojo::PendingRemote<filesystem::mojom::Directory> output_dir_remote, + mojo::PendingRemote<storage::mojom::Directory> output_dir_remote, mojom::UnzipOptionsPtr set_options, mojo::PendingRemote<mojom::UnzipFilter> filter_remote, mojo::PendingRemote<mojom::UnzipListener> listener_remote,
diff --git a/components/services/unzip/unzipper_impl.h b/components/services/unzip/unzipper_impl.h index b45629c..0d4d554 100644 --- a/components/services/unzip/unzipper_impl.h +++ b/components/services/unzip/unzipper_impl.h
@@ -9,6 +9,7 @@ #include "base/memory/weak_ptr.h" #include "base/task/sequenced_task_runner.h" #include "base/task/thread_pool.h" +#include "components/services/storage/public/cpp/filesystem/filesystem_impl.h" #include "components/services/unzip/public/mojom/unzipper.mojom.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" @@ -36,13 +37,12 @@ private: // unzip::mojom::Unzipper: - void Unzip( - base::File zip_file, - mojo::PendingRemote<filesystem::mojom::Directory> output_dir_remote, - mojom::UnzipOptionsPtr options, - mojo::PendingRemote<mojom::UnzipFilter> filter_remote, - mojo::PendingRemote<mojom::UnzipListener> listener_remote, - UnzipCallback callback) override; + void Unzip(base::File zip_file, + mojo::PendingRemote<storage::mojom::Directory> output_dir_remote, + mojom::UnzipOptionsPtr options, + mojo::PendingRemote<mojom::UnzipFilter> filter_remote, + mojo::PendingRemote<mojom::UnzipListener> listener_remote, + UnzipCallback callback) override; void DetectEncoding(base::File zip_file, DetectEncodingCallback callback) override;
diff --git a/components/viz/service/display_embedder/image_context_impl.h b/components/viz/service/display_embedder/image_context_impl.h index 9b626651..1345f49 100644 --- a/components/viz/service/display_embedder/image_context_impl.h +++ b/components/viz/service/display_embedder/image_context_impl.h
@@ -69,10 +69,15 @@ const { return promise_image_textures_; } - std::unique_ptr<GrBackendSurfaceMutableState> TakeAccessEndState() const { + bool HasAccessEndState() const { return representation_scoped_read_access_ - ? representation_scoped_read_access_->TakeEndState() - : nullptr; + ? representation_scoped_read_access_->HasBackendSurfaceEndState() + : false; + } + void ApplyAccessEndState() const { + if (representation_scoped_read_access_) { + representation_scoped_read_access_->ApplyBackendSurfaceEndState(); + } } void SetPromiseImageTextures(
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index 271c895..182c9e7 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -1589,9 +1589,9 @@ context->BeginAccessIfNecessary( context_state_.get(), shared_image_representation_factory_.get(), dependency_->GetMailboxManager(), begin_semaphores, end_semaphores); - if (auto end_state = context->TakeAccessEndState()) - image_contexts_with_end_access_state_.emplace(context, - std::move(end_state)); + if (context->HasAccessEndState()) { + image_contexts_to_apply_end_state_.emplace(context); + } // Texture parameters can be modified by concurrent reads so reset them // before compositing from the texture. See https://crbug.com/1092080. @@ -1606,23 +1606,17 @@ } void SkiaOutputSurfaceImplOnGpu::ResetStateOfImages() { - for (auto& context : image_contexts_with_end_access_state_) { - for (SkPromiseImageTexture* promise_texture : - context.first->promise_image_textures()) { - if (!gr_context()->setBackendTextureState( - promise_texture->backendTexture(), *context.second)) { - DLOG(ERROR) << "setBackendTextureState() failed."; - } - } + for (auto* context : image_contexts_to_apply_end_state_) { + context->ApplyAccessEndState(); } - image_contexts_with_end_access_state_.clear(); + image_contexts_to_apply_end_state_.clear(); } void SkiaOutputSurfaceImplOnGpu::EndAccessImages( const base::flat_set<ImageContextImpl*>& image_contexts) { TRACE_EVENT0("viz", "SkiaOutputSurfaceImplOnGpu::EndAccessImages"); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DCHECK(image_contexts_with_end_access_state_.empty()); + DCHECK(image_contexts_to_apply_end_state_.empty()); for (auto* context : image_contexts) context->EndAccessIfNecessary(); }
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index fc9af64..411eba5 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -508,9 +508,7 @@ base::flat_set<ImageContextImpl*> image_contexts_; }; PromiseImageAccessHelper promise_image_access_helper_{this}; - base::flat_set<std::pair<ImageContextImpl*, - std::unique_ptr<GrBackendSurfaceMutableState>>> - image_contexts_with_end_access_state_; + base::flat_set<ImageContextImpl*> image_contexts_to_apply_end_state_; std::unique_ptr<SkiaOutputDevice> output_device_; std::unique_ptr<SkiaOutputDevice::ScopedPaint> scoped_output_device_paint_;
diff --git a/components/viz/test/test_in_process_context_provider.cc b/components/viz/test/test_in_process_context_provider.cc index 9f270d9b..88c3c38 100644 --- a/components/viz/test/test_in_process_context_provider.cc +++ b/components/viz/test/test_in_process_context_provider.cc
@@ -32,7 +32,7 @@ gpu::raster::GrShaderCache* gr_shader_cache, gpu::GpuProcessActivityFlags* activity_flags) : type_(type), activity_flags_(activity_flags) { - DCHECK(main_thread_checker_.CalledOnValidThread()); + CHECK(main_thread_checker_.CalledOnValidThread()); context_thread_checker_.DetachFromThread(); if (support_locking) { @@ -41,8 +41,8 @@ } TestInProcessContextProvider::~TestInProcessContextProvider() { - DCHECK(main_thread_checker_.CalledOnValidThread() || - context_thread_checker_.CalledOnValidThread()); + CHECK(main_thread_checker_.CalledOnValidThread() || + context_thread_checker_.CalledOnValidThread()); } void TestInProcessContextProvider::AddRef() const { @@ -54,7 +54,11 @@ } gpu::ContextResult TestInProcessContextProvider::BindToCurrentSequence() { - DCHECK(context_thread_checker_.CalledOnValidThread()); + CHECK(context_thread_checker_.CalledOnValidThread()); + + if (is_bound_) { + return gpu::ContextResult::kSuccess; + } auto* holder = TestGpuServiceHolder::GetInstance(); @@ -69,16 +73,18 @@ attribs.sample_buffers = 0; attribs.bind_generates_resource = false; - if (type_ == TestContextType::kGLES2) { + if (type_ == TestContextType::kGLES2 || + type_ == TestContextType::kGLES2WithRaster) { attribs.enable_gles2_interface = true; - attribs.enable_raster_interface = false; + attribs.enable_raster_interface = + type_ == TestContextType::kGLES2WithRaster; attribs.enable_oop_rasterization = false; gles2_context_ = std::make_unique<gpu::GLInProcessContext>(); auto result = gles2_context_->Initialize( TestGpuServiceHolder::GetInstance()->task_executor(), attribs, gpu::SharedMemoryLimits()); - DCHECK_EQ(result, gpu::ContextResult::kSuccess); + CHECK_EQ(result, gpu::ContextResult::kSuccess); caps_ = gles2_context_->GetCapabilities(); } else { @@ -92,7 +98,7 @@ auto result = raster_context_->Initialize( holder->task_executor(), attribs, gpu::SharedMemoryLimits(), holder->gpu_service()->gr_shader_cache(), activity_flags_); - DCHECK_EQ(result, gpu::ContextResult::kSuccess); + CHECK_EQ(result, gpu::ContextResult::kSuccess); caps_ = raster_context_->GetCapabilities(); @@ -106,33 +112,39 @@ ContextSupport(), base::SingleThreadTaskRunner::GetCurrentDefault()); cache_controller_->SetLock(GetLock()); + if (type_ == TestContextType::kGLES2WithRaster) { + gles2_raster_impl_ = + std::make_unique<gpu::raster::RasterImplementationGLES>( + ContextGL(), ContextSupport(), ContextCapabilities()); + } + + is_bound_ = true; return gpu::ContextResult::kSuccess; } gpu::gles2::GLES2Interface* TestInProcessContextProvider::ContextGL() { CheckValidThreadOrLockAcquired(); - DCHECK_EQ(type_, TestContextType::kGLES2); + CHECK(gles2_context_); return gles2_context_->GetImplementation(); } gpu::raster::RasterInterface* TestInProcessContextProvider::RasterInterface() { CheckValidThreadOrLockAcquired(); - DCHECK_NE(type_, TestContextType::kGLES2); - return raster_context_->GetImplementation(); + CHECK_NE(type_, TestContextType::kGLES2); + return raster_context_ ? raster_context_->GetImplementation() + : gles2_raster_impl_.get(); } gpu::ContextSupport* TestInProcessContextProvider::ContextSupport() { - if (gles2_context_) { - return gles2_context_->GetImplementation(); - } else { - return raster_context_->GetContextSupport(); - } + return gles2_context_ ? gles2_context_->GetImplementation() + : raster_context_->GetContextSupport(); } class GrDirectContext* TestInProcessContextProvider::GrContext() { CheckValidThreadOrLockAcquired(); - if (gr_context_) + if (gr_context_) { return gr_context_->get(); + } if (!gles2_context_) { return nullptr; @@ -151,11 +163,8 @@ gpu::SharedImageInterface* TestInProcessContextProvider::SharedImageInterface() { - if (gles2_context_) { - return gles2_context_->GetSharedImageInterface(); - } else { - return raster_context_->GetSharedImageInterface(); - } + return gles2_context_ ? gles2_context_->GetSharedImageInterface() + : raster_context_->GetSharedImageInterface(); } ContextCacheController* TestInProcessContextProvider::CacheController() { @@ -176,7 +185,8 @@ const gpu::GpuFeatureInfo& TestInProcessContextProvider::GetGpuFeatureInfo() const { CheckValidThreadOrLockAcquired(); - return gpu_feature_info_; + return gles2_context_ ? gles2_context_->GetGpuFeatureInfo() + : raster_context_->GetGpuFeatureInfo(); } void TestInProcessContextProvider::AddObserver(ContextLostObserver* obs) { @@ -194,7 +204,7 @@ } void TestInProcessContextProvider::ExecuteOnGpuThread(base::OnceClosure task) { - DCHECK(raster_context_); + CHECK(raster_context_); raster_context_->GetCommandBufferForTest() ->service_for_testing() ->ScheduleOutOfOrderTask(std::move(task));
diff --git a/components/viz/test/test_in_process_context_provider.h b/components/viz/test/test_in_process_context_provider.h index c64361b5..428fe4f 100644 --- a/components/viz/test/test_in_process_context_provider.h +++ b/components/viz/test/test_in_process_context_provider.h
@@ -36,9 +36,10 @@ namespace viz { enum TestContextType { - kGLES2, // Provides GLES2Interface. - kSoftwareRaster, // Provides RasterInterface for software raster. - kGpuRaster // Provides RasterInterface for GPU raster. + kGLES2, // Provides GLES2Interface. + kGLES2WithRaster, // Provides GLES2Interface and RasterInterface. + kSoftwareRaster, // Provides RasterInterface for software raster. + kGpuRaster // Provides RasterInterface for GPU raster. }; class TestInProcessContextProvider @@ -83,6 +84,7 @@ const TestContextType type_; raw_ptr<gpu::raster::GrShaderCache> gr_shader_cache_ = nullptr; raw_ptr<gpu::GpuProcessActivityFlags> activity_flags_ = nullptr; + bool is_bound_ = false; base::ThreadChecker main_thread_checker_; base::ThreadChecker context_thread_checker_; @@ -92,13 +94,13 @@ // Used for GLES2 contexts only. std::unique_ptr<gpu::GLInProcessContext> gles2_context_; std::unique_ptr<skia_bindings::GrContextForGLES2Interface> gr_context_; + std::unique_ptr<gpu::raster::RasterInterface> gles2_raster_impl_; // Used for raster contexts only. std::unique_ptr<gpu::RasterInProcessContext> raster_context_; std::unique_ptr<ContextCacheController> cache_controller_; absl::optional<base::Lock> context_lock_; - gpu::GpuFeatureInfo gpu_feature_info_; base::ObserverList<ContextLostObserver>::Unchecked observers_; };
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java index d988bfa..bb83a94 100644 --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java
@@ -92,6 +92,7 @@ private boolean mEchoCredProps; private WebAuthnBrowserBridge mBrowserBridge; private boolean mAttestationAcceptable; + private boolean mIsCrossOrigin; private enum ConditionalUiState { NONE, @@ -224,6 +225,7 @@ returnErrorAndResetCallback(webAuthSecurityChecksResults.securityCheckResult); return; } + mIsCrossOrigin = webAuthSecurityChecksResults.isCrossOrigin; boolean hasAllowCredentials = options.allowCredentials != null && options.allowCredentials.length != 0; @@ -247,8 +249,7 @@ prefetchCredentialsViaCredMan( options, callerOrigin, frameHost, callerOriginString, clientDataHash); } else { - getCredentialViaCredMan(options, callerOrigin, - webAuthSecurityChecksResults.isCrossOrigin, frameHost); + getCredentialViaCredMan(options, callerOrigin, frameHost); } return; } @@ -263,10 +264,10 @@ && PaymentFeatureList.isEnabled(PaymentFeatureList.SECURE_PAYMENT_CONFIRMATION)) { assert options.challenge != null; clientDataHash = buildClientDataJsonAndComputeHash(ClientDataRequestType.PAYMENT_GET, - callerOriginString, options.challenge, - webAuthSecurityChecksResults.isCrossOrigin, payment, options.relyingPartyId, - mWebContents.getMainFrame().getLastCommittedOrigin()); + callerOriginString, options.challenge, mIsCrossOrigin, payment, + options.relyingPartyId, mWebContents.getMainFrame().getLastCommittedOrigin()); if (clientDataHash == null) { + returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); return; } } @@ -670,6 +671,7 @@ /*isCrossOrigin=*/false, /*paymentOptions=*/null, options.relyingParty.id, /*topOrigin=*/null); if (clientDataHash == null) { + returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); return; } @@ -766,31 +768,10 @@ */ @RequiresApi(Build.VERSION_CODES.TIRAMISU) @SuppressWarnings("WrongConstant") - private void getCredentialViaCredMan(PublicKeyCredentialRequestOptions options, Origin origin, - boolean isCrossOrigin, RenderFrameHost frameHost) { - final String requestAsJson = - Fido2CredentialRequestJni.get().getOptionsToJson(options.serialize()); + private void getCredentialViaCredMan( + PublicKeyCredentialRequestOptions options, Origin origin, RenderFrameHost frameHost) { final Context context = ContextUtils.getApplicationContext(); - final byte[] clientDataHash = - buildClientDataJsonAndComputeHash(ClientDataRequestType.WEB_AUTHN_GET, - convertOriginToString(origin), options.challenge, isCrossOrigin, - /*paymentOptions=*/null, options.relyingPartyId, /*topOrigin=*/null); - if (clientDataHash == null) { - return; - } - - final Bundle publicKeyCredentialOptionBundle = new Bundle(); - publicKeyCredentialOptionBundle.putString(CRED_MAN_PREFIX + "BUNDLE_KEY_SUBTYPE", - CRED_MAN_PREFIX + "BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION"); - publicKeyCredentialOptionBundle.putString( - CRED_MAN_PREFIX + "BUNDLE_KEY_REQUEST_JSON", requestAsJson); - publicKeyCredentialOptionBundle.putString(CRED_MAN_PREFIX + "BUNDLE_KEY_CLIENT_DATA_HASH", - Base64.encodeToString( - clientDataHash, Base64.NO_PADDING | Base64.NO_WRAP | Base64.URL_SAFE)); - publicKeyCredentialOptionBundle.putBoolean( - CRED_MAN_PREFIX + "BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS", false); - // The Android 14 APIs have to be called via reflection until Chromium // builds with the Android 14 SDK by default. OutcomeReceiver<Object, Throwable> receiver = new OutcomeReceiver<>() { @@ -859,7 +840,11 @@ }; try { - final Object getCredentialRequest = buildGetCredentialRequest(origin, requestAsJson); + final Object getCredentialRequest = buildGetCredentialRequest(options, origin); + if (getCredentialRequest == null) { + returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); + return; + } // TODO: switch "credential" to `Context.CREDENTIAL_SERVICE` and remove the // `@SuppressWarnings` when the Android U SDK is available. @@ -886,8 +871,6 @@ private void prefetchCredentialsViaCredMan(PublicKeyCredentialRequestOptions options, Origin origin, RenderFrameHost frameHost, String callerOriginString, byte[] clientDataHash) { - final String requestAsJson = - Fido2CredentialRequestJni.get().getOptionsToJson(options.serialize()); final Context context = ContextUtils.getApplicationContext(); // The Android 14 APIs have to be called via reflection until Chromium @@ -954,7 +937,11 @@ }; try { - final Object getCredentialRequest = buildGetCredentialRequest(origin, requestAsJson); + final Object getCredentialRequest = buildGetCredentialRequest(options, origin); + if (getCredentialRequest == null) { + returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); + return; + } // TODO: switch "credential" to `Context.CREDENTIAL_SERVICE` and remove the // `@SuppressWarnings` when the Android U SDK is available. @@ -972,10 +959,23 @@ } } - private Object buildGetCredentialRequest(Origin origin, String requestAsJson) - throws ReflectiveOperationException { - Bundle publicKeyCredentialOptionBundle = - buildPublicKeyCredentialOptionBundle(requestAsJson); + private Object buildGetCredentialRequest(PublicKeyCredentialRequestOptions options, + Origin origin) throws ReflectiveOperationException { + final String requestAsJson = + Fido2CredentialRequestJni.get().getOptionsToJson(options.serialize()); + + final byte[] clientDataHash = + buildClientDataJsonAndComputeHash(ClientDataRequestType.WEB_AUTHN_GET, + convertOriginToString(origin), options.challenge, mIsCrossOrigin, + /*paymentOptions=*/null, options.relyingPartyId, /*topOrigin=*/null); + if (clientDataHash == null) { + Log.e(TAG, "ClientDataJson generation failed."); + return null; + } + + Bundle publicKeyCredentialOptionBundle = buildPublicKeyCredentialOptionBundle(requestAsJson, + Base64.encodeToString( + clientDataHash, Base64.NO_PADDING | Base64.NO_WRAP | Base64.URL_SAFE)); // Build the CredentialOption: final Class<?> credentialOptionBuilderClass = @@ -1003,14 +1003,15 @@ getCredentialRequestBuilderObject); } - private Bundle buildPublicKeyCredentialOptionBundle(String requestAsJson) { + private Bundle buildPublicKeyCredentialOptionBundle( + String requestAsJson, String encodedClientDataHash) { final Bundle publicKeyCredentialOptionBundle = new Bundle(); publicKeyCredentialOptionBundle.putString(CRED_MAN_PREFIX + "BUNDLE_KEY_SUBTYPE", CRED_MAN_PREFIX + "BUNDLE_VALUE_SUBTYPE_GET_PUBLIC_KEY_CREDENTIAL_OPTION"); publicKeyCredentialOptionBundle.putString( CRED_MAN_PREFIX + "BUNDLE_KEY_REQUEST_JSON", requestAsJson); publicKeyCredentialOptionBundle.putString( - CRED_MAN_PREFIX + "BUNDLE_KEY_CLIENT_DATA_HASH", null); + CRED_MAN_PREFIX + "BUNDLE_KEY_CLIENT_DATA_HASH", encodedClientDataHash); publicKeyCredentialOptionBundle.putBoolean( CRED_MAN_PREFIX + "BUNDLE_KEY_PREFER_IMMEDIATELY_AVAILABLE_CREDENTIALS", false); return publicKeyCredentialOptionBundle; @@ -1023,14 +1024,12 @@ mClientDataJson = ClientDataJson.buildClientDataJson(clientDataRequestType, callerOrigin, challenge, isCrossOrigin, paymentOptions, relyingPartyId, topOrigin); if (mClientDataJson == null) { - returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); return null; } MessageDigest messageDigest; try { messageDigest = MessageDigest.getInstance("SHA-256"); } catch (NoSuchAlgorithmException e) { - returnErrorAndResetCallback(AuthenticatorStatus.NOT_ALLOWED_ERROR); return null; } messageDigest.update(mClientDataJson.getBytes());
diff --git a/components/webauthn/content/browser/internal_authenticator_impl.cc b/components/webauthn/content/browser/internal_authenticator_impl.cc index 6c22ab9..420adf3 100644 --- a/components/webauthn/content/browser/internal_authenticator_impl.cc +++ b/components/webauthn/content/browser/internal_authenticator_impl.cc
@@ -26,6 +26,11 @@ // Autofill only ever uses platform authenticators and can take place // on any webpage. authenticator_common_->DisableUI(); + + // WebAuthn policy is to disallow use on pages with "Not secure" or "None" TLS + // connection status. However, internal clients such as autofill may be called + // from these pages (e.g. on chrome://settings/payments). + authenticator_common_->DisableTLSCheck(); } InternalAuthenticatorImpl::~InternalAuthenticatorImpl() = default;
diff --git a/content/browser/accessibility/browser_accessibility_android.cc b/content/browser/accessibility/browser_accessibility_android.cc index 89c726da..45036b7 100644 --- a/content/browser/accessibility/browser_accessibility_android.cc +++ b/content/browser/accessibility/browser_accessibility_android.cc
@@ -2041,12 +2041,12 @@ const std::vector<int32_t>& marker_types = child->GetIntListAttribute( ax::mojom::IntListAttribute::kMarkerTypes); - for (size_t i = 0; i < marker_types.size(); ++i) { - if (marker_types[i] & + for (int marker_type : marker_types) { + if (marker_type & static_cast<int32_t>(ax::mojom::MarkerType::kSpelling)) { message_id = CONTENT_INVALID_SPELLING; break; - } else if (marker_types[i] & + } else if (marker_type & static_cast<int32_t>(ax::mojom::MarkerType::kGrammar)) { message_id = CONTENT_INVALID_GRAMMAR; break;
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.cc b/content/browser/accessibility/browser_accessibility_state_impl.cc index 2962e7ef..2d50e9d 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl.cc +++ b/content/browser/accessibility/browser_accessibility_state_impl.cc
@@ -99,15 +99,19 @@ switches::kForceRendererAccessibility); #endif - // Support --force-renderer-accessibility=[basic|form-controls|complete] - if (ax_mode_bundle.compare(kAXModeBundleBasic) == 0) { - force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeBasic; - } else if (ax_mode_bundle.compare(kAXModeBundleFormControls) == 0) { - force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeFormControls; - } else { - // If AXMode is 'complete', invalid or missing, default to complete - // bundle. - force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeComplete; + // For backwards compatibility, allow parameter to be empty and do not force + // mode in that scenario. + if (!ax_mode_bundle.empty()) { + // Support --force-renderer-accessibility=[basic|form-controls|complete] + if (ax_mode_bundle.compare(kAXModeBundleBasic) == 0) { + force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeBasic; + } else if (ax_mode_bundle.compare(kAXModeBundleFormControls) == 0) { + force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeFormControls; + } else { + // If AXMode is 'complete' or invalid, default to complete + // bundle. + force_renderer_accessibility_ax_mode_flags_ = ui::kAXModeComplete; + } } } @@ -188,9 +192,15 @@ void BrowserAccessibilityStateImpl::ResetAccessibilityModeValue() { accessibility_mode_ = ui::AXMode(); - // Use forced AXMode bundle. + // Use forced AXMode bundle if optional parameter has been provided. + // Otherwise, reset to kAXModeComplete by default. if (force_renderer_accessibility_) { - AddAccessibilityModeFlags(force_renderer_accessibility_ax_mode_flags_); + if (force_renderer_accessibility_ax_mode_flags_.flags() != + ui::AXMode::kNone) { + AddAccessibilityModeFlags(force_renderer_accessibility_ax_mode_flags_); + } else { + AddAccessibilityModeFlags(ui::kAXModeComplete); + } } } @@ -397,11 +407,14 @@ return; } - // If the --force-renderer-accessibility command line flag is present, then - // the AXMode bundle should always be respected. Any attempts to set mode to - // flags other than the bundle should be ignored. + // If the --force-renderer-accessibility command line flag is present and an + // AXMode bundle has been provided as an argument, then the AXMode bundle + // should always be respected. Any attempts to set mode to flags other than + // the bundle should be ignored. if (force_renderer_accessibility_ && - force_renderer_accessibility_ax_mode_flags_ != mode) { + (force_renderer_accessibility_ax_mode_flags_.flags() != + ui::AXMode::kNone && + force_renderer_accessibility_ax_mode_flags_ != mode)) { return; } @@ -496,8 +509,13 @@ void BrowserAccessibilityStateImpl::RemoveAccessibilityModeFlags( ui::AXMode mode) { // Turning off accessibility or changing the mode will not be allowed if the - // --force-renderer-accessibility command line flag has been enabled. - if (force_renderer_accessibility_) { + // --force-renderer-accessibility command line flag has been enabled and + // either 1) there is an attempt to turn off accessibility entirely or 2) an + // AXMode bundle parameter has been provided. + if (force_renderer_accessibility_ && + (mode == ui::kAXModeComplete || + force_renderer_accessibility_ax_mode_flags_.flags() != + ui::AXMode::kNone)) { return; }
diff --git a/content/browser/accessibility/browser_accessibility_state_impl.h b/content/browser/accessibility/browser_accessibility_state_impl.h index a316de5..379287c 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl.h +++ b/content/browser/accessibility/browser_accessibility_state_impl.h
@@ -157,8 +157,9 @@ // The AXMode flags to set only if the the force-renderer-accessibility flag // is enabled. If the optional parameter is present, then force the AXMode to - // be the provided bundle value. If the optional parameter is absent or - // invalid, this will default to kAXModeComplete. + // be the provided bundle value. If the optional parameter is + // invalid, this will default to kAXModeComplete. If the optional parameter is + // absent, the .flags() will default to kNone. ui::AXMode force_renderer_accessibility_ax_mode_flags_; // Disable hot tracking, i.e. hover state - needed just to avoid flaky tests.
diff --git a/content/browser/accessibility/browser_accessibility_state_impl_android.cc b/content/browser/accessibility/browser_accessibility_state_impl_android.cc index 4028ca3..58c8c4c 100644 --- a/content/browser/accessibility/browser_accessibility_state_impl_android.cc +++ b/content/browser/accessibility/browser_accessibility_state_impl_android.cc
@@ -434,13 +434,14 @@ BrowserContext* profile) { std::vector<WebContentsImpl*> web_contents_vector = WebContentsImpl::GetAllWebContents(); - for (size_t i = 0; i < web_contents_vector.size(); ++i) { - if (web_contents_vector[i]->GetBrowserContext() != profile) + for (auto*& web_contents : web_contents_vector) { + if (web_contents->GetBrowserContext() != profile) { continue; + } - ui::AXMode ax_mode = web_contents_vector[i]->GetAccessibilityMode(); + ui::AXMode ax_mode = web_contents->GetAccessibilityMode(); ax_mode.set_mode(ui::AXMode::kLabelImages, enabled); - web_contents_vector[i]->SetAccessibilityMode(ax_mode); + web_contents->SetAccessibilityMode(ax_mode); } }
diff --git a/content/browser/accessibility/one_shot_accessibility_tree_search.cc b/content/browser/accessibility/one_shot_accessibility_tree_search.cc index 3bb0f90..b5198b2b 100644 --- a/content/browser/accessibility/one_shot_accessibility_tree_search.cc +++ b/content/browser/accessibility/one_shot_accessibility_tree_search.cc
@@ -46,7 +46,7 @@ onscreen_only_(false), did_search_(false) {} -OneShotAccessibilityTreeSearch::~OneShotAccessibilityTreeSearch() {} +OneShotAccessibilityTreeSearch::~OneShotAccessibilityTreeSearch() = default; void OneShotAccessibilityTreeSearch::SetStartNode( BrowserAccessibility* start_node) {
diff --git a/content/browser/accessibility/web_contents_accessibility_android.cc b/content/browser/accessibility/web_contents_accessibility_android.cc index adb85e586..feccf7a 100644 --- a/content/browser/accessibility/web_contents_accessibility_android.cc +++ b/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -654,7 +654,7 @@ jboolean WebContentsAccessibilityAndroid::IsNodeValid(JNIEnv* env, jint unique_id) { - return GetAXFromUniqueID(unique_id) != NULL; + return GetAXFromUniqueID(unique_id) != nullptr; } void WebContentsAccessibilityAndroid::HitTest(JNIEnv* env, jint x, jint y) {
diff --git a/content/browser/attribution_reporting/aggregatable_attribution_utils.cc b/content/browser/attribution_reporting/aggregatable_attribution_utils.cc index a3ac7c9..a94637f78 100644 --- a/content/browser/attribution_reporting/aggregatable_attribution_utils.cc +++ b/content/browser/attribution_reporting/aggregatable_attribution_utils.cc
@@ -128,7 +128,7 @@ const AttributionInfo& attribution_info = report.attribution_info(); AggregatableReportSharedInfo::DebugMode debug_mode = - attribution_info.source.debug_key().has_value() && + data->source.debug_key().has_value() && attribution_info.debug_key.has_value() ? AggregatableReportSharedInfo::DebugMode::kEnabled : AggregatableReportSharedInfo::DebugMode::kDisabled; @@ -144,10 +144,9 @@ }); base::Value::Dict additional_fields; - additional_fields.Set( - "source_registration_time", - SerializeTimeRoundedDownToWholeDayInSeconds( - attribution_info.source.common_info().source_time())); + additional_fields.Set("source_registration_time", + SerializeTimeRoundedDownToWholeDayInSeconds( + data->source.common_info().source_time())); additional_fields.Set( "attribution_destination", net::SchemefulSite(attribution_info.context_origin).Serialize()); @@ -159,7 +158,7 @@ data->aggregation_coordinator), AggregatableReportSharedInfo( report.initial_report_time(), report.external_report_id(), - attribution_info.source.common_info().reporting_origin(), debug_mode, + data->source.common_info().reporting_origin(), debug_mode, std::move(additional_fields), AttributionReport::AggregatableAttributionData::kVersion, AttributionReport::AggregatableAttributionData::kApiIdentifier));
diff --git a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc index dc40870..ad3e9d8 100644 --- a/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc +++ b/content/browser/attribution_reporting/aggregatable_attribution_utils_unittest.cc
@@ -143,9 +143,8 @@ for (const auto& test_case : kTestCases) { base::Time source_time = base::Time::FromJavaTime(test_case.source_time); AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(source_time).BuildStored()) - .Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(source_time).BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .BuildAggregatableAttribution(); @@ -167,8 +166,8 @@ for (auto aggregation_coordinator : {::aggregation_service::mojom::AggregationCoordinator::kAwsCloud}) { AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .SetAggregationCoordinator(aggregation_coordinator)
diff --git a/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc b/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc index b2d11d9..bab84c0 100644 --- a/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc +++ b/content/browser/attribution_reporting/attribution_aggregatable_report_golden_unittest.cc
@@ -313,13 +313,10 @@ base::StringPiece cleartext_payloads_file; } kTestCases[] = { {.report = - ReportBuilder( - AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483200000)) - .SetDebugKey(123) - .BuildStored()) - .SetDebugKey(456) - .Build()) + ReportBuilder(AttributionInfoBuilder().SetDebugKey(456).Build(), + SourceBuilder(base::Time::FromJavaTime(1234483200000)) + .SetDebugKey(123) + .BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .SetReportTime(base::Time::FromJavaTime(1234486400000)) @@ -327,11 +324,9 @@ .report_file = "report_1.json", .cleartext_payloads_file = "report_1_cleartext_payloads.json"}, {.report = - ReportBuilder( - AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483200000)) - .BuildStored()) - .Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(base::Time::FromJavaTime(1234483200000)) + .BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .SetReportTime(base::Time::FromJavaTime(1234486400000)) @@ -339,13 +334,10 @@ .report_file = "report_2.json", .cleartext_payloads_file = "report_2_cleartext_payloads.json"}, {.report = - ReportBuilder( - AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483300000)) - .SetDebugKey(123) - .BuildStored()) - .SetDebugKey(456) - .Build()) + ReportBuilder(AttributionInfoBuilder().SetDebugKey(456).Build(), + SourceBuilder(base::Time::FromJavaTime(1234483300000)) + .SetDebugKey(123) + .BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2), AggregatableHistogramContribution(/*key=*/3, /*value=*/4)}) @@ -354,11 +346,9 @@ .report_file = "report_3.json", .cleartext_payloads_file = "report_3_cleartext_payloads.json"}, {.report = - ReportBuilder( - AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483300000)) - .BuildStored()) - .Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(base::Time::FromJavaTime(1234483300000)) + .BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2), AggregatableHistogramContribution(/*key=*/3, /*value=*/4)}) @@ -366,30 +356,27 @@ .BuildAggregatableAttribution(), .report_file = "report_4.json", .cleartext_payloads_file = "report_4_cleartext_payloads.json"}, - {.report = ReportBuilder( - AttributionInfoBuilder( + {.report = + ReportBuilder(AttributionInfoBuilder().SetDebugKey(456).Build(), SourceBuilder(base::Time::FromJavaTime(1234483400000)) .SetDebugKey(123) .BuildStored()) - .SetDebugKey(456) - .Build()) - .SetAggregatableHistogramContributions( - {AggregatableHistogramContribution( - /*key=*/absl::Uint128Max(), /*value=*/1000)}) - .SetReportTime(base::Time::FromJavaTime(1234486600000)) - .BuildAggregatableAttribution(), + .SetAggregatableHistogramContributions( + {AggregatableHistogramContribution( + /*key=*/absl::Uint128Max(), /*value=*/1000)}) + .SetReportTime(base::Time::FromJavaTime(1234486600000)) + .BuildAggregatableAttribution(), .report_file = "report_5.json", .cleartext_payloads_file = "report_5_cleartext_payloads.json"}, - {.report = ReportBuilder( - AttributionInfoBuilder( + {.report = + ReportBuilder(AttributionInfoBuilder().Build(), SourceBuilder(base::Time::FromJavaTime(1234483400000)) .BuildStored()) - .Build()) - .SetAggregatableHistogramContributions( - {AggregatableHistogramContribution( - /*key=*/absl::Uint128Max(), /*value=*/1000)}) - .SetReportTime(base::Time::FromJavaTime(1234486600000)) - .BuildAggregatableAttribution(), + .SetAggregatableHistogramContributions( + {AggregatableHistogramContribution( + /*key=*/absl::Uint128Max(), /*value=*/1000)}) + .SetReportTime(base::Time::FromJavaTime(1234486600000)) + .BuildAggregatableAttribution(), .report_file = "report_6.json", .cleartext_payloads_file = "report_6_cleartext_payloads.json"}, };
diff --git a/content/browser/attribution_reporting/attribution_debug_report_unittest.cc b/content/browser/attribution_reporting/attribution_debug_report_unittest.cc index 777d117..944cd2bc 100644 --- a/content/browser/attribution_reporting/attribution_debug_report_unittest.cc +++ b/content/browser/attribution_reporting/attribution_debug_report_unittest.cc
@@ -26,16 +26,15 @@ AttributionReport DefaultEventLevelReport( base::Time source_time = base::Time::Now()) { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder(source_time).BuildStored()) - .Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(source_time).BuildStored()) .SetReportTime(base::Time::UnixEpoch() + base::Hours(1)) .Build(); } AttributionReport DefaultAggregatableReport() { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(1, 2)}) .BuildAggregatableAttribution();
diff --git a/content/browser/attribution_reporting/attribution_info.cc b/content/browser/attribution_reporting/attribution_info.cc index 0f725b3..df36196 100644 --- a/content/browser/attribution_reporting/attribution_info.cc +++ b/content/browser/attribution_reporting/attribution_info.cc
@@ -10,15 +10,11 @@ namespace content { -// TODO(apaseltiner): DCHECK that `context_origin` is valid for `source` and -// likewise non-DCHECK that this is true when reading reports out of storage. AttributionInfo::AttributionInfo( - StoredSource source, base::Time time, absl::optional<uint64_t> debug_key, attribution_reporting::SuitableOrigin context_origin) - : source(std::move(source)), - time(time), + : time(time), debug_key(debug_key), context_origin(std::move(context_origin)) {}
diff --git a/content/browser/attribution_reporting/attribution_info.h b/content/browser/attribution_reporting/attribution_info.h index f62cd93..69f6164 100644 --- a/content/browser/attribution_reporting/attribution_info.h +++ b/content/browser/attribution_reporting/attribution_info.h
@@ -9,17 +9,14 @@ #include "base/time/time.h" #include "components/attribution_reporting/suitable_origin.h" -#include "content/browser/attribution_reporting/stored_source.h" #include "content/common/content_export.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace content { -// Contains information available at the time a trigger of any type is -// associated with a `StoredSource`. +// Contains information associated with a trigger. struct CONTENT_EXPORT AttributionInfo { - AttributionInfo(StoredSource source, - base::Time time, + AttributionInfo(base::Time time, absl::optional<uint64_t> debug_key, attribution_reporting::SuitableOrigin context_origin); ~AttributionInfo(); @@ -30,9 +27,6 @@ AttributionInfo& operator=(const AttributionInfo&); AttributionInfo& operator=(AttributionInfo&&); - // Source associated with this attribution. - StoredSource source; - // The time the trigger occurred. base::Time time;
diff --git a/content/browser/attribution_reporting/attribution_internals_browsertest.cc b/content/browser/attribution_reporting/attribution_internals_browsertest.cc index fe291d248..650cec53 100644 --- a/content/browser/attribution_reporting/attribution_internals_browsertest.cc +++ b/content/browser/attribution_reporting/attribution_internals_browsertest.cc
@@ -93,14 +93,14 @@ const std::u16string kMaxUint64String = u"18446744073709551615"; AttributionReport IrreleventEventLevelReport() { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .Build(); } AttributionReport IrreleventAggregatableReport() { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(1, 2)}) .BuildAggregatableAttribution(); @@ -585,32 +585,31 @@ const base::Time now = base::Time::Now(); + manager()->NotifyReportSent(ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) + .SetReportTime(now + base::Hours(3)) + .Build(), + /*is_debug_report=*/false, + SendResult(SendResult::Status::kSent, net::OK, + /*http_response_code=*/200)); + manager()->NotifyReportSent(ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) + .SetReportTime(now + base::Hours(4)) + .SetPriority(-1) + .Build(), + /*is_debug_report=*/false, + SendResult(SendResult::Status::kDropped)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) - .SetReportTime(now + base::Hours(3)) - .Build(), - /*is_debug_report=*/false, - SendResult(SendResult::Status::kSent, net::OK, - /*http_response_code=*/200)); - manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) - .SetReportTime(now + base::Hours(4)) - .SetPriority(-1) - .Build(), - /*is_debug_report=*/false, SendResult(SendResult::Status::kDropped)); - manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(5)) .SetPriority(-2) .Build(), /*is_debug_report=*/false, SendResult(SendResult::Status::kFailure, net::ERR_METHOD_NOT_SUPPORTED)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(11)) .SetPriority(-8) .Build(), @@ -619,13 +618,12 @@ ON_CALL(*manager(), GetPendingReportsForInternalUse) .WillByDefault(RunOnceCallback<1>(std::vector<AttributionReport>{ - ReportBuilder(AttributionInfoBuilder( - SourceBuilder(now) - .SetSourceType(SourceType::kEvent) - .SetAttributionLogic( - StoredSource::AttributionLogic::kFalsely) - .BuildStored()) - .Build()) + ReportBuilder( + AttributionInfoBuilder().Build(), + SourceBuilder(now) + .SetSourceType(SourceType::kEvent) + .SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) + .BuildStored()) .SetReportTime(now) .SetPriority(13) .Build()})); @@ -636,8 +634,8 @@ AttributionTrigger::EventLevelResult::kSuccessDroppedLowerPriority, AttributionTrigger::AggregatableResult::kNoHistograms, /*replaced_event_level_report=*/ - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(1)) .SetPriority(11) .Build(), @@ -773,12 +771,11 @@ const base::Time now = base::Time::Now(); - AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) - .SetReportTime(now) - .SetPriority(7) - .Build(); + AttributionReport report = ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) + .SetReportTime(now) + .SetPriority(7) + .Build(); std::vector<AttributionReport> stored_reports; stored_reports.push_back(report); @@ -925,8 +922,8 @@ EXPECT_CALL(*manager(), GetPendingReportsForInternalUse) .WillOnce(RunOnceCallback<1>(std::vector<AttributionReport>{ - ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .SetPriority(7) .SetReportId(AttributionReport::Id(5)) .Build()})) @@ -1015,8 +1012,8 @@ AggregatableHistogramContribution(1, 2)}; manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(3)) .SetAggregatableHistogramContributions(contributions) .SetAttestationToken("abc") @@ -1025,31 +1022,31 @@ SendResult(SendResult::Status::kSent, net::OK, /*http_response_code=*/200)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(4)) .SetAggregatableHistogramContributions(contributions) .BuildAggregatableAttribution(), /*is_debug_report=*/false, SendResult(SendResult::Status::kDropped)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(5)) .SetAggregatableHistogramContributions(contributions) .BuildAggregatableAttribution(), /*is_debug_report=*/false, SendResult(SendResult::Status::kFailedToAssemble)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(6)) .SetAggregatableHistogramContributions(contributions) .BuildAggregatableAttribution(), /*is_debug_report=*/false, SendResult(SendResult::Status::kFailure, net::ERR_INVALID_REDIRECT)); manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(10)) .SetAggregatableHistogramContributions(contributions) .BuildAggregatableAttribution(), @@ -1058,11 +1055,10 @@ net::ERR_INTERNET_DISCONNECTED)); ON_CALL(*manager(), GetPendingReportsForInternalUse) .WillByDefault(RunOnceCallback<1>(std::vector<AttributionReport>{ - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now) - .SetSourceType(SourceType::kEvent) - .BuildStored()) - .Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now) + .SetSourceType(SourceType::kEvent) + .BuildStored()) .SetReportTime(now) .SetAggregatableHistogramContributions(contributions) .BuildAggregatableAttribution()})); @@ -1215,8 +1211,8 @@ EXPECT_CALL(*manager(), GetPendingReportsForInternalUse) .WillOnce(RunOnceCallback<1>(std::vector<AttributionReport>{ - ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) .SetReportId(AttributionReport::Id(5)) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(1, 2)}) @@ -1285,20 +1281,19 @@ const base::Time now = base::Time::Now(); - manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) - .SetReportTime(now) - .SetPriority(1) - .Build(), - /*is_debug_report=*/true, - SendResult(SendResult::Status::kSent, net::OK, - /*http_response_code=*/200)); + manager()->NotifyReportSent(ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) + .SetReportTime(now) + .SetPriority(1) + .Build(), + /*is_debug_report=*/true, + SendResult(SendResult::Status::kSent, net::OK, + /*http_response_code=*/200)); ON_CALL(*manager(), GetPendingReportsForInternalUse) .WillByDefault(RunOnceCallback<1>(std::vector<AttributionReport>{ - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) + ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) .SetReportTime(now + base::Hours(1)) .SetPriority(2) .Build()})); @@ -1332,15 +1327,14 @@ ASSERT_TRUE(ExecJsInWebUI(R"( document.querySelector('#show-debug-event-reports input').click();)")); - manager()->NotifyReportSent( - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(now).BuildStored()).Build()) - .SetReportTime(now + base::Hours(2)) - .SetPriority(3) - .Build(), - /*is_debug_report=*/true, - SendResult(SendResult::Status::kSent, net::OK, - /*http_response_code=*/200)); + manager()->NotifyReportSent(ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(now).BuildStored()) + .SetReportTime(now + base::Hours(2)) + .SetPriority(3) + .Build(), + /*is_debug_report=*/true, + SendResult(SendResult::Status::kSent, net::OK, + /*http_response_code=*/200)); // The debug reports, including the newly received one, should be hidden and // the label should indicate the number.
diff --git a/content/browser/attribution_reporting/attribution_internals_handler_impl.cc b/content/browser/attribution_reporting/attribution_internals_handler_impl.cc index ff5ea53..a30ad155 100644 --- a/content/browser/attribution_reporting/attribution_internals_handler_impl.cc +++ b/content/browser/attribution_reporting/attribution_internals_handler_impl.cc
@@ -151,12 +151,11 @@ ai_mojom::WebUIReportDataPtr data = absl::visit( base::Overloaded{ - [attribution_info]( - const AttributionReport::EventLevelData& event_level_data) { + [](const AttributionReport::EventLevelData& event_level_data) { return ai_mojom::WebUIReportData::NewEventLevelData( ai_mojom::WebUIReportEventLevelData::New( event_level_data.priority, - attribution_info.source.attribution_logic() == + event_level_data.source.attribution_logic() == StoredSource::AttributionLogic::kTruthfully)); },
diff --git a/content/browser/attribution_reporting/attribution_manager_impl.cc b/content/browser/attribution_reporting/attribution_manager_impl.cc index d252a5c5..3a68ad3 100644 --- a/content/browser/attribution_reporting/attribution_manager_impl.cc +++ b/content/browser/attribution_reporting/attribution_manager_impl.cc
@@ -420,8 +420,7 @@ bool AttributionManagerImpl::IsReportAllowed( const AttributionReport& report) const { - const CommonSourceInfo& common_info = - report.attribution_info().source.common_info(); + const CommonSourceInfo& common_info = report.GetStoredSource().common_info(); return IsOperationAllowed( storage_partition_.get(), ContentBrowserClient::AttributionReportingOperation::kReport, @@ -810,7 +809,7 @@ void AttributionManagerImpl::MaybeSendDebugReport(AttributionReport&& report) { const AttributionInfo& attribution_info = report.attribution_info(); - if (!attribution_info.debug_key || !attribution_info.source.debug_key() || + if (!attribution_info.debug_key || !report.GetStoredSource().debug_key() || !IsReportAllowed(report)) { return; }
diff --git a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc index 5aed11b..3a6529822 100644 --- a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc +++ b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc
@@ -433,10 +433,10 @@ AttributionReport expected_report = ReportBuilder(AttributionInfoBuilder( - builder.BuildStored(), /*context_origin=*/conversion.destination_origin()) .SetTime(base::Time::Now()) - .Build()) + .Build(), + builder.BuildStored()) .SetTriggerData(5) .SetReportTime(base::Time::Now() + kFirstReportingWindow) .Build();
diff --git a/content/browser/attribution_reporting/attribution_report.cc b/content/browser/attribution_reporting/attribution_report.cc index 93e8232..c8304033 100644 --- a/content/browser/attribution_reporting/attribution_report.cc +++ b/content/browser/attribution_reporting/attribution_report.cc
@@ -32,16 +32,16 @@ AttributionReport::EventLevelData::EventLevelData( uint64_t trigger_data, int64_t priority, - double randomized_trigger_rate) + double randomized_trigger_rate, + StoredSource source) : trigger_data(trigger_data), priority(priority), - randomized_trigger_rate(randomized_trigger_rate) { + randomized_trigger_rate(randomized_trigger_rate), + source(std::move(source)) { DCHECK_GE(randomized_trigger_rate, 0); DCHECK_LE(randomized_trigger_rate, 1); } -AttributionReport::EventLevelData::EventLevelData() = default; - AttributionReport::EventLevelData::EventLevelData(const EventLevelData&) = default; @@ -59,13 +59,12 @@ std::vector<AggregatableHistogramContribution> contributions, ::aggregation_service::mojom::AggregationCoordinator aggregation_coordinator, - absl::optional<std::string> attestation_token) + absl::optional<std::string> attestation_token, + StoredSource source) : contributions(std::move(contributions)), attestation_token(std::move(attestation_token)), - aggregation_coordinator(aggregation_coordinator) {} - -AttributionReport::AggregatableAttributionData::AggregatableAttributionData() = - default; + aggregation_coordinator(aggregation_coordinator), + source(std::move(source)) {} AttributionReport::AggregatableAttributionData::AggregatableAttributionData( const AggregatableAttributionData&) = default; @@ -141,7 +140,8 @@ GURL::Replacements replacements; replacements.SetPathStr(path); - return attribution_info_.source.common_info() + return GetStoredSource() + .common_info() .reporting_origin() ->GetURL() .ReplaceComponents(replacements); @@ -153,7 +153,7 @@ [this](const EventLevelData& data) { base::Value::Dict dict; - const StoredSource& source = this->attribution_info().source; + const StoredSource& source = data.source; dict.Set("attribution_destination", source.destination_sites().ToJson()); @@ -204,8 +204,7 @@ "not generated prior to send"); } - if (absl::optional<uint64_t> debug_key = - this->attribution_info().source.debug_key()) { + if (absl::optional<uint64_t> debug_key = data.source.debug_key()) { dict.Set("source_debug_key", base::NumberToString(*debug_key)); } @@ -254,4 +253,10 @@ } } +const StoredSource& AttributionReport::GetStoredSource() const { + return absl::visit( + [](const auto& data) -> const StoredSource& { return data.source; }, + data_); +} + } // namespace content
diff --git a/content/browser/attribution_reporting/attribution_report.h b/content/browser/attribution_reporting/attribution_report.h index 8058f1e..85a8e10 100644 --- a/content/browser/attribution_reporting/attribution_report.h +++ b/content/browser/attribution_reporting/attribution_report.h
@@ -20,6 +20,7 @@ #include "content/browser/attribution_reporting/aggregatable_histogram_contribution.h" #include "content/browser/attribution_reporting/attribution_info.h" #include "content/browser/attribution_reporting/attribution_reporting.mojom.h" +#include "content/browser/attribution_reporting/stored_source.h" #include "content/common/content_export.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/abseil-cpp/absl/types/variant.h" @@ -44,10 +45,8 @@ struct CONTENT_EXPORT EventLevelData { EventLevelData(uint64_t trigger_data, int64_t priority, - double randomized_trigger_rate); - // This is added to allow default construction of - // `AttributionReport::Data()`. - EventLevelData(); + double randomized_trigger_rate, + StoredSource); EventLevelData(const EventLevelData&); EventLevelData& operator=(const EventLevelData&); EventLevelData(EventLevelData&&); @@ -66,6 +65,8 @@ // registered. double randomized_trigger_rate; + StoredSource source; + // When adding new members, the corresponding `operator==()` definition in // `attribution_test_utils.h` should also be updated. }; @@ -76,8 +77,8 @@ std::vector<AggregatableHistogramContribution> contributions, ::aggregation_service::mojom::AggregationCoordinator aggregation_coordinator, - absl::optional<std::string> attestation_token); - AggregatableAttributionData(); + absl::optional<std::string> attestation_token, + StoredSource); AggregatableAttributionData(const AggregatableAttributionData&); AggregatableAttributionData& operator=(const AggregatableAttributionData&); AggregatableAttributionData(AggregatableAttributionData&&); @@ -108,6 +109,8 @@ ::aggregation_service::mojom::AggregationCoordinator aggregation_coordinator; + StoredSource source; + // When adding new members, the corresponding `operator==()` definition in // `attribution_test_utils.h` should also be updated. }; @@ -158,6 +161,8 @@ Type GetReportType() const { return static_cast<Type>(data_.index()); } + const StoredSource& GetStoredSource() const; + void set_id(Id id) { id_ = id; } void set_report_time(base::Time report_time);
diff --git a/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc b/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc index c45e6407..1f3c25c 100644 --- a/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc +++ b/content/browser/attribution_reporting/attribution_report_network_sender_unittest.cc
@@ -68,17 +68,14 @@ "Conversions.VerboseDebugReport.HttpResponseOrNetErrorCode"; AttributionReport DefaultEventLevelReport() { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder(base::Time()).BuildStored()) - .Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(base::Time()).BuildStored()) .Build(); } AttributionReport DefaultAggregatableReport() { - return ReportBuilder( - AttributionInfoBuilder( - SourceBuilder(SourceBuilder(base::Time())).BuildStored()) - .Build()) + return ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder(SourceBuilder(base::Time())).BuildStored()) .BuildAggregatableAttribution(); } @@ -172,12 +169,12 @@ }; const AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(base::Time::UnixEpoch()) - .SetSourceEventId(100) - .BuildStored()) - .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) - .Build()) + ReportBuilder(AttributionInfoBuilder() + .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) + .Build(), + SourceBuilder(base::Time::UnixEpoch()) + .SetSourceEventId(100) + .BuildStored()) .SetTriggerData(5) .SetRandomizedTriggerRate(0.2) .SetReportTime(base::Time::UnixEpoch() + base::Hours(1)) @@ -454,10 +451,9 @@ TEST_F(AttributionReportNetworkSenderTest, HeadersPopulated) { AttributionReport report = - ReportBuilder(AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483200000)) - .BuildStored()) - .Build()) + ReportBuilder( + AttributionInfoBuilder().Build(), + SourceBuilder(base::Time::FromJavaTime(1234483200000)).BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .BuildAggregatableAttribution();
diff --git a/content/browser/attribution_reporting/attribution_report_unittest.cc b/content/browser/attribution_reporting/attribution_report_unittest.cc index 1f096db..e26d8e0 100644 --- a/content/browser/attribution_reporting/attribution_report_unittest.cc +++ b/content/browser/attribution_reporting/attribution_report_unittest.cc
@@ -32,8 +32,8 @@ using ::base::test::IsJson; TEST(AttributionReportTest, ReportURL) { - ReportBuilder builder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()); + ReportBuilder builder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()); EXPECT_EQ( "https://report.test/.well-known/attribution-reporting/" @@ -83,13 +83,13 @@ for (const auto& test_case : kTestCases) { AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(base::Time::UnixEpoch()) - .SetSourceEventId(100) - .SetSourceType(test_case.source_type) - .BuildStored()) - .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) - .Build()) + ReportBuilder(AttributionInfoBuilder() + .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) + .Build(), + SourceBuilder(base::Time::UnixEpoch()) + .SetSourceEventId(100) + .SetSourceType(test_case.source_type) + .BuildStored()) .SetTriggerData(5) .SetRandomizedTriggerRate(0.2) .SetReportTime(base::Time::UnixEpoch() + base::Hours(1)) @@ -137,12 +137,12 @@ for (const auto& test_case : kTestCases) { AttributionReport report = - ReportBuilder(AttributionInfoBuilder( - SourceBuilder(base::Time::UnixEpoch()) - .SetDestinationSites(test_case.destination_sites) - .BuildStored()) + ReportBuilder(AttributionInfoBuilder() .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) - .Build()) + .Build(), + SourceBuilder(base::Time::UnixEpoch()) + .SetDestinationSites(test_case.destination_sites) + .BuildStored()) .SetReportTime(base::Time::UnixEpoch() + base::Hours(1)) .Build(); @@ -200,14 +200,14 @@ for (const auto& test_case : kTestCases) { AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder(base::Time::UnixEpoch()) - .SetSourceEventId(100) - .SetDebugKey(test_case.source_debug_key) - .BuildStored()) - .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) - .SetDebugKey(test_case.trigger_debug_key) - .Build()) + ReportBuilder(AttributionInfoBuilder() + .SetTime(base::Time::UnixEpoch() + base::Seconds(1)) + .SetDebugKey(test_case.trigger_debug_key) + .Build(), + SourceBuilder(base::Time::UnixEpoch()) + .SetSourceEventId(100) + .SetDebugKey(test_case.source_debug_key) + .BuildStored()) .SetTriggerData(5) .SetRandomizedTriggerRate(0.2) .SetReportTime(base::Time::UnixEpoch() + base::Hours(1)) @@ -224,10 +224,9 @@ })json"); AttributionReport report = - ReportBuilder(AttributionInfoBuilder( - SourceBuilder(base::Time::FromJavaTime(1234483200000)) - .BuildStored()) - .Build()) + ReportBuilder( + AttributionInfoBuilder().Build(), + SourceBuilder(base::Time::FromJavaTime(1234483200000)).BuildStored()) .SetAggregatableHistogramContributions( {AggregatableHistogramContribution(/*key=*/1, /*value=*/2)}) .BuildAggregatableAttribution(); @@ -242,11 +241,10 @@ }; for (const auto& attestation_token : kTestCases) { - AttributionReport report = - ReportBuilder( - AttributionInfoBuilder(SourceBuilder().BuildStored()).Build()) - .SetAttestationToken(attestation_token) - .BuildAggregatableAttribution(); + AttributionReport report = ReportBuilder(AttributionInfoBuilder().Build(), + SourceBuilder().BuildStored()) + .SetAttestationToken(attestation_token) + .BuildAggregatableAttribution(); net::HttpRequestHeaders headers; report.PopulateAdditionalHeaders(headers);
diff --git a/content/browser/attribution_reporting/attribution_storage_delegate_impl_unittest.cc b/content/browser/attribution_reporting/attribution_storage_delegate_impl_unittest.cc index d72f12b..e6de6ae 100644 --- a/content/browser/attribution_reporting/attribution_storage_delegate_impl_unittest.cc +++ b/content/browser/attribution_reporting/attribution_storage_delegate_impl_unittest.cc
@@ -38,14 +38,12 @@ base::TimeDelta expiry = kDefaultExpiry, base::TimeDelta report_window = kDefaultExpiry, SourceType source_type = SourceType::kNavigation) { - return ReportBuilder( - AttributionInfoBuilder(SourceBuilder(source_time) - .SetExpiry(expiry) - .SetEventReportWindow(report_window) - .SetSourceType(source_type) - .BuildStored()) - .SetTime(trigger_time) - .Build()) + return ReportBuilder(AttributionInfoBuilder().SetTime(trigger_time).Build(), + SourceBuilder(source_time) + .SetExpiry(expiry) + .SetEventReportWindow(report_window) + .SetSourceType(source_type) + .BuildStored()) .Build(); } @@ -112,10 +110,9 @@ base::Time source_time = base::Time::Now(); const AttributionReport report = GetReport(source_time, /*trigger_time=*/source_time); - EXPECT_EQ( - source_time + base::Days(2) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(2) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -123,10 +120,9 @@ base::Time source_time = base::Time::Now(); base::Time trigger_time = source_time + base::Days(2) - base::Minutes(1); const AttributionReport report = GetReport(source_time, trigger_time); - EXPECT_EQ( - source_time + base::Days(2) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(2) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -137,10 +133,9 @@ // after the deadline. base::Time trigger_time = source_time + base::Days(2) + base::Minutes(1); const AttributionReport report = GetReport(source_time, trigger_time); - EXPECT_EQ( - source_time + base::Days(7) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(7) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -151,10 +146,9 @@ // Set the impression to expire before the two day window. const AttributionReport report = GetReport(source_time, trigger_time, /*expiry=*/base::Hours(2)); - EXPECT_EQ( - source_time + base::Hours(3), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Hours(3), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -166,10 +160,9 @@ const AttributionReport report = GetReport(source_time, trigger_time, /*expiry=*/base::Days(4)); - EXPECT_EQ( - source_time + base::Days(4) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(4) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -182,10 +175,9 @@ /*expiry=*/base::Days(9)); // The expiry window is reported one hour after expiry time. - EXPECT_EQ( - source_time + base::Days(9) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(9) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -196,10 +188,9 @@ GetReport(source_time, trigger_time, /*expiry=*/base::Days(1), /*report_window=*/base::Days(1), SourceType::kEvent); - EXPECT_EQ( - source_time + base::Days(1) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(1) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -210,10 +201,9 @@ GetReport(source_time, trigger_time, /*expiry=*/base::Days(4), /*report_window=*/base::Days(4), SourceType::kEvent); - EXPECT_EQ( - source_time + base::Days(4) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(4) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, @@ -225,10 +215,9 @@ const AttributionReport report = GetReport(source_time, trigger_time, /*expiry=*/base::Days(5), /*report_window=*/base::Days(4)); - EXPECT_EQ( - source_time + base::Days(4) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(4) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST(AttributionStorageDelegateImplTest, GetAggregatableReportTime) { @@ -585,10 +574,9 @@ base::Time source_time = base::Time::Now(); const AttributionReport report = GetReport(source_time, /*trigger_time=*/source_time); - EXPECT_EQ( - source_time + base::Days(1) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(1) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST_F(AttributionStorageDelegateImplTestFeatureConfigured, @@ -599,10 +587,9 @@ // after the deadline. base::Time trigger_time = source_time + base::Days(1) + base::Minutes(1); const AttributionReport report = GetReport(source_time, trigger_time); - EXPECT_EQ( - source_time + base::Days(5) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(5) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST_F(AttributionStorageDelegateImplTestFeatureConfigured, @@ -637,10 +624,9 @@ base::Time source_time = base::Time::Now(); const AttributionReport report = GetReport(source_time, /*trigger_time=*/source_time); - EXPECT_EQ( - source_time + base::Days(2) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(2) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST_F(AttributionStorageDelegateImplTestInvalidFeatureConfigured, @@ -648,10 +634,9 @@ base::Time source_time = base::Time::Now(); base::Time trigger_time = source_time + base::Days(2) + base::Minutes(1); const AttributionReport report = GetReport(source_time, trigger_time); - EXPECT_EQ( - source_time + base::Days(7) + base::Hours(1), - AttributionStorageDelegateImpl().GetEventLevelReportTime( - report.attribution_info().source, report.attribution_info().time)); + EXPECT_EQ(source_time + base::Days(7) + base::Hours(1), + AttributionStorageDelegateImpl().GetEventLevelReportTime( + report.GetStoredSource(), report.attribution_info().time)); } TEST_F(AttributionStorageDelegateImplTestInvalidFeatureConfigured,
diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/content/browser/attribution_reporting/attribution_storage_sql.cc index acad128..a72c64b 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql.cc
@@ -78,6 +78,8 @@ using AggregatableResult = ::content::AttributionTrigger::AggregatableResult; using EventLevelResult = ::content::AttributionTrigger::EventLevelResult; +using ::aggregation_service::mojom::AggregationCoordinator; + using ::attribution_reporting::SuitableOrigin; using ::attribution_reporting::mojom::SourceType; @@ -285,15 +287,16 @@ } bool DeserializeReportMetadata(const std::string& str, - AttributionReport::EventLevelData& data) { + uint64_t& trigger_data, + int64_t& priority) { proto::AttributionEventLevelMetadata msg; if (!msg.ParseFromString(str) || !msg.has_trigger_data() || !msg.has_priority()) { return false; } - data.trigger_data = msg.trigger_data(); - data.priority = msg.priority(); + trigger_data = msg.trigger_data(); + priority = msg.priority(); return true; } @@ -302,7 +305,7 @@ proto::AttributionAggregatableMetadata msg; switch (data.aggregation_coordinator) { - case ::aggregation_service::mojom::AggregationCoordinator::kAwsCloud: + case AggregationCoordinator::kAwsCloud: msg.set_coordinator(proto::AttributionAggregatableMetadata::AWS_CLOUD); break; } @@ -340,8 +343,7 @@ switch (msg.coordinator()) { case proto::AttributionAggregatableMetadata::AWS_CLOUD: - data.aggregation_coordinator = - ::aggregation_service::mojom::AggregationCoordinator::kAwsCloud; + data.aggregation_coordinator = AggregationCoordinator::kAwsCloud; break; default: return false; @@ -752,7 +754,7 @@ // The fake destinations are not relevant to the context that // actually created the report. AttributionReport fake_attribution_report( - AttributionInfo(stored_source, fake_report.trigger_time, + AttributionInfo(fake_report.trigger_time, /*debug_key=*/absl::nullopt, /*context_origin=*/common_info.source_origin()), AttributionReport::Id(kUnsetReportId), fake_report.report_time, @@ -760,7 +762,8 @@ delegate_->NewReportID(), /*failed_send_attempts=*/0, AttributionReport::EventLevelData(fake_report.trigger_data, /*priority=*/0, - /*randomized_trigger_rate=*/0)); + /*randomized_trigger_rate=*/0, + stored_source)); if (!StoreAttributionReport(fake_attribution_report)) { return StoreSourceResult(StorableSource::Result::kInternalError); } @@ -775,10 +778,10 @@ if (attribution_logic != StoredSource::AttributionLogic::kTruthfully) { if (!rate_limit_table_.AddRateLimitForAttribution( &db_, - AttributionInfo(std::move(stored_source), - /*time=*/common_info.source_time(), + AttributionInfo(/*time=*/common_info.source_time(), /*debug_key=*/absl::nullopt, - /*context_origin=*/common_info.source_origin()))) { + /*context_origin=*/common_info.source_origin()), + stored_source)) { return StoreSourceResult(StorableSource::Result::kInternalError); } } @@ -811,7 +814,11 @@ absl::optional<AttributionReport>& replaced_report) { DCHECK_GE(num_conversions, 0); - const StoredSource& source = report.attribution_info().source; + const auto* data = + absl::get_if<AttributionReport::EventLevelData>(&report.data()); + DCHECK(data); + + const StoredSource& source = data->source; // If there's already capacity for the new report, there's nothing to do. if (num_conversions < delegate_->GetMaxAttributionsPerSource( @@ -839,11 +846,11 @@ continue; } - AttributionReport::EventLevelData data; - if (!DeserializeReportMetadata(metadata, data)) { + uint64_t trigger_data; + int64_t priority; + if (!DeserializeReportMetadata(metadata, trigger_data, priority)) { continue; } - int64_t priority = data.priority; base::Time trigger_time = min_priority_statement.ColumnTime(1); if (!conversion_id_with_min_priority.has_value() || @@ -929,7 +936,7 @@ absl::optional<AttributionReport> replaced_event_level_report; absl::optional<AttributionReport> dropped_event_level_report; - absl::optional<AttributionInfo> attribution_info; + absl::optional<StoredSourceData> source_to_attribute; CreateReportResult::Limits limits; @@ -960,8 +967,8 @@ std::move(replaced_event_level_report), std::move(new_event_level_report), std::move(new_aggregatable_report), - attribution_info - ? absl::make_optional(std::move(attribution_info->source)) + source_to_attribute + ? absl::make_optional(std::move(source_to_attribute->source)) : absl::nullopt, limits, std::move(dropped_event_level_report)); }; @@ -1004,8 +1011,7 @@ AggregatableResult::kNoMatchingImpressions); } - absl::optional<StoredSourceData> source_to_attribute = - ReadSourceToAttribute(&db_, *source_id_to_attribute); + source_to_attribute = ReadSourceToAttribute(&db_, *source_id_to_attribute); // This is only possible if there is a corrupt DB. if (!source_to_attribute.has_value()) { return assemble_report_result(EventLevelResult::kInternalError, @@ -1017,9 +1023,9 @@ source_to_attribute->source.common_info().source_type(), trigger_registration.filters); - attribution_info.emplace(std::move(source_to_attribute->source), trigger_time, - trigger_registration.debug_key, - /*context_origin=*/trigger.destination_origin()); + AttributionInfo attribution_info( + trigger_time, trigger_registration.debug_key, + /*context_origin=*/trigger.destination_origin()); if (!top_level_filters_match) { return assemble_report_result( @@ -1031,7 +1037,8 @@ if (!event_level_status.has_value()) { if (EventLevelResult create_event_level_status = MaybeCreateEventLevelReport( - *attribution_info, trigger, new_event_level_report, dedup_key, + attribution_info, source_to_attribute->source, trigger, + new_event_level_report, dedup_key, limits.max_event_level_reports_per_destination); create_event_level_status != EventLevelResult::kSuccess) { event_level_status = create_event_level_status; @@ -1042,8 +1049,8 @@ if (!aggregatable_status.has_value()) { if (AggregatableResult create_aggregatable_status = MaybeCreateAggregatableAttributionReport( - *attribution_info, trigger, new_aggregatable_report, - aggregatable_dedup_key, + attribution_info, source_to_attribute->source, trigger, + new_aggregatable_report, aggregatable_dedup_key, limits.max_aggregatable_reports_per_destination); create_aggregatable_status != AggregatableResult::kSuccess) { aggregatable_status = create_aggregatable_status; @@ -1056,7 +1063,7 @@ } switch (rate_limit_table_.AttributionAllowedForAttributionLimit( - &db_, *attribution_info)) { + &db_, attribution_info, source_to_attribute->source)) { case RateLimitResult::kAllowed: break; case RateLimitResult::kNotAllowed: @@ -1070,7 +1077,7 @@ } switch (rate_limit_table_.AttributionAllowedForReportingOriginLimit( - &db_, *attribution_info)) { + &db_, attribution_info, source_to_attribute->source)) { case RateLimitResult::kAllowed: break; case RateLimitResult::kNotAllowed: @@ -1160,7 +1167,8 @@ store_aggregatable_status); } - if (!rate_limit_table_.AddRateLimitForAttribution(&db_, *attribution_info)) { + if (!rate_limit_table_.AddRateLimitForAttribution( + &db_, attribution_info, source_to_attribute->source)) { return assemble_report_result(EventLevelResult::kInternalError, AggregatableResult::kInternalError); } @@ -1219,21 +1227,20 @@ EventLevelResult AttributionStorageSql::MaybeCreateEventLevelReport( const AttributionInfo& attribution_info, + const StoredSource& source, const AttributionTrigger& trigger, absl::optional<AttributionReport>& report, absl::optional<uint64_t>& dedup_key, absl::optional<int>& max_event_level_reports_per_destination) { - if (attribution_info.source.attribution_logic() == - StoredSource::AttributionLogic::kFalsely) { - DCHECK_EQ(attribution_info.source.active_state(), + if (source.attribution_logic() == StoredSource::AttributionLogic::kFalsely) { + DCHECK_EQ(source.active_state(), StoredSource::ActiveState::kReachedEventLevelAttributionLimit); return EventLevelResult::kFalselyAttributedSource; } - const CommonSourceInfo& common_info = attribution_info.source.common_info(); + const CommonSourceInfo& common_info = source.common_info(); - if (attribution_info.time > - attribution_info.source.event_report_window_time()) { + if (attribution_info.time > source.event_report_window_time()) { return EventLevelResult::kReportWindowPassed; } @@ -1242,16 +1249,14 @@ auto event_trigger = base::ranges::find_if( trigger.registration().event_triggers, [&](const attribution_reporting::EventTriggerData& event_trigger) { - return attribution_info.source.filter_data().Matches( - source_type, event_trigger.filters); + return source.filter_data().Matches(source_type, event_trigger.filters); }); if (event_trigger == trigger.registration().event_triggers.end()) { return EventLevelResult::kNoMatchingConfigurations; } - switch (ReportAlreadyStored(attribution_info.source.source_id(), - event_trigger->dedup_key, + switch (ReportAlreadyStored(source.source_id(), event_trigger->dedup_key, AttributionReport::Type::kEventLevel)) { case ReportAlreadyStoredStatus::kNotStored: break; @@ -1274,8 +1279,8 @@ return EventLevelResult::kInternalError; } - const base::Time report_time = delegate_->GetEventLevelReportTime( - attribution_info.source, attribution_info.time); + const base::Time report_time = + delegate_->GetEventLevelReportTime(source, attribution_info.time); // TODO(apaseltiner): When the real values returned by // `GetRandomizedResponseRate()` are changed for the first time, we must @@ -1298,7 +1303,7 @@ /*failed_send_attempts=*/0, AttributionReport::EventLevelData( delegate_->SanitizeTriggerData(event_trigger->data, source_type), - event_trigger->priority, randomized_response_rate)); + event_trigger->priority, randomized_response_rate, source)); dedup_key = event_trigger->dedup_key; @@ -1311,7 +1316,12 @@ int num_conversions, absl::optional<AttributionReport>& replaced_report, absl::optional<AttributionReport>& dropped_report) { - if (report.attribution_info().source.active_state() == + auto* event_level_data = + absl::get_if<AttributionReport::EventLevelData>(&report.data()); + DCHECK(event_level_data); + + const StoredSource& source = event_level_data->source; + if (source.active_state() == StoredSource::ActiveState::kReachedEventLevelAttributionLimit) { dropped_report = std::move(report); return EventLevelResult::kExcessiveReports; @@ -1322,9 +1332,6 @@ return EventLevelResult::kInternalError; } - auto* event_level_data = - absl::get_if<AttributionReport::EventLevelData>(&report.data()); - DCHECK(event_level_data); const auto maybe_replace_lower_priority_report_result = MaybeReplaceLowerPriorityEventLevelReport( report, num_conversions, event_level_data->priority, replaced_report); @@ -1351,13 +1358,11 @@ : EventLevelResult::kExcessiveReports; } - const AttributionInfo& attribution_info = report.attribution_info(); - // Reports with `AttributionLogic::kNever` should be included in all // attribution operations and matching, but only `kTruthfully` should generate // reports that get sent. - const bool create_report = attribution_info.source.attribution_logic() == - StoredSource::AttributionLogic::kTruthfully; + const bool create_report = + source.attribution_logic() == StoredSource::AttributionLogic::kTruthfully; if (create_report) { if (!StoreAttributionReport(report)) { @@ -1369,7 +1374,7 @@ // `create_report` is true to avoid leaking whether the report was actually // stored. if (dedup_key.has_value() && - !StoreDedupKey(attribution_info.source.source_id(), *dedup_key, + !StoreDedupKey(source.source_id(), *dedup_key, AttributionReport::Type::kEventLevel)) { return EventLevelResult::kInternalError; } @@ -1385,8 +1390,7 @@ SQL_FROM_HERE, kUpdateImpressionForConversionSql)); // Update the attributed source. - impression_update_statement.BindInt64(0, - *attribution_info.source.source_id()); + impression_update_statement.BindInt64(0, *source.source_id()); if (!impression_update_statement.Run()) { return EventLevelResult::kInternalError; } @@ -1434,6 +1438,12 @@ // Ensure data is valid before continuing. This could happen if there is // database corruption. // TODO(apaseltiner): Should we raze the DB if we've detected corruption? + // + // TODO(linnan): Consider verifying that reporting origin stored in `reports` + // table is consistent with that in `sources` table. + // + // TODO(apaseltiner): Consider verifying that `context_origin` is valid for + // the associated source. if (failed_send_attempts < 0 || !external_report_id.is_valid() || !source_data.has_value() || !context_origin.has_value() || !report_type.has_value()) { @@ -1445,35 +1455,40 @@ return absl::nullopt; } - AttributionReport::Data data; + absl::optional<AttributionReport::Data> data; switch (*report_type) { case AttributionReport::Type::kEventLevel: { - auto& event_level_data = data.emplace<AttributionReport::EventLevelData>( - /*trigger_data=*/0, /*priority=*/0, - delegate_->GetRandomizedResponseRate( - source_data->source.common_info().source_type())); - if (!DeserializeReportMetadata(metadata, event_level_data)) { + uint64_t trigger_data; + int64_t priority; + if (!DeserializeReportMetadata(metadata, trigger_data, priority)) { return absl::nullopt; } + data = AttributionReport::EventLevelData( + trigger_data, priority, + delegate_->GetRandomizedResponseRate( + source_data->source.common_info().source_type()), + std::move(source_data->source)); break; } case AttributionReport::Type::kAggregatableAttribution: { - auto& aggregatable_data = - data.emplace<AttributionReport::AggregatableAttributionData>(); + data = AttributionReport::AggregatableAttributionData( + /*contributions=*/{}, AggregationCoordinator::kDefault, + /*attestation_token=*/absl::nullopt, std::move(source_data->source)); if (!DeserializeReportMetadata( metadata, delegate_->GetAggregatableBudgetPerSource(), - aggregatable_data)) { + absl::get<AttributionReport::AggregatableAttributionData>( + *data))) { return absl::nullopt; } break; } } - return AttributionReport( - AttributionInfo(std::move(source_data->source), trigger_time, - trigger_debug_key, std::move(*context_origin)), - AttributionReport::Id(report_id), report_time, initial_report_time, - std::move(external_report_id), failed_send_attempts, std::move(data)); + return AttributionReport(AttributionInfo(trigger_time, trigger_debug_key, + std::move(*context_origin)), + AttributionReport::Id(report_id), report_time, + initial_report_time, std::move(external_report_id), + failed_send_attempts, std::move(*data)); } std::vector<AttributionReport> AttributionStorageSql::GetAttributionReports( @@ -2179,6 +2194,14 @@ return false; } + // Optimizes data deletion by source time. + static constexpr char kSourcesSourceTimeIndexSql[] = + "CREATE INDEX sources_by_source_time " + "ON sources(source_time)"; + if (!db_.Execute(kSourcesSourceTimeIndexSql)) { + return false; + } + // All columns in this table are const except |report_time| and // |failed_send_attempts|, // which are updated when a report fails to send, as part of retries. @@ -2191,6 +2214,8 @@ // data-deletion purposes. For real reports, it is the destination origin on // which the trigger was registered. For fake reports, it is the source // origin. + // |reporting_origin| is the reporting origin for the report and is the same + // as the |reporting_origin| of its associated source. // |report_type| indicates whether it's an event-level or aggregatable report. // |metadata| encodes the report type-specific data. // @@ -2207,6 +2232,7 @@ "external_report_id TEXT NOT NULL," "debug_key INTEGER," "context_origin TEXT NOT NULL," + "reporting_origin TEXT NOT NULL," "report_type INTEGER NOT NULL," "metadata BLOB NOT NULL)"; if (!db_.Execute(kReportsTableSql)) { @@ -2234,6 +2260,14 @@ return false; } + // Optimizes data deletion by trigger time. + static constexpr char kReportsTriggerTimeIndexSql[] = + "CREATE INDEX reports_by_trigger_time " + "ON reports(trigger_time)"; + if (!db_.Execute(kReportsTriggerTimeIndexSql)) { + return false; + } + if (!rate_limit_table_.CreateTable(&db_)) { return false; } @@ -2377,40 +2411,59 @@ return false; } - // TODO(linnan): Considering optimizing SQL query by moving some logic to C++. - // See the comment in crrev.com/c/3379484 for more information. - sql::Statement statement(db_.GetCachedStatement( - SQL_FROM_HERE, attribution_queries::kScanCandidateData)); - statement.BindTime(0, delete_begin); - statement.BindTime(1, delete_end); + auto match_filter = [&](const std::string& str) { + return filter.is_null() || filter.Run(blink::StorageKey::CreateFirstParty( + DeserializeOrigin(str))); + }; - while (statement.Step()) { - if (filter.is_null() || - filter.Run(blink::StorageKey::CreateFirstParty( - DeserializeOrigin(statement.ColumnString(0))))) { - source_ids_to_delete.emplace_back(statement.ColumnInt64(1)); - if (statement.GetColumnType(2) != sql::ColumnType::kNull && - statement.GetColumnType(3) != sql::ColumnType::kNull) { - absl::optional<AttributionReport::Type> report_type = - DeserializeReportType(statement.ColumnInt(3)); - if (report_type) { - switch (*report_type) { - case AttributionReport::Type::kEventLevel: - ++num_event_reports_deleted; - break; - case AttributionReport::Type::kAggregatableAttribution: - ++num_aggregatable_reports_deleted; - break; - } - } - if (!DeleteReport(AttributionReport::Id(statement.ColumnInt64(2)))) { - return false; - } - } + sql::Statement scan_sources_statement(db_.GetCachedStatement( + SQL_FROM_HERE, attribution_queries::kScanSourcesData)); + scan_sources_statement.BindTime(0, delete_begin); + scan_sources_statement.BindTime(1, delete_end); + + while (scan_sources_statement.Step()) { + if (match_filter(scan_sources_statement.ColumnString(0))) { + source_ids_to_delete.emplace_back(scan_sources_statement.ColumnInt64(1)); } } - return statement.Succeeded() && transaction.Commit(); + if (!scan_sources_statement.Succeeded()) { + return false; + } + + sql::Statement scan_reports_statement(db_.GetCachedStatement( + SQL_FROM_HERE, attribution_queries::kScanReportsData)); + scan_reports_statement.BindTime(0, delete_begin); + scan_reports_statement.BindTime(1, delete_end); + + while (scan_reports_statement.Step()) { + if (!match_filter(scan_reports_statement.ColumnString(0))) { + continue; + } + source_ids_to_delete.emplace_back(scan_reports_statement.ColumnInt64(1)); + absl::optional<AttributionReport::Type> report_type = + DeserializeReportType(scan_reports_statement.ColumnInt(3)); + if (report_type) { + switch (*report_type) { + case AttributionReport::Type::kEventLevel: + ++num_event_reports_deleted; + break; + case AttributionReport::Type::kAggregatableAttribution: + ++num_aggregatable_reports_deleted; + break; + } + } + if (!DeleteReport( + AttributionReport::Id(scan_reports_statement.ColumnInt64(2)))) { + return false; + } + } + + if (!scan_reports_statement.Succeeded()) { + return false; + } + + return transaction.Commit(); } bool AttributionStorageSql::ClearReportsForSourceIds( @@ -2497,6 +2550,7 @@ AggregatableResult AttributionStorageSql::MaybeCreateAggregatableAttributionReport( const AttributionInfo& attribution_info, + const StoredSource& source, const AttributionTrigger& trigger, absl::optional<AttributionReport>& report, absl::optional<uint64_t>& dedup_key, @@ -2504,10 +2558,9 @@ const attribution_reporting::TriggerRegistration& trigger_registration = trigger.registration(); - const CommonSourceInfo& common_info = attribution_info.source.common_info(); + const CommonSourceInfo& common_info = source.common_info(); - if (attribution_info.time > - attribution_info.source.aggregatable_report_window_time()) { + if (attribution_info.time > source.aggregatable_report_window_time()) { return AggregatableResult::kReportWindowPassed; } @@ -2517,8 +2570,8 @@ trigger.registration().aggregatable_dedup_keys, [&](const attribution_reporting::AggregatableDedupKey& aggregatable_dedup_key) { - return attribution_info.source.filter_data().Matches( - source_type, aggregatable_dedup_key.filters); + return source.filter_data().Matches(source_type, + aggregatable_dedup_key.filters); }); if (matched_dedup_key != @@ -2527,7 +2580,7 @@ } switch ( - ReportAlreadyStored(attribution_info.source.source_id(), dedup_key, + ReportAlreadyStored(source.source_id(), dedup_key, AttributionReport::Type::kAggregatableAttribution)) { case ReportAlreadyStoredStatus::kNotStored: break; @@ -2539,8 +2592,7 @@ std::vector<AggregatableHistogramContribution> contributions = CreateAggregatableHistogram( - attribution_info.source.filter_data(), source_type, - attribution_info.source.aggregation_keys(), + source.filter_data(), source_type, source.aggregation_keys(), trigger_registration.aggregatable_trigger_data, trigger_registration.aggregatable_values); if (contributions.empty()) { @@ -2586,7 +2638,7 @@ AttributionReport::AggregatableAttributionData( std::move(contributions), trigger_registration.aggregation_coordinator, - std::move(attestation_token))); + std::move(attestation_token), source)); return AggregatableResult::kSuccess; } @@ -2596,14 +2648,15 @@ "INSERT INTO reports" "(source_id,trigger_time,report_time,initial_report_time," "failed_send_attempts,external_report_id,debug_key,context_origin," - "report_type,metadata)" - "VALUES(?,?,?,?,0,?,?,?,?,?)"; + "reporting_origin,report_type,metadata)" + "VALUES(?,?,?,?,0,?,?,?,?,?,?)"; sql::Statement store_report_statement( db_.GetCachedStatement(SQL_FROM_HERE, kStoreReportSql)); const AttributionInfo& attribution_info = report.attribution_info(); + const StoredSource& source = report.GetStoredSource(); - store_report_statement.BindInt64(0, *attribution_info.source.source_id()); + store_report_statement.BindInt64(0, *source.source_id()); store_report_statement.BindTime(1, attribution_info.time); store_report_statement.BindTime(2, report.report_time()); store_report_statement.BindTime(3, report.initial_report_time()); @@ -2612,14 +2665,16 @@ BindUint64OrNull(store_report_statement, 5, attribution_info.debug_key); store_report_statement.BindString( 6, attribution_info.context_origin.Serialize()); - store_report_statement.BindInt(7, + store_report_statement.BindString( + 7, source.common_info().reporting_origin().Serialize()); + store_report_statement.BindInt(8, SerializeReportType(report.GetReportType())); std::string metadata = absl::visit( [](const auto& data) { return SerializeReportMetadata(data); }, report.data()); - store_report_statement.BindBlob(8, metadata); + store_report_statement.BindBlob(9, metadata); if (!store_report_statement.Run()) { return false; } @@ -2660,7 +2715,7 @@ return AggregatableResult::kInternalError; } - StoredSource::Id source_id = report.attribution_info().source.source_id(); + StoredSource::Id source_id = aggregatable_attribution->source.source_id(); base::CheckedNumeric<int64_t> budget_required = aggregatable_attribution->BudgetRequired();
diff --git a/content/browser/attribution_reporting/attribution_storage_sql.h b/content/browser/attribution_reporting/attribution_storage_sql.h index 673fab90..13eaff9 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql.h +++ b/content/browser/attribution_reporting/attribution_storage_sql.h
@@ -44,15 +44,15 @@ class CONTENT_EXPORT AttributionStorageSql : public AttributionStorage { public: // Version number of the database. - static constexpr int kCurrentVersionNumber = 49; + static constexpr int kCurrentVersionNumber = 50; // Earliest version which can use a `kCurrentVersionNumber` database // without failing. - static constexpr int kCompatibleVersionNumber = 49; + static constexpr int kCompatibleVersionNumber = 50; // Latest version of the database that cannot be upgraded to // `kCurrentVersionNumber` without razing the database. - static constexpr int kDeprecatedVersionNumber = 48; + static constexpr int kDeprecatedVersionNumber = 49; static_assert(kCompatibleVersionNumber <= kCurrentVersionNumber); static_assert(kDeprecatedVersionNumber < kCompatibleVersionNumber); @@ -230,6 +230,7 @@ AttributionTrigger::EventLevelResult MaybeCreateEventLevelReport( const AttributionInfo& attribution_info, + const StoredSource&, const AttributionTrigger& trigger, absl::optional<AttributionReport>& report, absl::optional<uint64_t>& dedup_key, @@ -304,6 +305,7 @@ AttributionTrigger::AggregatableResult MaybeCreateAggregatableAttributionReport( const AttributionInfo& attribution_info, + const StoredSource&, const AttributionTrigger& trigger, absl::optional<AttributionReport>& report, absl::optional<uint64_t>& dedup_key,
diff --git a/content/browser/attribution_reporting/attribution_storage_sql_migrations.cc b/content/browser/attribution_reporting/attribution_storage_sql_migrations.cc index 7e9f0c0..793e8e3 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql_migrations.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql_migrations.cc
@@ -19,10 +19,10 @@ start_timestamp = base::ThreadTicks::Now(); } - static_assert(AttributionStorageSql::kDeprecatedVersionNumber + 1 == 49, + static_assert(AttributionStorageSql::kDeprecatedVersionNumber + 1 == 50, "Remove migration(s) below."); - static_assert(AttributionStorageSql::kCurrentVersionNumber == 49, + static_assert(AttributionStorageSql::kCurrentVersionNumber == 50, "Add migration(s) above."); if (base::ThreadTicks::IsSupported()) {
diff --git a/content/browser/attribution_reporting/attribution_storage_sql_query_plans_unittest.cc b/content/browser/attribution_reporting/attribution_storage_sql_query_plans_unittest.cc index 1fa83be..dbf8094 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql_query_plans_unittest.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql_query_plans_unittest.cc
@@ -81,10 +81,14 @@ UsesIndex("reports_by_source_id_report_type"))); } -TEST_F(AttributionSqlQueryPlanTest, kScanCandidateData) { - EXPECT_THAT(GetPlan(attribution_queries::kScanCandidateData, - SqlFullScanReason::kNotOptimized), - UsesIndex("reports_by_source_id_report_type")); +TEST_F(AttributionSqlQueryPlanTest, kScanSourcesData) { + EXPECT_THAT(GetPlan(attribution_queries::kScanSourcesData), + UsesIndex("sources_by_source_time")); +} + +TEST_F(AttributionSqlQueryPlanTest, kScanReportsData) { + EXPECT_THAT(GetPlan(attribution_queries::kScanReportsData), + UsesIndex("reports_by_trigger_time")); } TEST_F(AttributionSqlQueryPlanTest, kDeleteVestigialConversionSql) {
diff --git a/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc b/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc index edc4f66..33cdf46c 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql_unittest.cc
@@ -76,6 +76,7 @@ std::string external_report_id; absl::optional<uint64_t> debug_key; std::string context_origin = "https://destination.test"; + std::string reporting_origin = "https://reporter.test"; int report_type; std::string metadata; }; @@ -229,7 +230,7 @@ static constexpr char kStoreReportSql[] = "INSERT INTO reports " - "VALUES(?,?,?,?,?,?,?,?,?,?,?)"; + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; sql::Statement statement(raw_db.GetUniqueStatement(kStoreReportSql)); statement.BindInt64(0, record.report_id); statement.BindInt64(1, record.source_id); @@ -245,9 +246,10 @@ statement.BindNull(7); } statement.BindString(8, record.context_origin); + statement.BindString(9, record.reporting_origin); - statement.BindInt(9, record.report_type); - statement.BindBlob(10, record.metadata); + statement.BindInt(10, record.report_type); + statement.BindBlob(11, record.metadata); ASSERT_TRUE(statement.Run()); } @@ -301,13 +303,13 @@ EXPECT_EQ(7u, sql::test::CountSQLTables(&raw_db)); // [conversion_domain_idx], [impression_expiry_idx], - // [impression_origin_idx], [reports_by_report_time], - // [reports_by_source_id_report_type], - // [rate_limit_source_site_reporting_origin_idx], + // [impression_origin_idx], [sources_by_source_time], + // [reports_by_report_time], [reports_by_source_id_report_type], + // [reports_by_trigger_time], [rate_limit_source_site_reporting_origin_idx], // [rate_limit_reporting_origin_idx], [rate_limit_time_idx], // [rate_limit_impression_id_idx], [sources_by_destination_site], and the // meta table index. - EXPECT_EQ(11u, sql::test::CountSQLIndices(&raw_db)); + EXPECT_EQ(13u, sql::test::CountSQLIndices(&raw_db)); } }
diff --git a/content/browser/attribution_reporting/attribution_storage_unittest.cc b/content/browser/attribution_reporting/attribution_storage_unittest.cc index eccc0b8..3aea60d 100644 --- a/content/browser/attribution_reporting/attribution_storage_unittest.cc +++ b/content/browser/attribution_reporting/attribution_storage_unittest.cc
@@ -154,10 +154,10 @@ CHECK(event_trigger != conversion.registration().event_triggers.end()); return ReportBuilder(AttributionInfoBuilder( - source, /*context_origin=*/conversion.destination_origin()) .SetTime(base::Time::Now()) - .Build()) + .Build(), + source) .SetTriggerData(event_trigger->data) .SetReportTime(source.common_info().source_time() + kReportDelay) .SetPriority(event_trigger->priority) @@ -169,10 +169,10 @@ std::vector<AggregatableHistogramContribution> contributions, const AttributionTrigger& trigger) { return ReportBuilder(AttributionInfoBuilder( - source, /*context_origin=*/trigger.destination_origin()) .SetTime(base::Time::Now()) - .Build()) + .Build(), + source) .SetReportTime(base::Time::Now() + kReportDelay) .SetAggregatableHistogramContributions(std::move(contributions)) .BuildAggregatableAttribution(); @@ -1590,15 +1590,14 @@ AttributionReport expected_event_level_report = ReportBuilder( AttributionInfoBuilder( - builder - .SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) - .SetActiveState(StoredSource::ActiveState:: - kReachedEventLevelAttributionLimit) - .BuildStored(), /*context_origin=*/*SuitableOrigin::Deserialize( "https://impression.test")) .SetTime(fake_trigger_time) - .Build()) + .Build(), + builder.SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) + .SetActiveState( + StoredSource::ActiveState::kReachedEventLevelAttributionLimit) + .BuildStored()) .SetTriggerData(7) .SetReportTime(fake_report_time) .Build(); @@ -1640,16 +1639,15 @@ expected_event_level_report = ReportBuilder( AttributionInfoBuilder( - builder - .SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) - .SetAggregatableBudgetConsumed(1) - .SetActiveState(StoredSource::ActiveState:: - kReachedEventLevelAttributionLimit) - .BuildStored(), /*context_origin=*/*SuitableOrigin::Deserialize( "https://impression.test")) .SetTime(fake_trigger_time) - .Build()) + .Build(), + builder.SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) + .SetAggregatableBudgetConsumed(1) + .SetActiveState( + StoredSource::ActiveState::kReachedEventLevelAttributionLimit) + .BuildStored()) .SetTriggerData(7) .SetReportTime(fake_report_time) .Build(); @@ -2792,9 +2790,8 @@ storage()->StoreSource(provider.GetBuilder().Build()); ReportBuilder builder( - AttributionInfoBuilder( - SourceBuilder().SetSourceId(StoredSource::Id(1)).BuildStored()) - .Build()); + AttributionInfoBuilder().Build(), + SourceBuilder().SetSourceId(StoredSource::Id(1)).BuildStored()); // A single contribution exceeds the budget. EXPECT_THAT(
diff --git a/content/browser/attribution_reporting/attribution_test_utils.cc b/content/browser/attribution_reporting/attribution_test_utils.cc index f22ed377..ae43e53 100644 --- a/content/browser/attribution_reporting/attribution_test_utils.cc +++ b/content/browser/attribution_reporting/attribution_test_utils.cc
@@ -387,9 +387,8 @@ } AttributionInfoBuilder::AttributionInfoBuilder( - StoredSource source, attribution_reporting::SuitableOrigin context_origin) - : source_(std::move(source)), context_origin_(std::move(context_origin)) {} + : context_origin_(std::move(context_origin)) {} AttributionInfoBuilder::~AttributionInfoBuilder() = default; @@ -405,11 +404,13 @@ } AttributionInfo AttributionInfoBuilder::Build() const { - return AttributionInfo(source_, time_, debug_key_, context_origin_); + return AttributionInfo(time_, debug_key_, context_origin_); } -ReportBuilder::ReportBuilder(AttributionInfo attribution_info) +ReportBuilder::ReportBuilder(AttributionInfo attribution_info, + StoredSource source) : attribution_info_(std::move(attribution_info)), + source_(std::move(source)), external_report_id_(DefaultExternalReportID()) {} ReportBuilder::~ReportBuilder() = default; @@ -471,16 +472,17 @@ /*initial_report_time=*/report_time_, external_report_id_, /*failed_send_attempts=*/0, AttributionReport::EventLevelData(trigger_data_, priority_, - randomized_trigger_rate_)); + randomized_trigger_rate_, source_)); } AttributionReport ReportBuilder::BuildAggregatableAttribution() const { - return AttributionReport( - attribution_info_, report_id_, report_time_, - /*initial_report_time=*/report_time_, external_report_id_, - /*failed_send_attempts=*/0, - AttributionReport::AggregatableAttributionData( - contributions_, aggregation_coordinator_, attestation_token_)); + return AttributionReport(attribution_info_, report_id_, report_time_, + /*initial_report_time=*/report_time_, + external_report_id_, + /*failed_send_attempts=*/0, + AttributionReport::AggregatableAttributionData( + contributions_, aggregation_coordinator_, + attestation_token_, source_)); } bool operator==(const AttributionTrigger& a, const AttributionTrigger& b) { @@ -501,8 +503,7 @@ bool operator==(const AttributionInfo& a, const AttributionInfo& b) { const auto tie = [](const AttributionInfo& attribution_info) { - return std::make_tuple(attribution_info.source, attribution_info.time, - attribution_info.debug_key, + return std::make_tuple(attribution_info.debug_key, attribution_info.context_origin); }; return tie(a) == tie(b); @@ -561,7 +562,7 @@ const AttributionReport::EventLevelData& b) { const auto tie = [](const AttributionReport::EventLevelData& data) { return std::make_tuple(data.trigger_data, data.priority, - data.randomized_trigger_rate); + data.randomized_trigger_rate, data.source); }; return tie(a) == tie(b); } @@ -573,7 +574,7 @@ const auto tie = [](const AttributionReport::AggregatableAttributionData& data) { return std::make_tuple(data.contributions, data.attestation_token, - data.aggregation_coordinator); + data.aggregation_coordinator, data.source); }; return tie(a) == tie(b); } @@ -731,8 +732,7 @@ std::ostream& operator<<(std::ostream& out, const AttributionInfo& attribution_info) { - return out << "{source=" << attribution_info.source - << ",time=" << attribution_info.time << ",debug_key=" + return out << "{time=" << attribution_info.time << ",debug_key=" << (attribution_info.debug_key ? base::NumberToString(*attribution_info.debug_key) : "null") @@ -800,7 +800,8 @@ const AttributionReport::EventLevelData& data) { return out << "{trigger_data=" << data.trigger_data << ",priority=" << data.priority - << ",randomized_trigger_rate=" << data.randomized_trigger_rate; + << ",randomized_trigger_rate=" << data.randomized_trigger_rate + << ",source=" << data.source << "}"; } std::ostream& operator<<( @@ -822,7 +823,7 @@ } return out << ",aggregation_coordinator=" << data.aggregation_coordinator - << "}"; + << ",source=" << data.source << "}"; } namespace {
diff --git a/content/browser/attribution_reporting/attribution_test_utils.h b/content/browser/attribution_reporting/attribution_test_utils.h index 2a498708..f8849354 100644 --- a/content/browser/attribution_reporting/attribution_test_utils.h +++ b/content/browser/attribution_reporting/attribution_test_utils.h
@@ -235,7 +235,6 @@ class AttributionInfoBuilder { public: explicit AttributionInfoBuilder( - StoredSource source, // For most tests, the context origin is irrelevant. attribution_reporting::SuitableOrigin context_origin = *attribution_reporting::SuitableOrigin::Deserialize( @@ -249,7 +248,6 @@ AttributionInfo Build() const; private: - StoredSource source_; base::Time time_; absl::optional<uint64_t> debug_key_; attribution_reporting::SuitableOrigin context_origin_; @@ -259,7 +257,7 @@ // data. class ReportBuilder { public: - explicit ReportBuilder(AttributionInfo attribution_info); + explicit ReportBuilder(AttributionInfo attribution_info, StoredSource); ~ReportBuilder(); ReportBuilder& SetTriggerData(uint64_t trigger_data); @@ -289,6 +287,7 @@ private: AttributionInfo attribution_info_; + StoredSource source_; uint64_t trigger_data_ = 0; base::Time report_time_; int64_t priority_ = 0; @@ -455,8 +454,7 @@ // Report matchers MATCHER_P(ReportSourceIs, matcher, "") { - return ExplainMatchResult(matcher, arg.attribution_info().source, - result_listener); + return ExplainMatchResult(matcher, arg.GetStoredSource(), result_listener); } MATCHER_P(ReportTimeIs, matcher, "") {
diff --git a/content/browser/attribution_reporting/rate_limit_table.cc b/content/browser/attribution_reporting/rate_limit_table.cc index 76667fc8..c8f3aee 100644 --- a/content/browser/attribution_reporting/rate_limit_table.cc +++ b/content/browser/attribution_reporting/rate_limit_table.cc
@@ -112,9 +112,10 @@ bool RateLimitTable::AddRateLimitForAttribution( sql::Database* db, - const AttributionInfo& attribution_info) { + const AttributionInfo& attribution_info, + const StoredSource& source) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return AddRateLimit(db, attribution_info.source, attribution_info.time, + return AddRateLimit(db, source, attribution_info.time, attribution_info.context_origin); } @@ -190,10 +191,11 @@ RateLimitResult RateLimitTable::AttributionAllowedForAttributionLimit( sql::Database* db, - const AttributionInfo& attribution_info) { + const AttributionInfo& attribution_info, + const StoredSource& source) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - const CommonSourceInfo& common_info = attribution_info.source.common_info(); + const CommonSourceInfo& common_info = source.common_info(); const AttributionConfig::RateLimitConfig rate_limits = delegate_->GetRateLimits(); @@ -273,11 +275,11 @@ RateLimitResult RateLimitTable::AttributionAllowedForReportingOriginLimit( sql::Database* db, - const AttributionInfo& attribution_info) { + const AttributionInfo& attribution_info, + const StoredSource& source) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return AllowedForReportingOriginLimit( - db, Scope::kAttribution, attribution_info.source.common_info(), - attribution_info.time, + db, Scope::kAttribution, source.common_info(), attribution_info.time, {net::SchemefulSite(attribution_info.context_origin)}); }
diff --git a/content/browser/attribution_reporting/rate_limit_table.h b/content/browser/attribution_reporting/rate_limit_table.h index 005aa53b..469ae42 100644 --- a/content/browser/attribution_reporting/rate_limit_table.h +++ b/content/browser/attribution_reporting/rate_limit_table.h
@@ -74,7 +74,8 @@ // Returns false on failure. [[nodiscard]] bool AddRateLimitForAttribution( sql::Database* db, - const AttributionInfo& attribution_info); + const AttributionInfo& attribution_info, + const StoredSource&); [[nodiscard]] RateLimitResult SourceAllowedForReportingOriginLimit( sql::Database* db, @@ -86,11 +87,13 @@ [[nodiscard]] RateLimitResult AttributionAllowedForReportingOriginLimit( sql::Database* db, - const AttributionInfo& attribution_info); + const AttributionInfo& attribution_info, + const StoredSource&); [[nodiscard]] RateLimitResult AttributionAllowedForAttributionLimit( sql::Database* db, - const AttributionInfo& attribution_info); + const AttributionInfo& attribution_info, + const StoredSource&); // These should be 1:1 with |AttributionStorageSql|'s |ClearData| functions. // Returns false on failure.
diff --git a/content/browser/attribution_reporting/rate_limit_table_unittest.cc b/content/browser/attribution_reporting/rate_limit_table_unittest.cc index 8360fa9d..edaebd0 100644 --- a/content/browser/attribution_reporting/rate_limit_table_unittest.cc +++ b/content/browser/attribution_reporting/rate_limit_table_unittest.cc
@@ -102,9 +102,7 @@ AttributionInfo BuildAttributionInfo() const { CHECK_EQ(scope, RateLimitScope::kAttribution); - auto source = NewSourceBuilder().BuildStored(); return AttributionInfoBuilder( - std::move(source), *SuitableOrigin::Deserialize(destination_origin)) .SetTime(attribution_time.value_or(time)) .Build(); @@ -219,8 +217,9 @@ } [[nodiscard]] bool AddRateLimitForAttribution(const RateLimitInput& input) { - return table_.AddRateLimitForAttribution(&db_, - input.BuildAttributionInfo()); + return table_.AddRateLimitForAttribution( + &db_, input.BuildAttributionInfo(), + input.NewSourceBuilder().BuildStored()); } [[nodiscard]] RateLimitResult SourceAllowedForReportingOriginLimit( @@ -240,13 +239,15 @@ [[nodiscard]] RateLimitResult AttributionAllowedForReportingOriginLimit( const RateLimitInput& input) { return table_.AttributionAllowedForReportingOriginLimit( - &db_, input.BuildAttributionInfo()); + &db_, input.BuildAttributionInfo(), + input.NewSourceBuilder().BuildStored()); } [[nodiscard]] RateLimitResult AttributionAllowedForAttributionLimit( const RateLimitInput& input) { return table_.AttributionAllowedForAttributionLimit( - &db_, input.BuildAttributionInfo()); + &db_, input.BuildAttributionInfo(), + input.NewSourceBuilder().BuildStored()); } protected: @@ -351,39 +352,38 @@ .max_attributions = 2, }); - const auto navigation_attribution = - AttributionInfoBuilder( - SourceBuilder() - .SetSourceType( - attribution_reporting::mojom::SourceType::kNavigation) - .BuildStored()) - .Build(); + const auto navigation_source = + SourceBuilder() + .SetSourceType(attribution_reporting::mojom::SourceType::kNavigation) + .BuildStored(); - const auto event_attribution = - AttributionInfoBuilder( - SourceBuilder() - .SetSourceType(attribution_reporting::mojom::SourceType::kEvent) - .BuildStored()) - .Build(); + const auto event_source = + SourceBuilder() + .SetSourceType(attribution_reporting::mojom::SourceType::kEvent) + .BuildStored(); + + const auto attribution_info = AttributionInfoBuilder().Build(); ASSERT_EQ(RateLimitResult::kAllowed, - table_.AttributionAllowedForAttributionLimit( - &db_, navigation_attribution)); + table_.AttributionAllowedForAttributionLimit(&db_, attribution_info, + navigation_source)); - ASSERT_EQ( - RateLimitResult::kAllowed, - table_.AttributionAllowedForAttributionLimit(&db_, event_attribution)); + ASSERT_EQ(RateLimitResult::kAllowed, + table_.AttributionAllowedForAttributionLimit(&db_, attribution_info, + event_source)); - ASSERT_TRUE(table_.AddRateLimitForAttribution(&db_, navigation_attribution)); - ASSERT_TRUE(table_.AddRateLimitForAttribution(&db_, event_attribution)); + ASSERT_TRUE(table_.AddRateLimitForAttribution(&db_, attribution_info, + navigation_source)); + ASSERT_TRUE( + table_.AddRateLimitForAttribution(&db_, attribution_info, event_source)); ASSERT_EQ(RateLimitResult::kNotAllowed, - table_.AttributionAllowedForAttributionLimit( - &db_, navigation_attribution)); + table_.AttributionAllowedForAttributionLimit(&db_, attribution_info, + navigation_source)); - ASSERT_EQ( - RateLimitResult::kNotAllowed, - table_.AttributionAllowedForAttributionLimit(&db_, event_attribution)); + ASSERT_EQ(RateLimitResult::kNotAllowed, + table_.AttributionAllowedForAttributionLimit(&db_, attribution_info, + event_source)); } namespace { @@ -594,7 +594,7 @@ TEST_F(RateLimitTableTest, ClearAllDataAllTime) { for (int i = 0; i < 2; i++) { ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, AttributionInfoBuilder(SourceBuilder().BuildStored()).Build())); + &db_, AttributionInfoBuilder().Build(), SourceBuilder().BuildStored())); } ASSERT_THAT(GetRateLimitRows(), SizeIs(2)); @@ -770,24 +770,18 @@ delegate_.set_delete_expired_rate_limits_frequency(base::Minutes(4)); ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, - AttributionInfoBuilder( - SourceBuilder() - .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s1.test")) - .BuildStored()) - .SetTime(base::Time::Now()) - .Build())); + &db_, AttributionInfoBuilder().SetTime(base::Time::Now()).Build(), + SourceBuilder() + .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s1.test")) + .BuildStored())); task_environment_.FastForwardBy(base::Minutes(4) - base::Milliseconds(1)); ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, - AttributionInfoBuilder( - SourceBuilder() - .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s2.test")) - .BuildStored()) - .SetTime(base::Time::Now()) - .Build())); + &db_, AttributionInfoBuilder().SetTime(base::Time::Now()).Build(), + SourceBuilder() + .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s2.test")) + .BuildStored())); // Neither row has expired at this point. ASSERT_THAT(GetRateLimitRows(), SizeIs(2)); @@ -796,13 +790,10 @@ task_environment_.FastForwardBy(base::Milliseconds(1)); ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, - AttributionInfoBuilder( - SourceBuilder() - .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s3.test")) - .BuildStored()) - .SetTime(base::Time::Now()) - .Build())); + &db_, AttributionInfoBuilder().SetTime(base::Time::Now()).Build(), + SourceBuilder() + .SetSourceOrigin(*SuitableOrigin::Deserialize("https://s3.test")) + .BuildStored())); // The first row should be expired at this point. ASSERT_THAT( @@ -836,16 +827,14 @@ TEST_F(RateLimitTableTest, AddFakeSourceForAttribution_OneRowPerDestination) { ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, - AttributionInfoBuilder( - SourceBuilder() - .SetDestinationSites( - {net::SchemefulSite::Deserialize("https://a.test"), - net::SchemefulSite::Deserialize("https://b.test"), - net::SchemefulSite::Deserialize("https://c.test")}) - .SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) - .BuildStored()) - .Build())); + &db_, AttributionInfoBuilder().Build(), + SourceBuilder() + .SetDestinationSites( + {net::SchemefulSite::Deserialize("https://a.test"), + net::SchemefulSite::Deserialize("https://b.test"), + net::SchemefulSite::Deserialize("https://c.test")}) + .SetAttributionLogic(StoredSource::AttributionLogic::kFalsely) + .BuildStored())); ASSERT_THAT(GetRateLimitRows(), SizeIs(3)); ASSERT_THAT( @@ -918,10 +907,8 @@ for (int64_t id = 7; id <= 9; id++) { ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, - AttributionInfoBuilder( - SourceBuilder().SetSourceId(StoredSource::Id(id)).BuildStored()) - .Build())); + &db_, AttributionInfoBuilder().Build(), + SourceBuilder().SetSourceId(StoredSource::Id(id)).BuildStored())); } ASSERT_THAT(GetRateLimitRows(), @@ -1011,12 +998,10 @@ .BuildStored())); ASSERT_TRUE(table_.AddRateLimitForAttribution( - &db_, AttributionInfoBuilder( - SourceBuilder() - .SetReportingOrigin( - *SuitableOrigin::Deserialize("https://b.r.test")) - .BuildStored()) - .Build())); + &db_, AttributionInfoBuilder().Build(), + SourceBuilder() + .SetReportingOrigin(*SuitableOrigin::Deserialize("https://b.r.test")) + .BuildStored())); std::vector<AttributionDataModel::DataKey> keys; table_.AppendRateLimitDataKeys(&db_, keys);
diff --git a/content/browser/attribution_reporting/sql_queries.h b/content/browser/attribution_reporting/sql_queries.h index f0a7242..5d457b6 100644 --- a/content/browser/attribution_reporting/sql_queries.h +++ b/content/browser/attribution_reporting/sql_queries.h
@@ -40,12 +40,15 @@ "SELECT source_id FROM reports" ")LIMIT ?"; -inline constexpr const char kScanCandidateData[] = - "SELECT I.reporting_origin,I.source_id,R.report_id,R.report_type " - "FROM sources I LEFT JOIN reports R ON " - "R.source_id=I.source_id WHERE" - "(I.source_time BETWEEN ?1 AND ?2)OR" - "(R.trigger_time BETWEEN ?1 AND ?2)"; +inline constexpr const char kScanSourcesData[] = + "SELECT I.reporting_origin,I.source_id " + "FROM sources I WHERE " + "I.source_time BETWEEN ? AND ?"; + +inline constexpr const char kScanReportsData[] = + "SELECT R.reporting_origin,R.source_id,R.report_id,R.report_type " + "FROM reports R WHERE " + "R.trigger_time BETWEEN ? AND ?"; inline constexpr const char kDeleteVestigialConversionSql[] = "DELETE FROM reports WHERE source_id=? RETURNING report_type";
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.cc b/content/browser/browsing_data/browsing_data_remover_impl.cc index a2a588d..cd2379d 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl.cc +++ b/content/browser/browsing_data/browsing_data_remover_impl.cc
@@ -839,6 +839,8 @@ return "Conversions"; case TracingDataType::kDeferredCookies: return "DeferredCookies"; + case TracingDataType::kSharedStorage: + return "SharedStorage"; } }
diff --git a/content/browser/browsing_data/browsing_data_remover_impl.h b/content/browser/browsing_data/browsing_data_remover_impl.h index c5efa19..9caf656 100644 --- a/content/browser/browsing_data/browsing_data_remover_impl.h +++ b/content/browser/browsing_data/browsing_data_remover_impl.h
@@ -128,7 +128,8 @@ kTrustTokens = 12, kConversions = 13, kDeferredCookies = 14, - kMaxValue = kDeferredCookies, + kSharedStorage = 15, + kMaxValue = kSharedStorage, }; // Returns the suffix for the History.ClearBrowsingData.Duration.Task.{Task}
diff --git a/content/browser/largest_contentful_paint_browsertests.cc b/content/browser/largest_contentful_paint_browsertests.cc index f163384..9c65e2a 100644 --- a/content/browser/largest_contentful_paint_browsertests.cc +++ b/content/browser/largest_contentful_paint_browsertests.cc
@@ -19,17 +19,6 @@ class LargestContentfulPaintTestBrowserTest : public ContentBrowserTest, public ::testing::WithParamInterface<bool> { - public: - LargestContentfulPaintTestBrowserTest() { - if (GetParam()) { - features_.InitWithFeatures( - /*enabled_features=*/ - {blink::features::kReportFCPOnlyOnSuccessfulCommit}, - /*disabled_features=*/ - {features::kSkipCommitsIfNotSynchronizingCompositorState}); - } - } - protected: void SetUpOnMainThread() override { host_resolver()->AddRule("*", "127.0.0.1"); @@ -70,7 +59,7 @@ base::test::ScopedFeatureList features_; }; -IN_PROC_BROWSER_TEST_P(LargestContentfulPaintTestBrowserTest, +IN_PROC_BROWSER_TEST_F(LargestContentfulPaintTestBrowserTest, NonTAOImageLCPRenderTime) { const GURL url1(embedded_test_server()->GetURL( "a.com", "/performance_timeline/cross-origin-non-tao-image.html")); @@ -83,7 +72,4 @@ EXPECT_NEAR(lcpStartTime, fcpStartTime, 0.01); } -INSTANTIATE_TEST_SUITE_P(All, - LargestContentfulPaintTestBrowserTest, - ::testing::Bool()); } // namespace content
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc index d02d9af..ec5b4bff 100644 --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc
@@ -200,7 +200,8 @@ const base::FilePath& directory_path, mojo::PendingReceiver<storage::mojom::Directory> receiver) { mojo::MakeSelfOwnedReceiver( - std::make_unique<storage::FilesystemImpl>(directory_path), + std::make_unique<storage::FilesystemImpl>( + directory_path, storage::FilesystemImpl::ClientType::kUntrusted), std::move(receiver)); } #endif
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index bd4a6817..fbd5b38 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -2889,13 +2889,10 @@ #if BUILDFLAG(IS_ANDROID) // Only ignore viewport meta tag when Request Desktop Site is used, but not // in other situations where embedder changes to arbitrary mobile UA string. - bool is_request_desktop_site = - renderer_preferences_.user_agent_override.ua_metadata_override && - !renderer_preferences_.user_agent_override.ua_metadata_override->mobile; - prefs.viewport_meta_enabled = !is_request_desktop_site; -#else - prefs.viewport_meta_enabled = false; + if (renderer_preferences_.user_agent_override.ua_metadata_override && + !renderer_preferences_.user_agent_override.ua_metadata_override->mobile) #endif + prefs.viewport_meta_enabled = false; } prefs.spatial_navigation_enabled =
diff --git a/content/browser/webauth/authenticator_common_impl.cc b/content/browser/webauth/authenticator_common_impl.cc index 8cc5949..51807ec5 100644 --- a/content/browser/webauth/authenticator_common_impl.cc +++ b/content/browser/webauth/authenticator_common_impl.cc
@@ -580,6 +580,7 @@ } if (!request_delegate_->IsVirtualEnvironmentEnabled() && + !disable_tls_check_ && !GetWebAuthenticationDelegate()->IsSecurityLevelAcceptableForWebAuthn( GetRenderFrameHost(), caller_origin)) { CompleteMakeCredentialRequest( @@ -890,6 +891,7 @@ return; } if (!request_delegate_->IsVirtualEnvironmentEnabled() && + !disable_tls_check_ && !GetWebAuthenticationDelegate()->IsSecurityLevelAcceptableForWebAuthn( GetRenderFrameHost(), caller_origin)) { CompleteGetAssertionRequest( @@ -1996,6 +1998,10 @@ disable_ui_ = true; } +void AuthenticatorCommonImpl::DisableTLSCheck() { + disable_tls_check_ = true; +} + RenderFrameHost* AuthenticatorCommonImpl::GetRenderFrameHost() const { RenderFrameHost* ret = RenderFrameHost::FromID(render_frame_host_id_); DCHECK(ret);
diff --git a/content/browser/webauth/authenticator_common_impl.h b/content/browser/webauth/authenticator_common_impl.h index 461e6e3..0f05679 100644 --- a/content/browser/webauth/authenticator_common_impl.h +++ b/content/browser/webauth/authenticator_common_impl.h
@@ -92,6 +92,7 @@ void Cancel() override; void Cleanup() override; void DisableUI() override; + void DisableTLSCheck() override; RenderFrameHost* GetRenderFrameHost() const override; void EnableRequestProxyExtensionsAPISupport() override; @@ -234,6 +235,7 @@ get_assertion_response_callback_; std::string client_data_json_; bool disable_ui_ = false; + bool disable_tls_check_ = false; url::Origin caller_origin_; std::string relying_party_id_; scoped_refptr<WebAuthRequestSecurityChecker> security_checker_;
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc index 265f956..3c26d6f 100644 --- a/content/browser/webauth/authenticator_impl_unittest.cc +++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -49,6 +49,7 @@ #include "content/browser/webauth/authenticator_environment.h" #include "content/browser/webauth/client_data_json.h" #include "content/public/browser/authenticator_request_client_delegate.h" +#include "content/public/browser/content_browser_client.h" #include "content/public/browser/render_frame_host.h" #include "content/public/common/content_client.h" #include "content/public/common/content_features.h" @@ -8624,9 +8625,15 @@ protected: InternalAuthenticatorImplTest() = default; + void SetUp() override { + AuthenticatorTestBase::SetUp(); + old_client_ = SetBrowserClientForTesting(&test_client_); + } + void TearDown() override { // The |RenderFrameHost| must outlive |AuthenticatorImpl|. internal_authenticator_impl_.reset(); + SetBrowserClientForTesting(old_client_); AuthenticatorTestBase::TearDown(); } @@ -8646,8 +8653,42 @@ protected: std::unique_ptr<InternalAuthenticatorImpl> internal_authenticator_impl_; + TestAuthenticatorContentBrowserClient test_client_; + raw_ptr<ContentBrowserClient> old_client_ = nullptr; }; +// Regression test for crbug.com/1433416. +TEST_F(InternalAuthenticatorImplTest, MakeCredentialSkipTLSCheck) { + NavigateAndCommit(GURL(kTestOrigin1)); + InternalAuthenticatorImpl* authenticator = + GetAuthenticator(url::Origin::Create(GURL(kTestOrigin1))); + test_client_.GetTestWebAuthenticationDelegate() + ->is_webauthn_security_level_acceptable = false; + PublicKeyCredentialCreationOptionsPtr options = + GetTestPublicKeyCredentialCreationOptions(); + TestMakeCredentialCallback callback; + authenticator->MakeCredential(std::move(options), callback.callback()); + callback.WaitForCallback(); + EXPECT_EQ(callback.status(), blink::mojom::AuthenticatorStatus::SUCCESS); +} + +// Regression test for crbug.com/1433416. +TEST_F(InternalAuthenticatorImplTest, GetAssertionSkipTLSCheck) { + NavigateAndCommit(GURL(kTestOrigin1)); + InternalAuthenticatorImpl* authenticator = + GetAuthenticator(url::Origin::Create(GURL(kTestOrigin1))); + test_client_.GetTestWebAuthenticationDelegate() + ->is_webauthn_security_level_acceptable = false; + PublicKeyCredentialRequestOptionsPtr options = + GetTestPublicKeyCredentialRequestOptions(); + ASSERT_TRUE(virtual_device_factory_->mutable_state()->InjectRegistration( + options->allow_credentials[0].id, options->relying_party_id)); + TestGetAssertionCallback callback; + authenticator->GetAssertion(std::move(options), callback.callback()); + callback.WaitForCallback(); + EXPECT_EQ(callback.status(), blink::mojom::AuthenticatorStatus::SUCCESS); +} + // Verify behavior for various combinations of origins and RP IDs. TEST_F(InternalAuthenticatorImplTest, MakeCredentialOriginAndRpIds) { // These instances should return security errors (for circumstances
diff --git a/content/browser/worker_network_isolation_key_browsertest.cc b/content/browser/worker_network_isolation_key_browsertest.cc index 64a62cb..74ae144 100644 --- a/content/browser/worker_network_isolation_key_browsertest.cc +++ b/content/browser/worker_network_isolation_key_browsertest.cc
@@ -227,8 +227,19 @@ ::testing::Values(WorkerType::kServiceWorker, WorkerType::kSharedWorker))); -using ServiceWorkerMainScriptRequestNetworkIsolationKeyBrowserTest = - WorkerNetworkIsolationKeyBrowserTest; +class ServiceWorkerMainScriptRequestNetworkIsolationKeyBrowserTest + : public WorkerNetworkIsolationKeyBrowserTest { + public: + ServiceWorkerMainScriptRequestNetworkIsolationKeyBrowserTest() { + // TODO(crbug.com/1147281): Tests under this class fail when + // kThirdPartyStoragePartitioning is enabled. + feature_list_.InitAndDisableFeature( + net::features::kThirdPartyStoragePartitioning); + } + + private: + base::test::ScopedFeatureList feature_list_; +}; // Test that network isolation key is filled in correctly for service worker's // main script request. The test navigates to "a.test" and creates an iframe @@ -245,6 +256,9 @@ // Note that it's sufficient not to test the cache miss when subframe origins // are different as in that case the two script urls must be different and it // also won't trigger an update. +// +// TODO(crbug.com/1147281): Update test to not depend on +// kThirdPartyStoragePartitioning being disabled. IN_PROC_BROWSER_TEST_F( ServiceWorkerMainScriptRequestNetworkIsolationKeyBrowserTest, ServiceWorkerMainScriptRequest) { @@ -299,7 +313,7 @@ } using SharedWorkerMainScriptRequestNetworkIsolationKeyBrowserTest = - ServiceWorkerMainScriptRequestNetworkIsolationKeyBrowserTest; + WorkerNetworkIsolationKeyBrowserTest; // Test that network isolation key is filled in correctly for shared worker's // main script request. The test navigates to "a.test" and creates an iframe
diff --git a/content/public/browser/authenticator_common.h b/content/public/browser/authenticator_common.h index 3c30c4c..dfd9753 100644 --- a/content/public/browser/authenticator_common.h +++ b/content/public/browser/authenticator_common.h
@@ -76,6 +76,9 @@ // Disable UI virtual void DisableUI() = 0; + // Disable the TLS security level check for the tab hosting this request. + virtual void DisableTLSCheck() = 0; + // GetRenderFrameHost returns a pointer to the RenderFrameHost that was given // to the constructor. Use this rather than keeping a copy of the // RenderFrameHost* that was passed in.
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc index 62ac173..4bf6226 100644 --- a/content/public/common/content_switches.cc +++ b/content/public/common/content_switches.cc
@@ -481,8 +481,9 @@ // overrides this if present. // This switch has an optional parameter that forces an AXMode bundle. The three // available bundle settings are: 'basic', 'form-controls', and 'complete'. If -// the bundle argument is invalid or absent, then the AXMode will default to -// 'complete'. +// the bundle argument is invalid, then the forced AXMode will default to +// 'complete'. If the bundle argument is missing, then the initial AXMode will +// default to complete but allow changes to the AXMode during execution. const char kForceRendererAccessibility[] = "force-renderer-accessibility"; // Force Skia's CPU backend to use analytic anti-aliasing for all content
diff --git a/content/test/content_unittests_bundle_data.filelist b/content/test/content_unittests_bundle_data.filelist index 57fc41f1..a8382fb 100644 --- a/content/test/content_unittests_bundle_data.filelist +++ b/content/test/content_unittests_bundle_data.filelist
@@ -40,8 +40,8 @@ data/attribution_reporting/aggregatable_report_goldens/version_/report_5_cleartext_payloads.json data/attribution_reporting/aggregatable_report_goldens/version_/report_6.json data/attribution_reporting/aggregatable_report_goldens/version_/report_6_cleartext_payloads.json -data/attribution_reporting/databases/version_48.sql data/attribution_reporting/databases/version_49.sql +data/attribution_reporting/databases/version_50.sql data/attribution_reporting/interop/aggregatable_budget.json data/attribution_reporting/interop/aggregatable_contributions_creation.json data/attribution_reporting/interop/aggregatable_dedup_key.json
diff --git a/content/test/data/attribution_reporting/databases/version_48.sql b/content/test/data/attribution_reporting/databases/version_48.sql deleted file mode 100644 index 50d2d7cf..0000000 --- a/content/test/data/attribution_reporting/databases/version_48.sql +++ /dev/null
@@ -1,54 +0,0 @@ -PRAGMA foreign_keys=OFF; - -BEGIN TRANSACTION; - -CREATE TABLE sources(source_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,source_event_id INTEGER NOT NULL,source_origin TEXT NOT NULL,reporting_origin TEXT NOT NULL,source_time INTEGER NOT NULL,expiry_time INTEGER NOT NULL,event_report_window_time INTEGER NOT NULL,aggregatable_report_window_time INTEGER NOT NULL,num_attributions INTEGER NOT NULL,event_level_active INTEGER NOT NULL,aggregatable_active INTEGER NOT NULL,source_type INTEGER NOT NULL,attribution_logic INTEGER NOT NULL,priority INTEGER NOT NULL,source_site TEXT NOT NULL,debug_key INTEGER,aggregatable_budget_consumed INTEGER NOT NULL,aggregatable_source BLOB NOT NULL,filter_data BLOB NOT NULL); - -CREATE TABLE event_level_reports(report_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,source_id INTEGER NOT NULL,trigger_data INTEGER NOT NULL,trigger_time INTEGER NOT NULL,report_time INTEGER NOT NULL,initial_report_time INTEGER NOT NULL,priority INTEGER NOT NULL,failed_send_attempts INTEGER NOT NULL,external_report_id TEXT NOT NULL,debug_key INTEGER,context_origin TEXT NOT NULL); - -CREATE TABLE rate_limits(id INTEGER PRIMARY KEY NOT NULL,scope INTEGER NOT NULL,source_id INTEGER NOT NULL,source_site TEXT NOT NULL,destination_site TEXT NOT NULL,context_origin TEXT NOT NULL,reporting_origin TEXT NOT NULL,time INTEGER NOT NULL,source_expiry_or_attribution_time INTEGER NOT NULL); - -CREATE TABLE dedup_keys(source_id INTEGER NOT NULL,report_type INTEGER NOT NULL,dedup_key INTEGER NOT NULL,PRIMARY KEY(source_id,report_type,dedup_key))WITHOUT ROWID; - -CREATE TABLE source_destinations(source_id INTEGER NOT NULL,destination_site TEXT NOT NULL,PRIMARY KEY(source_id,destination_site))WITHOUT ROWID; - -CREATE TABLE aggregatable_report_metadata(aggregation_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,source_id INTEGER NOT NULL,trigger_time INTEGER NOT NULL,debug_key INTEGER,external_report_id TEXT NOT NULL,report_time INTEGER NOT NULL,failed_send_attempts INTEGER NOT NULL,initial_report_time INTEGER NOT NULL,aggregation_coordinator INTEGER NOT NULL,attestation_token TEXT,destination_origin TEXT NOT NULL); - -CREATE TABLE aggregatable_contributions(aggregation_id INTEGER NOT NULL,contribution_id INTEGER NOT NULL,key_high_bits INTEGER NOT NULL,key_low_bits INTEGER NOT NULL,value INTEGER NOT NULL,PRIMARY KEY(aggregation_id,contribution_id))WITHOUT ROWID; - -CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); - -INSERT INTO meta VALUES('mmap_status','-1'); -INSERT INTO meta VALUES('version','48'); -INSERT INTO meta VALUES('last_compatible_version','48'); - -CREATE INDEX sources_by_active_reporting_origin ON sources(event_level_active,aggregatable_active,reporting_origin); - -CREATE INDEX sources_by_expiry_time ON sources(expiry_time); - -CREATE INDEX active_sources_by_source_origin ON sources(source_origin)WHERE event_level_active=1 OR aggregatable_active=1; - -CREATE INDEX sources_by_destination_site ON source_destinations(destination_site); - -CREATE INDEX event_level_reports_by_report_time ON event_level_reports(report_time); - -CREATE INDEX event_level_reports_by_source_id ON event_level_reports(source_id); - -CREATE INDEX rate_limit_source_site_reporting_origin_idx ON rate_limits(scope,source_site,reporting_origin); - -CREATE INDEX rate_limit_reporting_origin_idx ON rate_limits(scope,destination_site,source_site); - -CREATE INDEX rate_limit_time_idx ON rate_limits(time); - -CREATE INDEX rate_limit_source_id_idx ON rate_limits(source_id); - -CREATE INDEX aggregate_source_id_idx ON aggregatable_report_metadata(source_id); - -CREATE INDEX aggregate_trigger_time_idx ON aggregatable_report_metadata(trigger_time); - -CREATE INDEX aggregate_report_time_idx ON aggregatable_report_metadata(report_time); - -INSERT INTO sources VALUES -(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); - -COMMIT;
diff --git a/content/test/data/attribution_reporting/databases/version_49.sql b/content/test/data/attribution_reporting/databases/version_49.sql index 4b2f4cbe..7bb3c06 100644 --- a/content/test/data/attribution_reporting/databases/version_49.sql +++ b/content/test/data/attribution_reporting/databases/version_49.sql
@@ -38,4 +38,7 @@ CREATE INDEX rate_limit_source_id_idx ON rate_limits(source_id); +INSERT INTO sources VALUES +(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); + COMMIT;
diff --git a/content/test/data/attribution_reporting/databases/version_50.sql b/content/test/data/attribution_reporting/databases/version_50.sql new file mode 100644 index 0000000..6cc67f9e --- /dev/null +++ b/content/test/data/attribution_reporting/databases/version_50.sql
@@ -0,0 +1,45 @@ +PRAGMA foreign_keys=OFF; + +BEGIN TRANSACTION; + +CREATE TABLE sources(source_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,source_event_id INTEGER NOT NULL,source_origin TEXT NOT NULL,reporting_origin TEXT NOT NULL,source_time INTEGER NOT NULL,expiry_time INTEGER NOT NULL,event_report_window_time INTEGER NOT NULL,aggregatable_report_window_time INTEGER NOT NULL,num_attributions INTEGER NOT NULL,event_level_active INTEGER NOT NULL,aggregatable_active INTEGER NOT NULL,source_type INTEGER NOT NULL,attribution_logic INTEGER NOT NULL,priority INTEGER NOT NULL,source_site TEXT NOT NULL,debug_key INTEGER,aggregatable_budget_consumed INTEGER NOT NULL,aggregatable_source BLOB NOT NULL,filter_data BLOB NOT NULL); + +CREATE TABLE reports(report_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,source_id INTEGER NOT NULL,trigger_time INTEGER NOT NULL,report_time INTEGER NOT NULL,initial_report_time INTEGER NOT NULL,failed_send_attempts INTEGER NOT NULL,external_report_id TEXT NOT NULL,debug_key INTEGER,context_origin TEXT NOT NULL,reporting_origin TEXT NOT NULL,report_type INTEGER NOT NULL,metadata BLOB NOT NULL); + +CREATE TABLE rate_limits(id INTEGER PRIMARY KEY NOT NULL,scope INTEGER NOT NULL,source_id INTEGER NOT NULL,source_site TEXT NOT NULL,destination_site TEXT NOT NULL,context_origin TEXT NOT NULL,reporting_origin TEXT NOT NULL,time INTEGER NOT NULL,source_expiry_or_attribution_time INTEGER NOT NULL); + +CREATE TABLE dedup_keys(source_id INTEGER NOT NULL,report_type INTEGER NOT NULL,dedup_key INTEGER NOT NULL,PRIMARY KEY(source_id,report_type,dedup_key))WITHOUT ROWID; + +CREATE TABLE source_destinations(source_id INTEGER NOT NULL,destination_site TEXT NOT NULL,PRIMARY KEY(source_id,destination_site))WITHOUT ROWID; + +CREATE TABLE meta(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY, value LONGVARCHAR); + +INSERT INTO meta VALUES('mmap_status','-1'); +INSERT INTO meta VALUES('version','50'); +INSERT INTO meta VALUES('last_compatible_version','50'); + +CREATE INDEX sources_by_active_reporting_origin ON sources(event_level_active,aggregatable_active,reporting_origin); + +CREATE INDEX sources_by_expiry_time ON sources(expiry_time); + +CREATE INDEX active_sources_by_source_origin ON sources(source_origin)WHERE event_level_active=1 OR aggregatable_active=1; + +CREATE INDEX sources_by_source_time ON sources(source_time); + +CREATE INDEX sources_by_destination_site ON source_destinations(destination_site); + +CREATE INDEX reports_by_report_time ON reports(report_time); + +CREATE INDEX reports_by_source_id_report_type ON reports(source_id,report_type); + +CREATE INDEX reports_by_trigger_time ON reports(trigger_time); + +CREATE INDEX rate_limit_source_site_reporting_origin_idx ON rate_limits(scope,source_site,reporting_origin); + +CREATE INDEX rate_limit_reporting_origin_idx ON rate_limits(scope,destination_site,source_site); + +CREATE INDEX rate_limit_time_idx ON rate_limits(time); + +CREATE INDEX rate_limit_source_id_idx ON rate_limits(source_id); + +COMMIT;
diff --git a/content/test/gpu/gpu_tests/trace_integration_test.py b/content/test/gpu/gpu_tests/trace_integration_test.py index 0285096..71306a3 100644 --- a/content/test/gpu/gpu_tests/trace_integration_test.py +++ b/content/test/gpu/gpu_tests/trace_integration_test.py
@@ -884,7 +884,7 @@ if event.name != _PRESENT_TO_SWAP_CHAIN_EVENT_NAME: continue image_type = event.args.get('image_type', None) - if image_type == 'swap chain': + if image_type == 'DCompVisualContent': found_overlay = True break if expect_overlay and not found_overlay:
diff --git a/device/bluetooth/floss/floss_gatt_manager_client.cc b/device/bluetooth/floss/floss_gatt_manager_client.cc index 7e783d3..0db6d0f 100644 --- a/device/bluetooth/floss/floss_gatt_manager_client.cc +++ b/device/bluetooth/floss/floss_gatt_manager_client.cc
@@ -26,8 +26,8 @@ constexpr char kDefaultGattManagerClientUuid[] = "e060b902508c485f8b0e27639c7f2d41"; -// Default to requesting eatt support with gatt client. -constexpr bool kDefaultEattSupport = true; +// Default to not requesting eatt support with gatt client. +constexpr bool kDefaultEattSupport = false; void HandleResponse(const char* method, DBusResult<Void> result) { if (!result.has_value()) {
diff --git a/docs/accessibility/overview.md b/docs/accessibility/overview.md index 7efff99..7ec31dc0 100644 --- a/docs/accessibility/overview.md +++ b/docs/accessibility/overview.md
@@ -229,8 +229,10 @@ * `--force-renderer-accessibility=[basic|form-controls|complete]`: Force accessibility to be enabled, with optional parameter to force the AXMode - to one of the predefined bundles. If the optional parameter is missing or - invalid, then the default AXMode will be `complete`. + to one of the predefined bundles during the entire execution. If the optional + parameter is invalid, then the default AXMode will be `complete`. If the + optional parameter is missing, then the AXMode will initially default to + `complete` but allow changes to the mode during execution. * `--disable-renderer-accessibility`: Disable accessibility ### Supported Platforms and APIs
diff --git a/docs/updater/protocol_3_1.md b/docs/updater/protocol_3_1.md index 3ca9c8a..8232cf85 100644 --- a/docs/updater/protocol_3_1.md +++ b/docs/updater/protocol_3_1.md
@@ -303,18 +303,22 @@ * `platform`: The operating system family that the client is running within (e.g. "win", "mac", "linux", "ios", "android"), or "" if unknown. The operating system family name should be transmitted in a canonical form. - Lowercase with minimal formatting is recommended. Default: "". Known - values: - * "android": Android. - * "chromeos": Chrome OS. - * "chromiumos": Chromium OS. + Formatting varies across implementations. Default: "". Known values: + * "android" or "Android": Android. + * "chromeos" or "ChromeOS" or "Chrome OS": Chrome OS. + * "chromiumos" or "ChromiumOS" or "Chromium OS": Chromium OS. * "dragonfly": DragonFly BSD. - * "freebsd": FreeBSD. - * "ios": Apple iOS. - * "linux": Linux and its derivatives, except as mentioned below. - * "mac": Apple macOS (formerly Mac OS X) and its derivatives. - * "openbsd": OpenBSD. - * "win": Microsoft Windows and its derivatives. + * "freebsd" or "FreeBSD": FreeBSD. + * "Fuchsia": Fuchsia. + * "ios" or "iOS": Apple iOS. + * "linux" or "Linux": Linux and its derivatives, except as mentioned + below. + * "mac" or "Mac OS X": Apple macOS and its derivatives. + * "openbsd" or "OpenBSD": OpenBSD. + * "Solaris": Solaris. + * "win" or "Windows": Microsoft Windows and its derivatives. + * "Unknown": Sent by some clients instead of "" when the platform is not + recognized. * `version`: The version number of the operating system, or "" if unknown. Default: "". * `sp`: The service pack level of the operating system, or "" if unknown or
diff --git a/docs/webui_build_configuration.md b/docs/webui_build_configuration.md index e20abc6..1be20a9 100644 --- a/docs/webui_build_configuration.md +++ b/docs/webui_build_configuration.md
@@ -338,6 +338,7 @@ minify_js("build") { in_files = [ "my_webui.js" ] in_folder = "$target_gen_dir/tsc" + out_folder = "$target_gen_dir/minified" # Assumes the JS files were generated by a ts_library target called # build_ts. deps = [ ":build_ts" ] @@ -532,9 +533,10 @@ "//tools/typescript/tsconfig_base.json" for non-Polymer UIs. HTML/CSS/JS optimization related params: -optimize: Specifies whether any optimization steps will be used, defaults to - false. When true, html_to_wrapper() and css_to_wrapper() will be - invoked with the |minify| flag on, to minify HTML/CSS code. +optimize: Specifies whether any optimization steps will be used. Defaults to the + value of the optimize_webui GN flag. + When true, html_to_wrapper() and css_to_wrapper() will be invoked with + the |minify| flag on, to minify HTML/CSS code. If |optimize_webui_in_files| is provided then optimize_webui() will be invoked to bundle+minify JS code (using Rollup and Terser). If |optimize_webui_in_files| is not provided then minify_js() will be
diff --git a/gpu/command_buffer/service/abstract_texture_android.cc b/gpu/command_buffer/service/abstract_texture_android.cc index 5c2aca6..2c6b5d9b 100644 --- a/gpu/command_buffer/service/abstract_texture_android.cc +++ b/gpu/command_buffer/service/abstract_texture_android.cc
@@ -74,7 +74,7 @@ } if (texture_) { - texture_->RemoveLightweightRef(have_context_); + texture_.ExtractAsDangling()->RemoveLightweightRef(have_context_); } } @@ -107,4 +107,4 @@ return nullptr; } -} // namespace gpu \ No newline at end of file +} // namespace gpu
diff --git a/gpu/command_buffer/service/abstract_texture_android.h b/gpu/command_buffer/service/abstract_texture_android.h index 9e97d63..b3618be 100644 --- a/gpu/command_buffer/service/abstract_texture_android.h +++ b/gpu/command_buffer/service/abstract_texture_android.h
@@ -71,7 +71,7 @@ bool have_context_ = true; std::unique_ptr<TextureBase> texture_for_testing_; - raw_ptr<gles2::Texture, DanglingUntriaged> texture_ = nullptr; + raw_ptr<gles2::Texture> texture_ = nullptr; scoped_refptr<gles2::TexturePassthrough> texture_passthrough_; raw_ptr<gl::GLApi, DanglingUntriaged> api_ = nullptr; };
diff --git a/gpu/command_buffer/service/copy_shared_image_helper.cc b/gpu/command_buffer/service/copy_shared_image_helper.cc index 1c8e3e9..ff895ad5 100644 --- a/gpu/command_buffer/service/copy_shared_image_helper.cc +++ b/gpu/command_buffer/service/copy_shared_image_helper.cc
@@ -379,11 +379,7 @@ yuva_images[i]->SetCleared(); } } - if (auto end_state = rgba_scoped_access->TakeEndState()) { - shared_context_state_->gr_context()->setBackendTextureState( - rgba_scoped_access->promise_image_texture()->backendTexture(), - *end_state); - } + rgba_scoped_access->ApplyBackendSurfaceEndState(); SubmitIfNecessary(std::move(end_semaphores), shared_context_state_, is_drdc_enabled_); return base::ok(); @@ -494,11 +490,7 @@ FlushSurface(dest_scoped_access.get()); for (int i = 0; i < num_src_planes; ++i) { if (source_scoped_access[i]) { - if (auto end_state = source_scoped_access[i]->TakeEndState()) { - shared_context_state_->gr_context()->setBackendTextureState( - source_scoped_access[i]->promise_image_texture()->backendTexture(), - *end_state); - } + source_scoped_access[i]->ApplyBackendSurfaceEndState(); } } SubmitIfNecessary(std::move(end_semaphores), shared_context_state_, @@ -703,17 +695,7 @@ } FlushSurface(dest_scoped_access.get()); - if (auto end_state = source_scoped_access->TakeEndState()) { - const int num_planes = - static_cast<int>(source_shared_image->NumPlanesExpected()); - for (int plane_index = 0; plane_index < num_planes; plane_index++) { - shared_context_state_->gr_context()->setBackendTextureState( - source_scoped_access->promise_image_texture(plane_index) - ->backendTexture(), - *end_state); - } - } - + source_scoped_access->ApplyBackendSurfaceEndState(); SubmitIfNecessary(std::move(end_semaphores), shared_context_state_, is_drdc_enabled_); return result; @@ -841,16 +823,7 @@ } dest_surface->flush(); - if (auto end_state = source_scoped_access->TakeEndState()) { - const int num_planes = - static_cast<int>(source_shared_image->NumPlanesExpected()); - for (int plane_index = 0; plane_index < num_planes; plane_index++) { - shared_context_state_->gr_context()->setBackendTextureState( - source_scoped_access->promise_image_texture(plane_index) - ->backendTexture(), - *end_state); - } - } + source_scoped_access->ApplyBackendSurfaceEndState(); SubmitIfNecessary(std::move(end_semaphores), shared_context_state_, is_drdc_enabled_); return result; @@ -910,13 +883,7 @@ "Couldn't create SkImage for reading.")); } - if (auto end_state = source_scoped_access->TakeEndState()) { - shared_context_state_->gr_context()->setBackendTextureState( - source_scoped_access->promise_image_texture(plane_index) - ->backendTexture(), - *end_state); - } - + source_scoped_access->ApplyBackendSurfaceEndState(); SubmitIfNecessary(std::move(end_semaphores), shared_context_state_, is_drdc_enabled_); return result;
diff --git a/gpu/command_buffer/service/raster_decoder.cc b/gpu/command_buffer/service/raster_decoder.cc index bb3ded7..2af3f52 100644 --- a/gpu/command_buffer/service/raster_decoder.cc +++ b/gpu/command_buffer/service/raster_decoder.cc
@@ -246,12 +246,7 @@ void ApplyEndAccessState() { for (auto& accessor : read_accessors_) { - auto& scoped_access = accessor.second.scoped_read_access; - if (auto end_state = scoped_access->TakeEndState()) { - shared_context_state_->gr_context()->setBackendTextureState( - scoped_access->promise_image_texture()->backendTexture(), - *end_state); - } + accessor.second.scoped_read_access->ApplyBackendSurfaceEndState(); } } @@ -2443,12 +2438,7 @@ SkImage::RescaleGamma::kSrc, SkImage::RescaleMode::kRepeatedLinear, &OnReadYUVImagePixelsDone, &yuv_result); - if (auto end_state = source_scoped_access->TakeEndState()) { - gr_context()->setBackendTextureState( - source_scoped_access->promise_image_texture()->backendTexture(), - *end_state); - } - + source_scoped_access->ApplyBackendSurfaceEndState(); if (!end_semaphores.empty()) { GrFlushInfo flush_info = { .fNumSemaphores = end_semaphores.size(),
diff --git a/gpu/command_buffer/service/shared_image/egl_image_backing.cc b/gpu/command_buffer/service/shared_image/egl_image_backing.cc index 51a9897..1d445290 100644 --- a/gpu/command_buffer/service/shared_image/egl_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/egl_image_backing.cc
@@ -44,11 +44,12 @@ friend class base::RefCounted<TextureHolder>; ~TextureHolder() { - if (texture_) - texture_->RemoveLightweightRef(!context_lost_); + if (texture_) { + texture_.ExtractAsDangling()->RemoveLightweightRef(!context_lost_); + } } - const raw_ptr<gles2::Texture, DanglingUntriaged> texture_ = nullptr; + raw_ptr<gles2::Texture> texture_ = nullptr; const scoped_refptr<gles2::TexturePassthrough> texture_passthrough_; bool context_lost_ = false; };
diff --git a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc index bd0898a..8eae312 100644 --- a/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/external_vk_image_backing_factory_unittest.cc
@@ -204,9 +204,7 @@ EXPECT_EQ(pixel[3], 255); } - if (auto end_state = skia_scoped_access->TakeEndState()) { - gr_context()->setBackendTextureState(backend_texture, *end_state); - } + skia_scoped_access->ApplyBackendSurfaceEndState(); GrFlushInfo flush_info; flush_info.fNumSemaphores = end_semaphores.size(); @@ -449,11 +447,7 @@ } // Handle end state and semaphores. - if (auto end_state = scoped_read_access->TakeEndState()) { - gr_context()->setBackendTextureState( - scoped_read_access->promise_image_texture(0)->backendTexture(), - *end_state); - } + scoped_read_access->ApplyBackendSurfaceEndState(); if (!end_semaphores.empty()) { GrFlushInfo flush_info = { .fNumSemaphores = end_semaphores.size(),
diff --git a/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.cc b/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.cc index 687e12c..ba5345eb 100644 --- a/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.cc +++ b/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.cc
@@ -131,8 +131,9 @@ texture_passthrough_(std::move(texture_passthrough)) {} TextureHolder::~TextureHolder() { - if (texture_) - texture_->RemoveLightweightRef(!context_lost_); + if (texture_) { + texture_.ExtractAsDangling()->RemoveLightweightRef(!context_lost_); + } } void TextureHolder::MarkContextLost() {
diff --git a/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.h b/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.h index ade337b..446998e0 100644 --- a/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.h +++ b/gpu/command_buffer/service/shared_image/gl_ozone_image_representation.h
@@ -42,7 +42,7 @@ bool context_lost_ = false; std::unique_ptr<ui::NativePixmapGLBinding> binding_; - raw_ptr<gles2::Texture, DanglingUntriaged> texture_ = nullptr; + raw_ptr<gles2::Texture> texture_ = nullptr; scoped_refptr<gles2::TexturePassthrough> texture_passthrough_; };
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.cc b/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.cc index 583e40e6..d61c42e 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.cc +++ b/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.cc
@@ -21,9 +21,9 @@ GLTextureAndroidImageRepresentation::~GLTextureAndroidImageRepresentation() { EndAccess(); - - if (texture_) - texture_->RemoveLightweightRef(has_context()); + if (texture_) { + texture_.ExtractAsDangling()->RemoveLightweightRef(has_context()); + } } gles2::Texture* GLTextureAndroidImageRepresentation::GetTexture(
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.h b/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.h index 804f54e7..05c05b38 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.h +++ b/gpu/command_buffer/service/shared_image/gl_texture_android_image_representation.h
@@ -41,7 +41,7 @@ } gl::ScopedEGLImage egl_image_; - const raw_ptr<gles2::Texture, DanglingUntriaged> texture_; + raw_ptr<gles2::Texture> texture_; RepresentationAccessMode mode_ = RepresentationAccessMode::kNone; };
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_holder.cc b/gpu/command_buffer/service/shared_image/gl_texture_holder.cc index bf8ecde..6374a691 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_holder.cc +++ b/gpu/command_buffer/service/shared_image/gl_texture_holder.cc
@@ -110,8 +110,7 @@ } } else { if (texture_) { - texture_->RemoveLightweightRef(!context_lost_); - texture_ = nullptr; + texture_.ExtractAsDangling()->RemoveLightweightRef(!context_lost_); } } }
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_holder.h b/gpu/command_buffer/service/shared_image/gl_texture_holder.h index fe6c931cb..53a7d577 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_holder.h +++ b/gpu/command_buffer/service/shared_image/gl_texture_holder.h
@@ -79,7 +79,7 @@ bool is_passthrough_; bool context_lost_ = false; - raw_ptr<gles2::Texture, DanglingUntriaged> texture_ = nullptr; + raw_ptr<gles2::Texture> texture_ = nullptr; scoped_refptr<gles2::TexturePassthrough> passthrough_texture_; GLFormatDesc format_desc_; raw_ptr<gl::ProgressReporter> progress_reporter_ = nullptr;
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.cc b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.cc index 44facc36..26b196de 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.cc +++ b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.cc
@@ -224,7 +224,7 @@ GLenum target, bool framebuffer_attachment_angle, scoped_refptr<gles2::TexturePassthrough>* passthrough_texture, - raw_ptr<gles2::Texture, DanglingUntriaged>* texture) { + raw_ptr<gles2::Texture>* texture) { gl::GLApi* api = gl::g_current_gl_context; ScopedRestoreTexture scoped_restore(api, target);
diff --git a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.h b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.h index 1f276ba..a6ccbe4b 100644 --- a/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.h +++ b/gpu/command_buffer/service/shared_image/gl_texture_image_backing_helper.h
@@ -95,7 +95,7 @@ GLenum target, bool framebuffer_attachment_angle, scoped_refptr<gles2::TexturePassthrough>* passthrough_texture, - raw_ptr<gles2::Texture, DanglingUntriaged>* texture); + raw_ptr<gles2::Texture>* texture); // Create a Dawn backing. This will use |backing|'s ProduceGLTexture or // ProduceGLTexturePassthrough method, and populate the dawn backing via
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing.h b/gpu/command_buffer/service/shared_image/iosurface_image_backing.h index 76ac70c0c..dffbe677 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing.h +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing.h
@@ -13,6 +13,7 @@ #include "ui/gl/buildflags.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_fence.h" +#include "ui/gl/gl_surface.h" namespace gl { class ScopedEGLSurfaceIOSurface; @@ -44,6 +45,8 @@ IOSurfaceBackingEGLState( Client* client, EGLDisplay egl_display, + gl::GLContext* gl_context, + gl::GLSurface* gl_surface, GLuint gl_target, std::vector<scoped_refptr<gles2::TexturePassthrough>> gl_textures); GLenum GetGLTarget() const { return gl_target_; } @@ -69,6 +72,9 @@ // The display for this GL representation. const EGLDisplay egl_display_; + scoped_refptr<gl::GLContext> context_; + scoped_refptr<gl::GLSurface> surface_; + // The GL (not EGL) target to which this texture is to be bound. const GLuint gl_target_;
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm index fdfa9b0..da8a9db3 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing.mm
@@ -25,6 +25,7 @@ #include "ui/gl/gl_gl_api_implementation.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/scoped_binders.h" +#include "ui/gl/scoped_make_current.h" #include <EGL/egl.h> @@ -115,16 +116,21 @@ IOSurfaceBackingEGLState::IOSurfaceBackingEGLState( Client* client, EGLDisplay egl_display, + gl::GLContext* gl_context, + gl::GLSurface* gl_surface, GLuint gl_target, std::vector<scoped_refptr<gles2::TexturePassthrough>> gl_textures) : client_(client), egl_display_(egl_display), + context_(gl_context), + surface_(gl_surface), gl_target_(gl_target), gl_textures_(std::move(gl_textures)) { client_->IOSurfaceBackingEGLStateBeingCreated(this); } IOSurfaceBackingEGLState::~IOSurfaceBackingEGLState() { + ui::ScopedMakeCurrent smc(context_.get(), surface_.get()); client_->IOSurfaceBackingEGLStateBeingDestroyed(this, !context_lost_); DCHECK(gl_textures_.empty()); } @@ -629,7 +635,8 @@ scoped_refptr<IOSurfaceBackingEGLState> IOSurfaceImageBacking::RetainGLTexture() { - gl::GLDisplayEGL* display = gl::GLDisplayEGL::GetDisplayForCurrentContext(); + gl::GLContext* context = gl::GLContext::GetCurrent(); + gl::GLDisplayEGL* display = context ? context->GetGLDisplayEGL() : nullptr; if (!display) { LOG(ERROR) << "No GLDisplayEGL current."; return nullptr; @@ -653,7 +660,8 @@ gl_textures.push_back(std::move(gl_texture)); } - return new IOSurfaceBackingEGLState(this, egl_display, gl_target_, + return new IOSurfaceBackingEGLState(this, egl_display, context, + gl::GLSurface::GetCurrent(), gl_target_, std::move(gl_textures)); }
diff --git a/gpu/command_buffer/service/shared_image/shared_image_representation.cc b/gpu/command_buffer/service/shared_image/shared_image_representation.cc index fb9f02ba..a2a95d191 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_representation.cc +++ b/gpu/command_buffer/service/shared_image/shared_image_representation.cc
@@ -356,9 +356,23 @@ surface_origin, color_type, alpha_type, /*sk_color_space=*/nullptr); } -std::unique_ptr<GrBackendSurfaceMutableState> -SkiaImageRepresentation::ScopedReadAccess::TakeEndState() { - return std::move(end_state_); +bool SkiaImageRepresentation::ScopedReadAccess::HasBackendSurfaceEndState() { + return end_state_.get(); +} + +void SkiaImageRepresentation::ScopedReadAccess::ApplyBackendSurfaceEndState() { + if (!end_state_) { + return; + } + for (int plane = 0; plane < representation()->format().NumberOfPlanes(); + plane++) { + if (!representation()->gr_context()->setBackendTextureState( + promise_image_texture(plane)->backendTexture(), *end_state_)) { + LOG(ERROR) << "setBackendTextureState() failed for plane: " << plane; + return; + } + } + end_state_ = nullptr; } std::unique_ptr<SkiaImageRepresentation::ScopedReadAccess>
diff --git a/gpu/command_buffer/service/shared_image/shared_image_representation.h b/gpu/command_buffer/service/shared_image/shared_image_representation.h index 01fd346..9831e4ea 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_representation.h +++ b/gpu/command_buffer/service/shared_image/shared_image_representation.h
@@ -366,7 +366,11 @@ // multiplanar formats. sk_sp<SkImage> CreateSkImageForPlane(int plane_index, GrDirectContext* context) const; - [[nodiscard]] std::unique_ptr<GrBackendSurfaceMutableState> TakeEndState(); + // Checks if need to apply GrBackendSurfaceMutableState. + bool HasBackendSurfaceEndState(); + // Applies the GrBackendSurfaceMutableState for Vulkan layout and external + // queue transitions needed for Vulkan/GL interop. + void ApplyBackendSurfaceEndState(); private: // A vector of promise textures corresponding to the number of planes in @@ -412,6 +416,8 @@ std::vector<GrBackendSemaphore>* begin_semaphores, std::vector<GrBackendSemaphore>* end_semaphores); + GrDirectContext* gr_context() const { return gr_context_; } + virtual bool SupportsMultipleConcurrentReadAccess(); protected:
diff --git a/gpu/command_buffer/service/shared_image/shared_image_test_base.cc b/gpu/command_buffer/service/shared_image/shared_image_test_base.cc index 4363b728..72132db3 100644 --- a/gpu/command_buffer/service/shared_image/shared_image_test_base.cc +++ b/gpu/command_buffer/service/shared_image/shared_image_test_base.cc
@@ -152,7 +152,6 @@ // state then code here needs to be updated to handle them. EXPECT_TRUE(begin_semaphores.empty()); EXPECT_TRUE(end_semaphores.empty()); - EXPECT_FALSE(scoped_read_access->TakeEndState()); viz::SharedImageFormat format = skia_representation->format(); gfx::Size size = skia_representation->size(); @@ -186,6 +185,7 @@ cc::ExactPixelComparator())) << "plane_index=" << plane; } + scoped_read_access->ApplyBackendSurfaceEndState(); } } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image/test_image_backing.cc b/gpu/command_buffer/service/shared_image/test_image_backing.cc index 13cbac6..38849293 100644 --- a/gpu/command_buffer/service/shared_image/test_image_backing.cc +++ b/gpu/command_buffer/service/shared_image/test_image_backing.cc
@@ -227,7 +227,7 @@ TestImageBacking::~TestImageBacking() { // Pretend our context is lost to avoid actual cleanup in |texture_| or // |passthrough_texture_|. - texture_->RemoveLightweightRef(/*have_context=*/false); + texture_.ExtractAsDangling()->RemoveLightweightRef(/*have_context=*/false); texture_passthrough_->MarkContextLost(); texture_passthrough_.reset();
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index 6d4c904..5004a837 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -673,13 +673,7 @@ // Transition the image back to the desired end state. This is used // for transitioning the image to the external queue for Vulkan/GL // interop. - if (auto end_state = scoped_read_access->TakeEndState()) { - if (!shared_context_state_->gr_context()->setBackendTextureState( - scoped_read_access->promise_image_texture()->backendTexture(), - *end_state)) { - DLOG(ERROR) << "setBackendTextureState() failed."; - } - } + scoped_read_access->ApplyBackendSurfaceEndState(); // Signal the semaphores. SignalSemaphores(std::move(end_semaphores)); return success;
diff --git a/gpu/ipc/service/image_decode_accelerator_stub.cc b/gpu/ipc/service/image_decode_accelerator_stub.cc index e307959..e2dda199 100644 --- a/gpu/ipc/service/image_decode_accelerator_stub.cc +++ b/gpu/ipc/service/image_decode_accelerator_stub.cc
@@ -80,21 +80,9 @@ // The context should be current as we set it to be current earlier, and this // call is coming from Skia itself. DCHECK( - clean_up_context->shared_context_state->IsCurrent(nullptr /* surface */)); + clean_up_context->shared_context_state->IsCurrent(/*surface=*/nullptr)); - // Note: While we have to call TakeEndState() here by contract, we can elide - // setting the backend texture state of the GrContext to that end state. The - // latter usually needs to be called to add a layout transition for the - // underlying image (currently relevant only for VkImage), but the underlying - // image in this case is going away: this VkImage will be deleted right after - // the transition would be complete and the underlying dma-buf is going to be - // deleted at the same time (we are dropping our ref to the dma-buf here and - // Vulkan will drop the last one with the VkImage deletion). Not performing - // the layout transition layout saves some work. It might result in missing - // data in the dma-buf as caches won't be flushed, but no one was writing to - // that dma-buf and no one is going to use it at this point in any case. - std::ignore = clean_up_context->skia_scoped_access->TakeEndState(); - + clean_up_context->skia_scoped_access->ApplyBackendSurfaceEndState(); delete clean_up_context; }
diff --git a/ios/chrome/browser/passwords/BUILD.gn b/ios/chrome/browser/passwords/BUILD.gn index d8ad9ee..81209996 100644 --- a/ios/chrome/browser/passwords/BUILD.gn +++ b/ios/chrome/browser/passwords/BUILD.gn
@@ -257,9 +257,11 @@ "//components/password_manager/core/common", "//components/strings", "//ios/chrome/app/strings", + "//ios/chrome/browser/credential_provider_promo:features", "//ios/chrome/browser/signin:fake_system_identity", "//ios/chrome/browser/ui/authentication:eg_test_support+eg2", "//ios/chrome/browser/ui/infobars/banners:public", + "//ios/chrome/common/ui/confirmation_alert", "//ios/chrome/test:eg_test_support+eg2", "//ios/chrome/test/earl_grey:eg_test_support+eg2", "//ios/testing/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/passwords/password_controller_egtest.mm b/ios/chrome/browser/passwords/password_controller_egtest.mm index af4cde0..9b0e9c7 100644 --- a/ios/chrome/browser/passwords/password_controller_egtest.mm +++ b/ios/chrome/browser/passwords/password_controller_egtest.mm
@@ -11,11 +11,14 @@ #import "base/test/ios/wait_util.h" #import "components/password_manager/core/common/password_manager_features.h" #import "components/strings/grit/components_strings.h" +#import "ios/chrome/browser/credential_provider_promo/features.h" #import "ios/chrome/browser/passwords/password_manager_app_interface.h" #import "ios/chrome/browser/signin/fake_system_identity.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey.h" #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui_test_util.h" #import "ios/chrome/browser/ui/infobars/banners/infobar_banner_constants.h" +#import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h" +#import "ios/chrome/grit/ios_google_chrome_strings.h" #import "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/earl_grey/chrome_actions.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" @@ -23,6 +26,7 @@ #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/web_http_server_chrome_test_case.h" +#import "ios/testing/earl_grey/app_launch_manager.h" #import "ios/testing/earl_grey/earl_grey_test.h" #import "ios/testing/earl_grey/matchers.h" #import "net/base/mac/url_conversions.h" @@ -71,6 +75,33 @@ return [waitForKeyboard waitWithTimeout:kWaitForActionTimeout.InSecondsF()]; } +// Returns the matcher for the Credential Provider Promo's subtitle. +id<GREYMatcher> SubtitleMatcher() { + return grey_accessibilityID( + kConfirmationAlertSubtitleAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's primary action +// button. +id<GREYMatcher> PrimaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertPrimaryActionAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's secondary action +// button. +id<GREYMatcher> SecondaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertSecondaryActionAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's tertiary action +// button. +id<GREYMatcher> TertiaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertTertiaryActionAccessibilityIdentifier); +} + } // namespace @interface PasswordControllerEGTest : WebHttpServerChromeTestCase @@ -106,6 +137,15 @@ config.features_enabled.push_back( password_manager::features::kIOSShowPasswordStorageInSaveInfobar); } + if ([self isRunningTest:@selector + (testCredentialProviderPromoAppearsOnPasswordSave)]) { + config.additional_args.push_back( + std::string("--enable-features=CredentialProviderExtensionPromo:enable_" + "promo_on_password_saved/true")); + // Without relaunch, the credential provider promo meets its impression + // limit and does not display in subsequent runs. + config.relaunch_policy = ForceRelaunchByCleanShutdown; + } return config; } @@ -118,13 +158,8 @@ [ChromeEarlGrey waitForWebStateContainingText:"Login form."]; } -#pragma mark - Tests - -// Tests that save password prompt is shown on new login. -// TODO(crbug.com/1192446): Reenable this test. -- (void)DISABLED_testSavePromptAppearsOnFormSubmission { - [self loadLoginPage]; - +// Logs into a website and taps on the resultant "save password" prompt. +- (void)loginAndSavePassword { // Simulate user interacting with fields. [[EarlGrey selectElementWithMatcher:chrome_test_util::WebViewMatcher()] performAction:chrome_test_util::TapWebElementWithId(kFormUsername)]; @@ -142,6 +177,28 @@ [[EarlGrey selectElementWithMatcher:PasswordInfobarButton( IDS_IOS_PASSWORD_MANAGER_SAVE_BUTTON)] performAction:grey_tap()]; +} + +// Checks that the Credential Provider Promo subtitle text and buttons are +// interactable. +void CheckThatCredentialPromoElementsAreInteractable() { + [[EarlGrey selectElementWithMatcher:SubtitleMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:PrimaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:SecondaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:TertiaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; +} + +#pragma mark - Tests + +// Tests that save password prompt is shown on new login. +// TODO(crbug.com/1192446): Reenable this test. +- (void)DISABLED_testSavePromptAppearsOnFormSubmission { + [self loadLoginPage]; + [self loginAndSavePassword]; // Wait until the save password infobar disappears. [ChromeEarlGrey @@ -152,6 +209,33 @@ GREYAssertEqual(1, credentialsCount, @"Wrong number of stored credentials."); } +// Tests that the Credential Provider Extension Promo is shown after a password +// is saved through the Save Password prompt. +- (void)testCredentialProviderPromoAppearsOnPasswordSave { + [self loadLoginPage]; + [self loginAndSavePassword]; + + // Check that the inital promo is visible. + id<GREYMatcher> initialTitleLabelMatcher = grey_text( + l10n_util::GetNSString(IDS_IOS_CREDENTIAL_PROVIDER_PROMO_INITIAL_TITLE)); + [[EarlGrey selectElementWithMatcher:initialTitleLabelMatcher] + assertWithMatcher:grey_sufficientlyVisible()]; + CheckThatCredentialPromoElementsAreInteractable(); + + // Tap the primary action button to display the `learn more` promo. + [[EarlGrey + selectElementWithMatcher:grey_allOf(PrimaryActionButtonMatcher(), + grey_sufficientlyVisible(), nil)] + performAction:grey_tap()]; + + // Check that the `learn more` promo is visible. + id<GREYMatcher> learnMoreTitleLabelMatcher = grey_text(l10n_util::GetNSString( + IDS_IOS_CREDENTIAL_PROVIDER_PROMO_LEARN_MORE_TITLE)); + [[EarlGrey selectElementWithMatcher:learnMoreTitleLabelMatcher] + assertWithMatcher:grey_sufficientlyVisible()]; + CheckThatCredentialPromoElementsAreInteractable(); +} + - (void)testShowAccountStorageNoticeBeforeSaving { [PasswordManagerAppInterface setAccountStorageNoticeShown:NO]; FakeSystemIdentity* fakeIdentity = [FakeSystemIdentity fakeIdentity1];
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h index ae2717a..2164e22 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h +++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.h
@@ -13,6 +13,7 @@ #include <vector> #include "base/time/time.h" +#include "base/uuid.h" #include "third_party/abseil-cpp/absl/types/optional.h" class AuthenticationService; @@ -33,18 +34,51 @@ namespace bookmark_utils_ios { +// This class holds a node id and its bookmark model. +struct BookmarkNodeReference { + BookmarkNodeReference(const base::Uuid& uuid, + bookmarks::BookmarkModel* bookmark_model); + BookmarkNodeReference(const BookmarkNodeReference&); + ~BookmarkNodeReference(); + + // This operator is needed to be used `BookmarkNodeReference` in a std::set. + bool operator<(const BookmarkNodeReference reference) const; + BookmarkNodeReference& operator=(const BookmarkNodeReference& other) = delete; + + // Node id for the BookmarkNode. + const base::Uuid uuid; + // Bookmark model from the BookmarkNode. + bookmarks::BookmarkModel* bookmark_model; +}; + typedef std::vector<const bookmarks::BookmarkNode*> NodeVector; typedef std::set<const bookmarks::BookmarkNode*> NodeSet; +typedef std::set<BookmarkNodeReference> NodeReferenceSet; -// Finds bookmark nodes from passed in `ids`. The optional is only set if all -// the `ids` have been found. -absl::optional<NodeSet> FindNodesByIds(bookmarks::BookmarkModel* model, - const std::set<int64_t>& ids); +// Converts a set of BookmarkNode into a set of BookmarkNodeReference. +NodeReferenceSet FindNodeReferenceByNodes( + NodeSet nodes, + bookmarks::BookmarkModel* profile_bookmark_model, + bookmarks::BookmarkModel* account_bookmark_model); + +// Converts a BookmarkNodeReference into a BookmarkNode. This function might +// returns `nullptr` if the bookmark node doesn't exist anymore. +const bookmarks::BookmarkNode* FindNodeByNodeReference( + BookmarkNodeReference reference); + +// Converts a set of BookmarkNodeReference into a set of BookmarkNode. This +// function might return fewer BookmarkNodeReference objects than BookmarkNode +// if the nodes don't exist anymore. +NodeSet FindNodesByNodeReferences(NodeReferenceSet references); // Finds bookmark node passed in `id`, in the `model`. const bookmarks::BookmarkNode* FindNodeById(bookmarks::BookmarkModel* model, int64_t id); +// Finds bookmark node passed in `uuid`, in the `model`. +const bookmarks::BookmarkNode* FindNodeByUuid(bookmarks::BookmarkModel* model, + const base::Uuid& uuid); + // Finds bookmark node passed in `id`, in the `model`. Returns null if the // node is found but not a folder. const bookmarks::BookmarkNode* FindFolderById(bookmarks::BookmarkModel* model, @@ -127,12 +161,12 @@ bookmarks::BookmarkModel* bookmark_model, ChromeBrowserState* browser_state); -// Deletes all bookmarks in `model` that are in `bookmarks`, and returns a -// snackbar with an undo action. Returns nil if the operation wasn't successful -// or there's nothing to undo. +// Deletes all nodes in `bookmarks` from models in `bookmark_models` that are +// in `bookmarks`, and returns a snackbar with an undo action. Returns nil if +// the operation wasn't successful or there's nothing to undo. MDCSnackbarMessage* DeleteBookmarksWithUndoToast( const std::set<const bookmarks::BookmarkNode*>& bookmarks, - bookmarks::BookmarkModel* model, + const std::vector<bookmarks::BookmarkModel*> bookmark_models, ChromeBrowserState* browser_state); // Deletes all nodes in `bookmarks`.
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm index fee0eb4a..94e806ec 100644 --- a/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm +++ b/ios/chrome/browser/ui/bookmarks/bookmark_utils_ios.mm
@@ -50,27 +50,52 @@ NSString* const kBookmarksSnackbarCategory = @"BookmarksSnackbarCategory"; -absl::optional<NodeSet> FindNodesByIds(bookmarks::BookmarkModel* model, - const std::set<int64_t>& ids) { - DCHECK(model); +BookmarkNodeReference::BookmarkNodeReference( + const base::Uuid& uuid, + bookmarks::BookmarkModel* bookmark_model) + : uuid(uuid), bookmark_model(bookmark_model) {} + +BookmarkNodeReference::BookmarkNodeReference( + const BookmarkNodeReference& other) = default; + +BookmarkNodeReference::~BookmarkNodeReference() = default; + +bool BookmarkNodeReference::operator<( + const BookmarkNodeReference reference) const { + return (bookmark_model == reference.bookmark_model) + ? (uuid < reference.uuid) + : (bookmark_model < reference.bookmark_model); +} + +NodeReferenceSet FindNodeReferenceByNodes( + NodeSet nodes, + bookmarks::BookmarkModel* profile_bookmark_model, + bookmarks::BookmarkModel* account_bookmark_model) { + NodeReferenceSet references; + for (const BookmarkNode* node : nodes) { + bookmarks::BookmarkModel* model = GetBookmarkModelForNode( + node, profile_bookmark_model, account_bookmark_model); + references.insert(BookmarkNodeReference(node->uuid(), model)); + } + return references; +} + +const bookmarks::BookmarkNode* FindNodeByNodeReference( + BookmarkNodeReference reference) { + if (!reference.bookmark_model) { + return nullptr; + } + return FindNodeByUuid(reference.bookmark_model, reference.uuid); +} + +NodeSet FindNodesByNodeReferences(NodeReferenceSet references) { NodeSet nodes; - ui::TreeNodeIterator<const BookmarkNode> iterator(model->root_node()); - while (iterator.has_next()) { - const BookmarkNode* node = iterator.Next(); - if (ids.find(node->id()) == ids.end()) { - continue; - } - - nodes.insert(node); - if (ids.size() == nodes.size()) { - break; + for (BookmarkNodeReference reference : references) { + const BookmarkNode* node = FindNodeByNodeReference(reference); + if (node) { + nodes.insert(node); } } - - if (ids.size() != nodes.size()) { - return absl::nullopt; - } - return nodes; } @@ -83,7 +108,19 @@ return node; } } + return nullptr; +} +const bookmarks::BookmarkNode* FindNodeByUuid(bookmarks::BookmarkModel* model, + const base::Uuid& uuid) { + CHECK(model); + ui::TreeNodeIterator<const BookmarkNode> iterator(model->root_node()); + while (iterator.has_next()) { + const BookmarkNode* node = iterator.Next(); + if (node->uuid() == uuid) { + return node; + } + } return nullptr; } @@ -325,14 +362,15 @@ void DeleteBookmarks(const std::set<const BookmarkNode*>& bookmarks, bookmarks::BookmarkModel* model) { - DCHECK(model->loaded()); + CHECK(model && model->loaded()) << "Model: " << model; DeleteBookmarks(bookmarks, model, model->root_node()); } MDCSnackbarMessage* DeleteBookmarksWithUndoToast( const std::set<const BookmarkNode*>& nodes, - bookmarks::BookmarkModel* model, + const std::vector<bookmarks::BookmarkModel*> bookmark_models, ChromeBrowserState* browser_state) { + CHECK_GT(bookmark_models.size(), 0u); size_t node_count = nodes.size(); DCHECK_GT(node_count, 0u); @@ -341,7 +379,9 @@ // Delete the selected bookmarks. [wrapper startGroupingActions]; - bookmark_utils_ios::DeleteBookmarks(nodes, model); + for (auto* model : bookmark_models) { + bookmark_utils_ios::DeleteBookmarks(nodes, model); + } [wrapper stopGroupingActions]; [wrapper resetUndoManagerChanged];
diff --git a/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm index 475d68bc..de75ec0 100644 --- a/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/editor/bookmarks_editor_view_controller.mm
@@ -381,7 +381,7 @@ [self.snackbarCommandsHandler showSnackbarMessage:bookmark_utils_ios::DeleteBookmarksWithUndoToast( - nodes, [self.mutator bookmarkModel], + nodes, {[self.mutator bookmarkModel]}, self.browserState)]; [self.mutator setBookmark:nil]; }
diff --git a/ios/chrome/browser/ui/bookmarks/folder_editor/bookmarks_folder_editor_view_controller.mm b/ios/chrome/browser/ui/bookmarks/folder_editor/bookmarks_folder_editor_view_controller.mm index ceaa1d8..a2e1ca2 100644 --- a/ios/chrome/browser/ui/bookmarks/folder_editor/bookmarks_folder_editor_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/folder_editor/bookmarks_folder_editor_view_controller.mm
@@ -306,7 +306,7 @@ _folder, _profileBookmarkModel.get(), _accountBookmarkModel.get()); [self.snackbarCommandsHandler showSnackbarMessage:bookmark_utils_ios::DeleteBookmarksWithUndoToast( - editedNodes, modelForFolder, _browserState)]; + editedNodes, {modelForFolder}, _browserState)]; [self.delegate bookmarksFolderEditorDidDeleteEditedFolder:self]; }
diff --git a/ios/chrome/browser/ui/bookmarks/home/bookmarks_home_view_controller.mm b/ios/chrome/browser/ui/bookmarks/home/bookmarks_home_view_controller.mm index e97b7a5..c1cea83 100644 --- a/ios/chrome/browser/ui/bookmarks/home/bookmarks_home_view_controller.mm +++ b/ios/chrome/browser/ui/bookmarks/home/bookmarks_home_view_controller.mm
@@ -90,6 +90,8 @@ #error "This file requires ARC support." #endif +using bookmark_utils_ios::BookmarkNodeReference; +using bookmark_utils_ios::FindNodeReferenceByNodes; using bookmarks::BookmarkNode; using l10n_util::GetNSString; @@ -98,6 +100,7 @@ using IntegerPair = std::pair<NSInteger, NSInteger>; namespace { + typedef NS_ENUM(NSInteger, BookmarksContextBarState) { BookmarksContextBarNone, // No state. BookmarksContextBarDefault, // No selection is possible in this state. @@ -679,11 +682,12 @@ #pragma mark - Action sheet callbacks // Returns contextual menu for a bookmark node with `nodeID` at `indexPath`. -- (UIMenu*)bookmarkNodeContextualMenuWithID:(int64_t)nodeID - indexPath:(NSIndexPath*)indexPath - canEditNode:(BOOL)canEditNode { +- (UIMenu*)bookmarkNodeContextualMenuWithReference: + (BookmarkNodeReference)nodeReference + indexPath:(NSIndexPath*)indexPath + canEditNode:(BOOL)canEditNode { const BookmarkNode* bookmarkNode = [self nodeAtIndexPath:indexPath]; - DCHECK_EQ(bookmarkNode->id(), nodeID); + DCHECK_EQ(bookmarkNode, FindNodeByNodeReference(nodeReference)); DCHECK_EQ(bookmarkNode->type(), BookmarkNode::URL); GURL nodeURL = bookmarkNode->url(); // Record that this context menu was shown to the user. @@ -728,21 +732,21 @@ // Add edit menu item. UIAction* editAction = [actionFactory actionToEditWithBlock:^{ __strong __typeof(weakSelf) strongSelf = weakSelf; - [strongSelf editBookmarkNodeWithID:nodeID]; + [strongSelf editBookmarkNodeWithReference:nodeReference]; }]; [menuElements addObject:editAction]; // Add share menu item. [menuElements addObject:[actionFactory actionToShareWithBlock:^{ __strong __typeof(weakSelf) strongSelf = weakSelf; - [strongSelf shareBookmarkNodeWithID:nodeID - indexPath:indexPath]; + [strongSelf shareBookmarkNodeWithReference:nodeReference + indexPath:indexPath]; }]]; // Add delete menu item. UIAction* deleteAction = [actionFactory actionToDeleteWithBlock:^{ __strong __typeof(weakSelf) strongSelf = weakSelf; - std::set<int64_t> nodeIDs{nodeID}; - [strongSelf deleteBookmarkNodesWithIDs:nodeIDs - userAction:"MobileBookmarkManagerEntryDeleted"]; + [strongSelf + deleteBookmarkNodeWithReference:nodeReference + userAction:"MobileBookmarkManagerEntryDeleted"]; }]; [menuElements addObject:deleteAction]; // Disable Edit and Delete if the node cannot be edited. @@ -754,12 +758,13 @@ } // Returns contextual menu for a folder node with `nodeID` at `indexPath`. -- (UIMenu*)folderNodeContextualMenuWithID:(int64_t)nodeID - indexPath:(NSIndexPath*)indexPath - canEditNode:(BOOL)canEditNode { +- (UIMenu*)folderNodeContextualMenuWithReference: + (BookmarkNodeReference)nodeReference + indexPath:(NSIndexPath*)indexPath + canEditNode:(BOOL)canEditNode { const BookmarkNode* folderNode = [self nodeAtIndexPath:indexPath]; + DCHECK_EQ(folderNode, FindNodeByNodeReference(nodeReference)); DCHECK_EQ(folderNode->type(), BookmarkNode::FOLDER); - DCHECK_EQ(folderNode->id(), nodeID); // Record that this context menu was shown to the user. RecordMenuShown(MenuScenarioHistogram::kBookmarkFolder); ActionFactory* actionFactory = [[ActionFactory alloc] @@ -769,15 +774,16 @@ __weak __typeof(self) weakSelf = self; UIAction* editAction = [actionFactory actionToEditWithBlock:^{ __strong __typeof(weakSelf) strongSelf = weakSelf; - [strongSelf editFolderNodeWithID:nodeID]; + [strongSelf editFolderNodeWithReference:nodeReference]; }]; [menuElements addObject:editAction]; // Add move menu item. UIAction* moveAction = [actionFactory actionToMoveFolderWithBlock:^{ __strong __typeof(weakSelf) strongSelf = weakSelf; - std::set<int64_t> nodeIDs{nodeID}; - [strongSelf moveBookmarkNodeWithIDs:nodeIDs - userAction:"MobileBookmarkManagerMoveToFolder"]; + bookmark_utils_ios::NodeReferenceSet nodeReferences = {nodeReference}; + [strongSelf + moveBookmarkNodeWithReferences:nodeReferences + userAction:"MobileBookmarkManagerMoveToFolder"]; }]; [menuElements addObject:moveAction]; // Disable Edit and Move if the node cannot be edited. @@ -789,52 +795,55 @@ } // Opens the folder move editor for the given node IDs. -- (void)moveBookmarkNodeWithIDs:(std::set<int64_t>)nodeIDs - userAction:(const char*)userAction { +- (void)moveBookmarkNodeWithReferences: + (bookmark_utils_ios::NodeReferenceSet)nodeReferences + userAction:(const char*)userAction { DCHECK(!_folderChooserCoordinator); - DCHECK(nodeIDs.size() > 0); - absl::optional<std::set<const BookmarkNode*>> nodesFromIDs = - bookmark_utils_ios::FindNodesByIds(self.profileBookmarkModel, nodeIDs); - if (!nodesFromIDs) { + DCHECK(nodeReferences.size() > 0); + bookmark_utils_ios::NodeSet nodes = + bookmark_utils_ios::FindNodesByNodeReferences(nodeReferences); + if (nodes.size() == 0) { // While the contextual menu was opened, the nodes might have been removed. // If the nodes don't exist anymore, there nothing to do. return; } - DCHECK(nodesFromIDs->size() > 0); base::RecordAction(base::UserMetricsAction(userAction)); - const BookmarkNode* editedNode = *(nodesFromIDs->begin()); + const BookmarkNode* editedNode = *(nodes.begin()); const BookmarkNode* selectedFolder = editedNode->parent(); _folderChooserCoordinator = [[BookmarksFolderChooserCoordinator alloc] initWithBaseViewController:self.navigationController browser:_browser - hiddenNodes:*nodesFromIDs]; + hiddenNodes:nodes]; [_folderChooserCoordinator setSelectedFolder:selectedFolder]; _folderChooserCoordinator.delegate = self; [_folderChooserCoordinator start]; } // Deletes the `nodeIDs` if they still exist and records `userAction`. -- (void)deleteBookmarkNodesWithIDs:(std::set<int64_t>)nodeIDs - userAction:(const char*)userAction { - absl::optional<std::set<const BookmarkNode*>> nodesFromIDs = - bookmark_utils_ios::FindNodesByIds(self.profileBookmarkModel, nodeIDs); - if (!nodesFromIDs) { +- (void)deleteBookmarkNodeWithReference:(BookmarkNodeReference)nodeReference + userAction:(const char*)userAction { + const bookmarks::BookmarkNode* node = FindNodeByNodeReference(nodeReference); + if (!node) { // While the contextual menu was opened, the nodes might have been removed. // If the nodes don't exist anymore, there nothing to do. return; } - [self deleteBookmarkNodes:*nodesFromIDs userAction:userAction]; + bookmark_utils_ios::NodeSet nodes = {node}; + [self deleteBookmarkNodes:nodes userAction:userAction]; } // Deletes the `nodes` and records `userAction`. -- (void)deleteBookmarkNodes:(const std::set<const BookmarkNode*>&)nodes +- (void)deleteBookmarkNodes:(const bookmark_utils_ios::NodeSet&)nodes userAction:(const char*)userAction { DCHECK_GE(nodes.size(), 1u); base::RecordAction(base::UserMetricsAction(userAction)); + std::vector<bookmarks::BookmarkModel*> models = {self.profileBookmarkModel}; + if (self.accountBookmarkModel) { + models.push_back(self.accountBookmarkModel); + } [self.snackbarCommandsHandler showSnackbarMessage:bookmark_utils_ios::DeleteBookmarksWithUndoToast( - nodes, self.profileBookmarkModel, - self.browserState)]; + nodes, models, self.browserState)]; [self setTableViewEditing:NO]; } @@ -850,36 +859,36 @@ // Opens the editor for `nodeID` node, if it still exists. The node has to be // a bookmark node. -- (void)editBookmarkNodeWithID:(int64_t)nodeID { - const bookmarks::BookmarkNode* bookmarkNodeFromID = - bookmark_utils_ios::FindNodeById(self.profileBookmarkModel, nodeID); - if (!bookmarkNodeFromID) { +- (void)editBookmarkNodeWithReference:(BookmarkNodeReference)nodeReference { + const bookmarks::BookmarkNode* bookmarkNode = + bookmark_utils_ios::FindNodeByNodeReference(nodeReference); + if (!bookmarkNode) { // While the contextual menu was opened, the node might has been removed. // If the node doesn't exist anymore, there nothing to do. return; } - DCHECK_EQ(bookmarkNodeFromID->type(), BookmarkNode::URL); + DCHECK_EQ(bookmarkNode->type(), BookmarkNode::URL); base::RecordAction( base::UserMetricsAction("MobileBookmarkManagerEditBookmark")); [self ensureBookmarksCoordinator]; - [self.bookmarksCoordinator presentEditorForURLNode:bookmarkNodeFromID]; + [self.bookmarksCoordinator presentEditorForURLNode:bookmarkNode]; } // Opens the editor for `nodeID` node, if it still exists. The node has to be // a folder node. -- (void)editFolderNodeWithID:(int64_t)folderNodeID { - const bookmarks::BookmarkNode* folderNodeFromID = - bookmark_utils_ios::FindNodeById(self.profileBookmarkModel, folderNodeID); - if (!folderNodeFromID) { +- (void)editFolderNodeWithReference:(BookmarkNodeReference)nodeReference { + const bookmarks::BookmarkNode* bookmarkNode = + bookmark_utils_ios::FindNodeByNodeReference(nodeReference); + if (!bookmarkNode) { // While the contextual menu was opened, the node might has been removed. // If the node doesn't exist anymore, there nothing to do. return; } - DCHECK_EQ(folderNodeFromID->type(), BookmarkNode::FOLDER); + DCHECK_EQ(bookmarkNode->type(), BookmarkNode::FOLDER); base::RecordAction( base::UserMetricsAction("MobileBookmarkManagerEditFolder")); [self ensureBookmarksCoordinator]; - [self.bookmarksCoordinator presentEditorForFolderNode:folderNodeFromID]; + [self.bookmarksCoordinator presentEditorForFolderNode:bookmarkNode]; } - (void)openAllURLs:(std::vector<GURL>)urls @@ -1233,6 +1242,17 @@ #pragma mark - private +// Returns a bookmark node reference for `bookmarkNode`. +- (BookmarkNodeReference)bookmarkNodeReferenceWithNode: + (const bookmarks::BookmarkNode*)bookmarkNode { + bookmarks::BookmarkModel* bookmarkModel = + bookmark_utils_ios::GetBookmarkModelForNode( + bookmarkNode, self.profileBookmarkModel, self.accountBookmarkModel); + BookmarkNodeReference bookmarkNodeReference(bookmarkNode->uuid(), + bookmarkModel); + return bookmarkNodeReference; +} + - (BOOL)isDisplayingBookmarkRoot { return self.displayedFolderNode == self.profileBookmarkModel->root_node(); } @@ -1618,20 +1638,18 @@ } // Triggers the URL sharing flow for `bookmarkNodeID` node, if it still exists. -- (void)shareBookmarkNodeWithID:(int64_t)bookmarkNodeID - indexPath:(NSIndexPath*)indexPath { - const bookmarks::BookmarkNode* bookmarkNodeFromID = - bookmark_utils_ios::FindNodeById(self.profileBookmarkModel, - bookmarkNodeID); - if (!bookmarkNodeFromID) { +- (void)shareBookmarkNodeWithReference:(BookmarkNodeReference)nodeReference + indexPath:(NSIndexPath*)indexPath { + const bookmarks::BookmarkNode* bookmarkNode = + FindNodeByNodeReference(nodeReference); + if (!bookmarkNode) { // While the contextual menu was opened, the node might has been removed. // If the node doesn't exist anymore, there nothing to do. return; } - DCHECK(bookmarkNodeFromID->is_url()); - GURL bookmarkURL = bookmarkNodeFromID->url(); - NSString* title = - bookmark_utils_ios::TitleForBookmarkNode(bookmarkNodeFromID); + DCHECK(bookmarkNode->is_url()); + GURL bookmarkURL = bookmarkNode->url(); + NSString* title = bookmark_utils_ios::TitleForBookmarkNode(bookmarkNode); SharingParams* params = [[SharingParams alloc] initWithURL:bookmarkURL title:title @@ -2020,20 +2038,18 @@ style:UIAlertActionStyleDefault enabled:[self isIncognitoAvailable]]; - std::set<int64_t> nodeIds; - for (const BookmarkNode* node : nodes) { - nodeIds.insert(node->id()); - } - + bookmark_utils_ios::NodeReferenceSet nodeReferences = + FindNodeReferenceByNodes(nodes, self.profileBookmarkModel, + self.accountBookmarkModel); titleString = GetNSString(IDS_IOS_BOOKMARK_CONTEXT_MENU_MOVE); [coordinator addItemWithTitle:titleString action:^{ BookmarksHomeViewController* strongSelf = weakSelf; [strongSelf - moveBookmarkNodeWithIDs:nodeIds - userAction: - "MobileBookmarkManagerMoveToFolderBulk"]; + moveBookmarkNodeWithReferences:nodeReferences + userAction:"MobileBookmarkManagerMove" + "ToFolderBulk"]; } style:UIAlertActionStyleDefault]; } @@ -2045,7 +2061,8 @@ coordinator.alertController.view.accessibilityIdentifier = kBookmarksHomeContextMenuIdentifier; - int64_t nodeId = node->id(); + BookmarkNodeReference bookmarkNodeReference = + [self bookmarkNodeReferenceWithNode:node]; NSString* titleString = GetNSString(IDS_IOS_BOOKMARK_CONTEXT_MENU_EDIT); // Disable the edit menu option if the node is not editable by user, or if // editing bookmarks is not allowed. @@ -2055,7 +2072,8 @@ [coordinator addItemWithTitle:titleString action:^{ BookmarksHomeViewController* strongSelf = weakSelf; - [strongSelf editBookmarkNodeWithID:nodeId]; + [strongSelf editBookmarkNodeWithReference: + bookmarkNodeReference]; } style:UIAlertActionStyleDefault enabled:editEnabled]; @@ -2123,7 +2141,8 @@ coordinator.alertController.view.accessibilityIdentifier = kBookmarksHomeContextMenuIdentifier; - int64_t nodeId = node->id(); + BookmarkNodeReference bookmarkNodeReference = + [self bookmarkNodeReferenceWithNode:node]; NSString* titleString = GetNSString(IDS_IOS_BOOKMARK_CONTEXT_MENU_EDIT_FOLDER); // Disable the edit and move menu options if the folder is not editable by @@ -2134,7 +2153,8 @@ [coordinator addItemWithTitle:titleString action:^{ BookmarksHomeViewController* strongSelf = weakSelf; - [strongSelf editFolderNodeWithID:nodeId]; + [strongSelf editFolderNodeWithReference: + bookmarkNodeReference]; } style:UIAlertActionStyleDefault enabled:editEnabled]; @@ -2144,11 +2164,12 @@ addItemWithTitle:titleString action:^{ BookmarksHomeViewController* strongSelf = weakSelf; - std::set<int64_t> nodeIDs{nodeId}; + bookmark_utils_ios::NodeReferenceSet nodeReferences = { + bookmarkNodeReference}; [strongSelf - moveBookmarkNodeWithIDs:nodeIDs - userAction: - "MobileBookmarkManagerMoveToFolder"]; + moveBookmarkNodeWithReferences:nodeReferences + userAction:"MobileBookmarkManagerMove" + "ToFolder"]; } style:UIAlertActionStyleDefault enabled:editEnabled]; @@ -2161,20 +2182,18 @@ coordinator.alertController.view.accessibilityIdentifier = kBookmarksHomeContextMenuIdentifier; - std::set<int64_t> nodeIds; - for (const bookmarks::BookmarkNode* node : nodes) { - nodeIds.insert(node->id()); - } - + bookmark_utils_ios::NodeReferenceSet nodeReferences = + FindNodeReferenceByNodes(nodes, self.profileBookmarkModel, + self.accountBookmarkModel); NSString* titleString = GetNSString(IDS_IOS_BOOKMARK_CONTEXT_MENU_MOVE); [coordinator addItemWithTitle:titleString action:^{ BookmarksHomeViewController* strongSelf = weakSelf; [strongSelf - moveBookmarkNodeWithIDs:nodeIds - userAction: - "MobileBookmarkManagerMoveToFolderBulk"]; + moveBookmarkNodeWithReferences:nodeReferences + userAction:"MobileBookmarkManagerMove" + "ToFolderBulk"]; } style:UIAlertActionStyleDefault]; } @@ -2523,19 +2542,20 @@ [self isEditBookmarksEnabled] && [self isNodeEditableByUser:node]; UIContextMenuActionProvider actionProvider; - int64_t nodeId = node->id(); + BookmarkNodeReference nodeReference = + [self bookmarkNodeReferenceWithNode:node]; __weak BookmarksHomeViewController* weakSelf = self; if (node->is_url()) { actionProvider = ^(NSArray<UIMenuElement*>* suggestedActions) { - return [weakSelf bookmarkNodeContextualMenuWithID:nodeId - indexPath:indexPath - canEditNode:canEditNode]; + return [weakSelf bookmarkNodeContextualMenuWithReference:nodeReference + indexPath:indexPath + canEditNode:canEditNode]; }; } else if (node->is_folder()) { actionProvider = ^(NSArray<UIMenuElement*>* suggestedActions) { - return [weakSelf folderNodeContextualMenuWithID:nodeId - indexPath:indexPath - canEditNode:canEditNode]; + return [weakSelf folderNodeContextualMenuWithReference:nodeReference + indexPath:indexPath + canEditNode:canEditNode]; }; } return
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn b/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn index 5955cab..d207b69 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/BUILD.gn
@@ -9,6 +9,7 @@ "password_suggestion_bottom_sheet_coordinator.h", "password_suggestion_bottom_sheet_coordinator.mm", "password_suggestion_bottom_sheet_delegate.h", + "password_suggestion_bottom_sheet_handler.h", "password_suggestion_bottom_sheet_mediator.h", "password_suggestion_bottom_sheet_mediator.mm", "password_suggestion_bottom_sheet_view_controller.h",
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.h index abe5159..bbbcff6 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.h +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.h
@@ -6,6 +6,7 @@ #define IOS_CHROME_BROWSER_UI_PASSWORDS_BOTTOM_SHEET_PASSWORD_SUGGESTION_BOTTOM_SHEET_COORDINATOR_H_ #import "ios/chrome/browser/shared/coordinator/chrome_coordinator/chrome_coordinator.h" +#import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_handler.h" namespace autofill { struct FormActivityParams; @@ -15,7 +16,8 @@ // This coordinator is responsible for creating the bottom sheet's mediator and // view controller. -@interface PasswordSuggestionBottomSheetCoordinator : ChromeCoordinator +@interface PasswordSuggestionBottomSheetCoordinator + : ChromeCoordinator <PasswordSuggestionBottomSheetHandler> // `viewController` is the VC used to present the bottom sheet. // `params` comes from the form (in bottom_sheet.ts) and contains
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm index e90a8ce..e63002629 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_coordinator.mm
@@ -7,6 +7,7 @@ #import "ios/chrome/browser/browser_state/chrome_browser_state.h" #import "ios/chrome/browser/favicon/ios_chrome_favicon_loader_factory.h" #import "ios/chrome/browser/main/browser.h" +#import "ios/chrome/browser/passwords/password_controller_delegate.h" #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_mediator.h" #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h" @@ -14,7 +15,10 @@ #error "This file requires ARC support." #endif -@interface PasswordSuggestionBottomSheetCoordinator () +@interface PasswordSuggestionBottomSheetCoordinator () { + // The password controller delegate used to open the password manager. + id<PasswordControllerDelegate> _passwordControllerDelegate; +} // This mediator is used to fetch data related to the bottom sheet. @property(nonatomic, strong) PasswordSuggestionBottomSheetMediator* mediator; @@ -34,8 +38,9 @@ delegate:(id<PasswordControllerDelegate>)delegate { self = [super initWithBaseViewController:viewController browser:browser]; if (self) { - self.viewController = - [[PasswordSuggestionBottomSheetViewController alloc] init]; + _passwordControllerDelegate = delegate; + self.viewController = [[PasswordSuggestionBottomSheetViewController alloc] + initWithHandler:self]; self.mediator = [[PasswordSuggestionBottomSheetMediator alloc] initWithWebStateList:browser->GetWebStateList() faviconLoader:IOSChromeFaviconLoaderFactory::GetForBrowserState( @@ -66,4 +71,10 @@ _viewController = nil; } +#pragma mark - PasswordSuggestionBottomSheetHandler + +- (void)displayPasswordManager { + [_passwordControllerDelegate displaySavedPasswordList]; +} + @end
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_handler.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_handler.h new file mode 100644 index 0000000..e223c69 --- /dev/null +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_handler.h
@@ -0,0 +1,16 @@ +// Copyright 2023 The Chromium Authors +// 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_PASSWORDS_BOTTOM_SHEET_PASSWORD_SUGGESTION_BOTTOM_SHEET_HANDLER_H_ +#define IOS_CHROME_BROWSER_UI_PASSWORDS_BOTTOM_SHEET_PASSWORD_SUGGESTION_BOTTOM_SHEET_HANDLER_H_ + +// Handler for the passwords bottom sheet's context menu. +@protocol PasswordSuggestionBottomSheetHandler + +// Displays the password manager menu. +- (void)displayPasswordManager; + +@end + +#endif // IOS_CHROME_BROWSER_UI_PASSWORDS_BOTTOM_SHEET_PASSWORD_SUGGESTION_BOTTOM_SHEET_HANDLER_H_
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h index 533328f..fa0af7ed 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.h
@@ -9,8 +9,8 @@ #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_action_handler.h" #import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h" -@protocol PasswordControllerDelegate; @protocol PasswordSuggestionBottomSheetDelegate; +@protocol PasswordSuggestionBottomSheetHandler; // Password Bottom Sheet UI, which includes a table to display password // suggestions, a button to use a suggestion and a button to revert to using the @@ -18,8 +18,9 @@ @interface PasswordSuggestionBottomSheetViewController : ConfirmationAlertViewController <PasswordSuggestionBottomSheetConsumer> -// Initialize with the favicon loader. -- (instancetype)init; +// Initialize with the delegate used to open the password manager. +- (instancetype)initWithHandler: + (id<PasswordSuggestionBottomSheetHandler>)handler; // The delegate for the bottom sheet view controller. @property(nonatomic, strong) id<PasswordSuggestionBottomSheetDelegate> delegate;
diff --git a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm index 2b2ab9bb..995f845a 100644 --- a/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm +++ b/ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_view_controller.mm
@@ -7,12 +7,12 @@ #import "base/mac/foundation_util.h" #import "base/memory/raw_ptr.h" #import "components/autofill/ios/browser/form_suggestion.h" -#import "ios/chrome/browser/passwords/password_controller_delegate.h" #import "ios/chrome/browser/shared/ui/symbols/symbols.h" #import "ios/chrome/browser/shared/ui/table_view/cells/table_view_url_item.h" #import "ios/chrome/browser/shared/ui/table_view/chrome_table_view_controller.h" #import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" #import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_delegate.h" +#import "ios/chrome/browser/ui/passwords/bottom_sheet/password_suggestion_bottom_sheet_handler.h" #import "ios/chrome/browser/ui/settings/password/branded_navigation_item_title_view.h" #import "ios/chrome/browser/ui/settings/password/create_password_manager_title_view.h" #import "ios/chrome/common/ui/colors/semantic_color_names.h" @@ -71,15 +71,21 @@ // List of suggestions in the bottom sheet // The property is defined by PasswordSuggestionBottomSheetConsumer protocol. NSArray<FormSuggestion*>* _suggestions; + + // The password controller handler used to open the password manager. + id<PasswordSuggestionBottomSheetHandler> _handler; } @end @implementation PasswordSuggestionBottomSheetViewController -- (instancetype)init { +- (instancetype)initWithHandler: + (id<PasswordSuggestionBottomSheetHandler>)handler { self = [super init]; if (self) { + _handler = handler; + [self setUpBottomSheet]; } return self; @@ -150,6 +156,30 @@ [_tableView reloadData]; } +// Long press open context menu. +- (UIContextMenuConfiguration*)tableView:(UITableView*)tableView + contextMenuConfigurationForRowAtIndexPath:(NSIndexPath*)indexPath + point:(CGPoint)point { + __weak __typeof(self) weakSelf = self; + UIContextMenuActionProvider actionProvider = + ^(NSArray<UIMenuElement*>* suggestedActions) { + NSMutableArray<UIMenuElement*>* menuElements = + [[NSMutableArray alloc] initWithArray:suggestedActions]; + + PasswordSuggestionBottomSheetViewController* strongSelf = weakSelf; + if (strongSelf) { + [menuElements addObject:[strongSelf openPasswordManagerAction]]; + } + + return [UIMenu menuWithTitle:@"" children:menuElements]; + }; + + return + [UIContextMenuConfiguration configurationWithIdentifier:nil + previewProvider:nil + actionProvider:actionProvider]; +} + #pragma mark - UITableViewDataSource - (NSInteger)tableView:(UITableView*)tableView @@ -396,4 +426,31 @@ }]; } +// Opens the password manager settings page. +- (void)displayPasswordManager { + [_handler displayPasswordManager]; +} + +// Creates the UI action used to open the password manager. +- (UIAction*)openPasswordManagerAction { + __weak __typeof(self) weakSelf = self; + void (^passwordManagerButtonTapHandler)(UIAction*) = ^(UIAction* action) { + // Open Password Manager. + [weakSelf dismissViewControllerAnimated:NO + completion:^{ + // Send some message to open the password + // manager. + [weakSelf displayPasswordManager]; + }]; + }; + UIImage* keyIcon = + CustomSymbolWithPointSize(kPasswordSymbol, kSymbolActionPointSize); + return [UIAction + actionWithTitle:l10n_util::GetNSString( + IDS_IOS_PASSWORD_BOTTOM_SHEET_PASSWORD_MANAGER) + image:keyIcon + identifier:@"kBottomSheetPopupMenuPasswordManagerActionIdentifier" + handler:passwordManagerButtonTapHandler]; +} + @end
diff --git a/ios/chrome/browser/ui/settings/password/BUILD.gn b/ios/chrome/browser/ui/settings/password/BUILD.gn index 57307f2e..13f58e7 100644 --- a/ios/chrome/browser/ui/settings/password/BUILD.gn +++ b/ios/chrome/browser/ui/settings/password/BUILD.gn
@@ -297,6 +297,7 @@ "//ios/chrome/browser/ui/settings/password/password_details:password_details_table_view_constants", "//ios/chrome/browser/ui/settings/password/password_settings:password_settings_constants", "//ios/chrome/browser/ui/settings/password/passwords_in_other_apps:eg_test_support+eg2", + "//ios/chrome/common/ui/confirmation_alert", "//ios/chrome/common/ui/reauthentication", "//ios/chrome/common/ui/table_view:cells_constants", "//ios/chrome/test/earl_grey:eg_test_support+eg2",
diff --git a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm index 0940dcf..841021d 100644 --- a/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm +++ b/ios/chrome/browser/ui/settings/password/password_manager_egtest.mm
@@ -28,8 +28,10 @@ #import "ios/chrome/browser/ui/settings/password/passwords_in_other_apps/passwords_in_other_apps_app_interface.h" #import "ios/chrome/browser/ui/settings/password/passwords_table_view_constants.h" #import "ios/chrome/browser/ui/settings/settings_root_table_constants.h" +#import "ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h" #import "ios/chrome/common/ui/reauthentication/reauthentication_protocol.h" #import "ios/chrome/common/ui/table_view/table_view_cells_constants.h" +#import "ios/chrome/grit/ios_google_chrome_strings.h" #import "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/earl_grey/chrome_actions.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" @@ -429,6 +431,46 @@ return SettingToolbarEditDoneButton(); } +// Returns the matcher for the Credential Provider Promo's subtitle. +id<GREYMatcher> SubtitleMatcher() { + return grey_accessibilityID( + kConfirmationAlertSubtitleAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's primary action +// button. +id<GREYMatcher> PrimaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertPrimaryActionAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's secondary action +// button. +id<GREYMatcher> SecondaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertSecondaryActionAccessibilityIdentifier); +} + +// Returns the matcher for the Credential Provider Promo's tertiary action +// button. +id<GREYMatcher> TertiaryActionButtonMatcher() { + return grey_accessibilityID( + kConfirmationAlertTertiaryActionAccessibilityIdentifier); +} + +// Checks that the Credential Provider Promo subtitle text and buttons are +// interactable. +void CheckThatCredentialPromoElementsAreInteractable() { + [[EarlGrey selectElementWithMatcher:SubtitleMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:PrimaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:SecondaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; + [[EarlGrey selectElementWithMatcher:TertiaryActionButtonMatcher()] + assertWithMatcher:grey_interactable()]; +} + } // namespace // Various tests for the main Password Manager UI. @@ -556,7 +598,15 @@ [self isRunningTest:@selector(testShowHidePasswordWithNotesEnabled)]) { config.features_enabled.push_back(syncer::kPasswordNotesWithBackup); } - + if ([self isRunningTest:@selector + (testCredentialProviderPromoDisplayOnPasswordCopied)]) { + config.additional_args.push_back( + std::string("--enable-features=CredentialProviderExtensionPromo:enable_" + "promo_on_password_copied/true")); + // Without relaunch, the credential provider promo meets its impression + // limit and does not display in subsequent runs. + config.relaunch_policy = ForceRelaunchByCleanShutdown; + } return config; } @@ -632,6 +682,57 @@ performAction:grey_tap()]; } +// Checks that the Credential Provider Promo is displayed after a password is +// copied. +- (void)testCredentialProviderPromoDisplayOnPasswordCopied { + if (![self groupingEnabled]) { + EARL_GREY_TEST_SKIPPED( + @"This test isn't implemented with grouped passwords disabled."); + } + + // Saving a form is needed for using the "password details" view. + SaveExamplePasswordForm(); + + OpenPasswordManager(); + + [[self interactionForSinglePasswordEntryWithDomain:@"example.com" + username:@"concrete username"] + performAction:grey_tap()]; + + // Check the snackbar in case of successful reauthentication. + [PasswordSettingsAppInterface setUpMockReauthenticationModule]; + [PasswordSettingsAppInterface mockReauthenticationModuleExpectedResult: + ReauthenticationResult::kSuccess]; + + CopyPasswordDetailWithID(IDS_IOS_SHOW_PASSWORD_VIEW_PASSWORD); + + // Check that the inital promo is visible. + id<GREYMatcher> initialTitleLabelMatcher = grey_text( + l10n_util::GetNSString(IDS_IOS_CREDENTIAL_PROVIDER_PROMO_INITIAL_TITLE)); + [[EarlGrey selectElementWithMatcher:initialTitleLabelMatcher] + assertWithMatcher:grey_sufficientlyVisible()]; + CheckThatCredentialPromoElementsAreInteractable(); + + // Close the snackbar. + NSString* snackbarLabel = + l10n_util::GetNSString(IDS_IOS_SETTINGS_PASSWORD_WAS_COPIED_MESSAGE); + [[EarlGrey selectElementWithMatcher:grey_accessibilityLabel(snackbarLabel)] + performAction:grey_tap()]; + + // Tap the primary action button to display the `learn more` promo. + [[EarlGrey + selectElementWithMatcher:grey_allOf(PrimaryActionButtonMatcher(), + grey_sufficientlyVisible(), nil)] + performAction:grey_tap()]; + + // Check that the `learn more` promo is visible. + id<GREYMatcher> learnMoreTitleLabelMatcher = grey_text(l10n_util::GetNSString( + IDS_IOS_CREDENTIAL_PROVIDER_PROMO_LEARN_MORE_TITLE)); + [[EarlGrey selectElementWithMatcher:learnMoreTitleLabelMatcher] + assertWithMatcher:grey_sufficientlyVisible()]; + CheckThatCredentialPromoElementsAreInteractable(); +} + // Checks that an attempt to show a password provides an appropriate feedback // when reauthentication succeeds. - (void)testShowPasswordAuthSucceeded {
diff --git a/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h b/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h index 6fad834..be4f891c 100644 --- a/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h +++ b/ios/chrome/common/ui/confirmation_alert/confirmation_alert_view_controller.h
@@ -13,6 +13,7 @@ extern NSString* const kConfirmationAlertSubtitleAccessibilityIdentifier; extern NSString* const kConfirmationAlertPrimaryActionAccessibilityIdentifier; extern NSString* const kConfirmationAlertSecondaryActionAccessibilityIdentifier; +extern NSString* const kConfirmationAlertTertiaryActionAccessibilityIdentifier; @protocol ConfirmationAlertActionHandler;
diff --git a/ios/components/security_interstitials/safe_browsing/safe_browsing_service_unittest.mm b/ios/components/security_interstitials/safe_browsing/safe_browsing_service_unittest.mm index 5d027da..2b74cc5 100644 --- a/ios/components/security_interstitials/safe_browsing/safe_browsing_service_unittest.mm +++ b/ios/components/security_interstitials/safe_browsing/safe_browsing_service_unittest.mm
@@ -239,7 +239,7 @@ threat_info->set_cache_expression_using_match_type(bad_url.host() + "/"); threat_info->set_cache_expression_match_type( safe_browsing::RTLookupResponse::ThreatInfo::COVERING_MATCH); - verdict_cache_manager_->CacheRealTimeUrlVerdict(bad_url, response, + verdict_cache_manager_->CacheRealTimeUrlVerdict(response, base::Time::Now()); }
diff --git a/ios/features.gni b/ios/features.gni index 7ddf02f88..8baf3f0 100644 --- a/ios/features.gni +++ b/ios/features.gni
@@ -8,8 +8,8 @@ is_webkit_only_build = false # Control whether iOS builds with PartitionAlloc. - # Temporarily enable for rollout -- see crbug.com/1412190 for details. - ios_partition_alloc_enabled = true + # Temporarily disable for rollout -- see crbug.com/1412190 for details. + ios_partition_alloc_enabled = false # Control whether //ios/chrome and //ios/web targets are build. This # is used by bots from projects based on top of Chromium that want to
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 index dc12eb2..c5b33a5 100644 --- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -9a6aa01cad57cbacf2c3fc5149554259cf664739 \ No newline at end of file +acd14c1f40263307d48f9905fcad90caf9dc8a46 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 index 929a19c6..169076b 100644 --- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -4076941ec4df0a9e1fa66553c69deffb9b134e5c \ No newline at end of file +a2050577df7e714f2faca80224bd55a83c18e559 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 index 09e6c77..cb3c8403 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -8ddc94b3bbea7cc86653fe9a8e5608f8e26e548d \ No newline at end of file +acb274f4fa1562b8d2905745e39acd56bff956eb \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 index 745ecc2..b58e2512 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -661d1a3660da9492b65a92f4a9559dd39652b5b4 \ No newline at end of file +067c196640a741dab4cb6da2b4a0915162424df6 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 index e261605..cf4ad05 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -e437a0132cc497e59fc348c49e20d7b3b60a73c8 \ No newline at end of file +3de3704a6db153486dbc1262118ddd21fea92459 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 index 83ac396..96e8200 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -83d1c23a1bf9337aa9bf1c32524ed16929fc74db \ No newline at end of file +d77e5ef602d32b9b74b748bb63fdf22d9a0287f2 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 index feac8dd..7db03ba3 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -a029d949f7c3fbd5ee4c0c61d43c339586bad552 \ No newline at end of file +7d4fcb3e717d33571892f13db411e95c120934b8 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 index 15f00f9..9d8bc07 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -5949cff875553e48fd174777625cf08d698cbc3e \ No newline at end of file +57116b2c937a0d7e87b98122ed29232b7c9dd67c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 index 4c3d8ac..336661c 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -631cf5abf9dee7673e4cedd8cbf13137c9452eea \ No newline at end of file +3024836caaca914302dabc336c40d2a977ae4b70 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 index f92d17f..75b8ecf 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -e28c04dc8172e97e09f280f6006beb5b017d69e5 \ No newline at end of file +24e5b4482d320aaedc0fedbcd76ea86d9c226e10 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 index 940ddfd..ef91f74 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -30ce47dfb6552d4e0ca9cc029c4820f2245bca54 \ No newline at end of file +891ee0a6780f7cf9718b563292f8e967cd4243ae \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 index 3bc569b1..1bab6de 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -e147d194ecd0754dfea6480c951d1c215d167114 \ No newline at end of file +7b070dca4feb7b21c144037e51b37a0ee8576667 \ No newline at end of file
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm index 94d71b2c..1c9d500 100644 --- a/ios/web/web_state/ui/crw_web_controller.mm +++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -1855,15 +1855,6 @@ } } - // Is it ok that newURL can be restore session URL? - if (!IsRestoreSessionUrl(_documentURL) && !IsRestoreSessionUrl(newURL)) { - bool ignore_host_change = - // On iOS13 document.write() can change URL origin for about:blank page. - (_documentURL.IsAboutBlank() && !self.webView.loading); - if (!ignore_host_change) { - DCHECK_EQ(_documentURL.host(), newURL.host()); - } - } DCHECK(_documentURL != newURL); // If called during window.history.pushState or window.history.replaceState
diff --git a/media/cdm/win/test/media_foundation_clear_key_session.cc b/media/cdm/win/test/media_foundation_clear_key_session.cc index 19b6bca..a255efb 100644 --- a/media/cdm/win/test/media_foundation_clear_key_session.cc +++ b/media/cdm/win/test/media_foundation_clear_key_session.cc
@@ -266,7 +266,7 @@ for (UINT i = 0; i < key_status_count; ++i) { key_status_array[i].cbKeyId = keys_info_[i]->key_id.size(); key_status_array[i].pbKeyId = static_cast<BYTE*>( - CoTaskMemAlloc(sizeof(keys_info_[i]->key_id.size()))); + CoTaskMemAlloc(keys_info_[i]->key_id.size() * sizeof(uint8_t))); if (key_status_array[i].pbKeyId == nullptr) { return E_OUTOFMEMORY; }
diff --git a/media/gpu/v4l2/test/v4l2_ioctl_shim.cc b/media/gpu/v4l2/test/v4l2_ioctl_shim.cc index a80efe2b..bd940c1 100644 --- a/media/gpu/v4l2/test/v4l2_ioctl_shim.cc +++ b/media/gpu/v4l2/test/v4l2_ioctl_shim.cc
@@ -558,7 +558,8 @@ } void V4L2IoctlShim::SetExtCtrls(const std::unique_ptr<V4L2Queue>& queue, - v4l2_ext_controls* ext_ctrls) const { + v4l2_ext_controls* ext_ctrls, + bool immediate) const { // TODO(b/230021497): add compressed header probability related change // when V4L2_CID_STATELESS_VP9_COMPRESSED_HDR is supported @@ -568,20 +569,14 @@ // instead are applied by the driver for the buffer associated with // the same request.", see: // https://www.kernel.org/doc/html/v5.10/userspace-api/media/v4l/vidioc-g-ext-ctrls.html#description - ext_ctrls->which = V4L2_CTRL_WHICH_REQUEST_VAL; - ext_ctrls->request_fd = queue->media_request_fd(); + // Unmentioned in that documentation is that |V4L2_CTRL_WHICH_CUR_VAL| will + // force the request to be processed immediately instead of being queue. + if (immediate) { + ext_ctrls->which = V4L2_CTRL_WHICH_CUR_VAL; + } else { + ext_ctrls->which = V4L2_CTRL_WHICH_REQUEST_VAL; + } - const bool ret = Ioctl(VIDIOC_S_EXT_CTRLS, ext_ctrls); - - LOG_ASSERT(ret) << "VIDIOC_S_EXT_CTRLS failed."; -} - -void V4L2IoctlShim::SetExtCtrlsImmediate( - const std::unique_ptr<V4L2Queue>& queue, - v4l2_ext_controls* ext_ctrls) const { - // TODO(b/230021497): add compressed header probability related change - // when V4L2_CID_STATELESS_VP9_COMPRESSED_HDR is supported - ext_ctrls->which = V4L2_CTRL_WHICH_CUR_VAL; ext_ctrls->request_fd = queue->media_request_fd(); const bool ret = Ioctl(VIDIOC_S_EXT_CTRLS, ext_ctrls);
diff --git a/media/gpu/v4l2/test/v4l2_ioctl_shim.h b/media/gpu/v4l2/test/v4l2_ioctl_shim.h index a279d74..df8be9ba 100644 --- a/media/gpu/v4l2/test/v4l2_ioctl_shim.h +++ b/media/gpu/v4l2/test/v4l2_ioctl_shim.h
@@ -197,16 +197,12 @@ // Stops streaming |queue| (via VIDIOC_STREAMOFF). void StreamOff(const enum v4l2_buf_type type) const; - // Sets the value of controls which specify decoding parameters - // for each frame. + // Sets the value of controls which specify decoding parameters for each + // frame. |immediate| forces the call to be processed immediately when + // |MediaIocRequestAlloc| is next called as opposed to being put in the queue. void SetExtCtrls(const std::unique_ptr<V4L2Queue>& queue, - v4l2_ext_controls* ext_ctrls) const; - - // Sets the value of controls which specify decoding parameters - // for each frame. Submits with V4L2_CTRL_WHICH_CUR_VAL to produce an - // immediate result instead of queuing up. - void SetExtCtrlsImmediate(const std::unique_ptr<V4L2Queue>& queue, - v4l2_ext_controls* ext_ctrls) const; + v4l2_ext_controls* ext_ctrls, + bool immediate = false) const; // Allocates requests (likely one per OUTPUT buffer) via // MEDIA_IOC_REQUEST_ALLOC on the media device.
diff --git a/media/gpu/v4l2/test/video_decoder.cc b/media/gpu/v4l2/test/video_decoder.cc index 937db281..0e1d3e7 100644 --- a/media/gpu/v4l2/test/video_decoder.cc +++ b/media/gpu/v4l2/test/video_decoder.cc
@@ -10,7 +10,11 @@ #include "base/bits.h" #include "base/containers/contains.h" +#include "base/files/file.h" +#include "base/files/file_path.h" +#include "base/files/file_util.h" #include "base/logging.h" +#include "base/strings/pattern.h" #include "media/base/video_types.h" #include "media/gpu/v4l2/test/upstream_pix_fmt.h" #include "third_party/libyuv/include/libyuv.h" @@ -48,7 +52,25 @@ gfx::Size display_resolution) : needs_init(false), v4l2_ioctl_(std::move(v4l2_ioctl)), - display_resolution_(display_resolution) {} + display_resolution_(display_resolution) { + // TODO(b/278748005): Remove |cur_val_is_supported_| when all drivers + // fully support |V4L2_CTRL_WHICH_CUR_VAL| + + // On kernel version 5.4 the MTK driver for MT8192 does not correctly support + // |V4L2_CTRL_WHICH_CUR_VAL|. This parameter is used when calling + // VIDIOC_S_EXT_CTRLS to indicate that the call should be executed + // immediately instead of putting it in a queue. Making sure the first + // buffer is processed immediately is only necessary for codecs that + // support 10 bit profiles. When processing a 10 bit profile the parameters + // need to be processed before the format can be determined. There are no + // chipsets that are on kernels older 5.10 and produce 10 bit output. + constexpr base::StringPiece kKernelVersion5dot4 = "Linux version 5.4*"; + std::string kernel_version; + ReadFileToString(base::FilePath("/proc/version"), &kernel_version); + + cur_val_is_supported_ = + !base::MatchPattern(kernel_version, kKernelVersion5dot4); +} VideoDecoder::~VideoDecoder() = default;
diff --git a/media/gpu/v4l2/test/video_decoder.h b/media/gpu/v4l2/test/video_decoder.h index 0ea44e2..7fb139b 100644 --- a/media/gpu/v4l2/test/video_decoder.h +++ b/media/gpu/v4l2/test/video_decoder.h
@@ -103,6 +103,9 @@ // resolution from the bitstream header gfx::Size display_resolution_; + + // Whether V4L2_CTRL_WHICH_CUR_VAL is implemented correctly + bool cur_val_is_supported_ = true; }; } // namespace v4l2_test
diff --git a/media/gpu/v4l2/test/vp9_decoder.cc b/media/gpu/v4l2/test/vp9_decoder.cc index ad8d870..408b6ac1 100644 --- a/media/gpu/v4l2/test/vp9_decoder.cc +++ b/media/gpu/v4l2/test/vp9_decoder.cc
@@ -492,12 +492,8 @@ // dimensions and format will be ready. Specifying V4L2_CTRL_WHICH_CUR_VAL // when VIDIOC_S_EXT_CTRLS processes the request immediately so that the frame // is parsed by the driver and the state is readied. - if (isOUTPUTQueueNew) { - v4l2_ioctl_->SetExtCtrlsImmediate(OUTPUT_queue_, &ext_ctrls); - } else { - v4l2_ioctl_->SetExtCtrls(OUTPUT_queue_, &ext_ctrls); - } - + v4l2_ioctl_->SetExtCtrls(OUTPUT_queue_, &ext_ctrls, + isOUTPUTQueueNew && cur_val_is_supported_); v4l2_ioctl_->MediaRequestIocQueue(OUTPUT_queue_); if (!CAPTURE_queue_) {
diff --git a/media/mojo/services/mojo_video_encode_accelerator_provider.cc b/media/mojo/services/mojo_video_encode_accelerator_provider.cc index e250a7a4..5fbc7a5 100644 --- a/media/mojo/services/mojo_video_encode_accelerator_provider.cc +++ b/media/mojo/services/mojo_video_encode_accelerator_provider.cc
@@ -73,7 +73,8 @@ if (base::FeatureList::IsEnabled(kUseTaskRunnerForMojoVEAService)) { #if BUILDFLAG(IS_WIN) - base::ThreadPool::CreateCOMSTATaskRunner({base::MayBlock()}) + base::ThreadPool::CreateCOMSTATaskRunner({base::MayBlock()}, + base::SingleThreadTaskRunnerThreadMode::DEDICATED) #else base::ThreadPool::CreateSequencedTaskRunner({base::MayBlock()}) #endif
diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc index e17ab3c..15010a6 100644 --- a/media/test/pipeline_integration_test.cc +++ b/media/test/pipeline_integration_test.cc
@@ -52,7 +52,7 @@ #endif #define EXPECT_AUDIO_HASH(expected) \ - EXPECT_TRUE(GetAudioHash().IsEquivalent(expected, 0.04)) \ + EXPECT_TRUE(GetAudioHash().IsEquivalent(expected, 0.03)) \ << "Audio hashes differ. Expected: " << expected \ << " Actual: " << GetAudioHash().ToString() @@ -99,9 +99,6 @@ // The above hash, plus an additional playthrough starting from T=1.414s. constexpr char kOpusSmallCodecDelayHash_2[] = "0.31,0.15,-0.18,0.25,0.70,0.84,"; -// For BasicPlaybackOpusWebmHashed_MonoOutput test case. -constexpr char kOpusMonoOutputHash[] = "-2.36,-1.64,0.84,1.55,1.51,-0.90,"; - #if BUILDFLAG(USE_PROPRIETARY_CODECS) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) constexpr int k1280IsoFileDurationMs = 2736; @@ -1126,16 +1123,7 @@ EXPECT_AUDIO_HASH(kOpusEndTrimmingHash_3); } -// TODO(https://crbug.com/1434236): Test consistently failing on multiple -// builders. -#if BUILDFLAG(IS_ANDROID) -#define MAYBE_BasicPlaybackOpusWebmHashed_MonoOutput \ - DISABLED_BasicPlaybackOpusWebmHashed_MonoOutput -#else -#define MAYBE_BasicPlaybackOpusWebmHashed_MonoOutput \ - BasicPlaybackOpusWebmHashed_MonoOutput -#endif -TEST_F(PipelineIntegrationTest, MAYBE_BasicPlaybackOpusWebmHashed_MonoOutput) { +TEST_F(PipelineIntegrationTest, BasicPlaybackOpusWebmHashed_MonoOutput) { ASSERT_EQ(PIPELINE_OK, Start("bunny-opus-intensity-stereo.webm", kHashed | kMonoOutput)); @@ -1151,8 +1139,11 @@ ASSERT_TRUE(WaitUntilOnEnded()); - // Hash has very slight differences when phase inversion is enabled. - EXPECT_AUDIO_HASH(kOpusMonoOutputHash); +#if defined(OPUS_FIXED_POINT) + EXPECT_AUDIO_HASH("-2.41,-1.66,0.79,1.53,1.46,-0.91,"); +#else + EXPECT_AUDIO_HASH("-2.36,-1.64,0.84,1.55,1.51,-0.90,"); +#endif } TEST_F(PipelineIntegrationTest, BasicPlaybackOpusPrerollExceedsCodecDelay) {
diff --git a/net/base/hex_utils.cc b/net/base/hex_utils.cc index 8790eeb..2d02935 100644 --- a/net/base/hex_utils.cc +++ b/net/base/hex_utils.cc
@@ -5,7 +5,6 @@ #include "net/base/hex_utils.h" #include "base/check.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "net/third_party/quiche/src/quiche/common/quiche_text_utils.h" @@ -19,7 +18,7 @@ } std::string HexDump(base::StringPiece input) { - return quiche::QuicheTextUtils::HexDump(base::StringPieceToStringView(input)); + return quiche::QuicheTextUtils::HexDump(input); } } // namespace net
diff --git a/net/cert/asn1_util.cc b/net/cert/asn1_util.cc index 3317f91f..bcc85683 100644 --- a/net/cert/asn1_util.cc +++ b/net/cert/asn1_util.cc
@@ -190,7 +190,7 @@ der::Input subject; if (!parser.ReadRawTLV(&subject)) return false; - *subject_out = subject.AsStringPiece(); + *subject_out = subject.AsStringView(); return true; } @@ -202,7 +202,7 @@ der::Input spki; if (!parser.ReadRawTLV(&spki)) return false; - *spki_out = spki.AsStringPiece(); + *spki_out = spki.AsStringView(); return true; } @@ -231,7 +231,7 @@ der::Input spk; if (!spki_parser.ReadTag(der::kBitString, &spk)) return false; - *spk_out = spk.AsStringPiece(); + *spk_out = spk.AsStringView(); return true; } @@ -302,8 +302,8 @@ if (!certificate.ReadRawTLV(&cert_algorithm)) return false; - *cert_signature_algorithm_sequence = cert_algorithm.AsStringPiece(); - *tbs_signature_algorithm_sequence = tbs_algorithm.AsStringPiece(); + *cert_signature_algorithm_sequence = cert_algorithm.AsStringView(); + *tbs_signature_algorithm_sequence = tbs_algorithm.AsStringView(); return true; } @@ -324,7 +324,7 @@ return true; *out_extension_critical = extension.critical; - *out_contents = extension.value.AsStringPiece(); + *out_contents = extension.value.AsStringView(); return true; }
diff --git a/net/cert/cert_verify_proc.cc b/net/cert/cert_verify_proc.cc index 8f4ed6e..4e84c53 100644 --- a/net/cert/cert_verify_proc.cc +++ b/net/cert/cert_verify_proc.cc
@@ -226,10 +226,8 @@ } verify_result->revocation_status = CheckOCSP( - raw_response, std::string_view(cert_der.data(), cert_der.size()), - std::string_view(issuer_der.data(), issuer_der.size()), - base::Time::Now().ToTimeT(), kMaxRevocationLeafUpdateAge.InSeconds(), - &verify_result->response_status); + raw_response, cert_der, issuer_der, base::Time::Now().ToTimeT(), + kMaxRevocationLeafUpdateAge.InSeconds(), &verify_result->response_status); } // Records details about the most-specific trust anchor in |hashes|, which is
diff --git a/net/cert/cert_verify_proc_android.cc b/net/cert/cert_verify_proc_android.cc index ee2fef2c..8bacf58 100644 --- a/net/cert/cert_verify_proc_android.cc +++ b/net/cert/cert_verify_proc_android.cc
@@ -101,7 +101,7 @@ bool PerformAIAFetchAndAddResultToVector(scoped_refptr<CertNetFetcher> fetcher, std::string_view uri, ParsedCertificateList* cert_list) { - GURL url(base::StringPiece(uri.data(), uri.size())); + GURL url(uri); if (!url.is_valid()) return false; std::unique_ptr<CertNetFetcher::Request> request(fetcher->FetchCaIssuers(
diff --git a/net/cert/cert_verify_proc_builtin.cc b/net/cert/cert_verify_proc_builtin.cc index db678315..4720947 100644 --- a/net/cert/cert_verify_proc_builtin.cc +++ b/net/cert/cert_verify_proc_builtin.cc
@@ -87,7 +87,7 @@ base::Value::List value; for (const auto& cert : certs) { std::string pem; - X509Certificate::GetPEMEncodedFromDER(cert->der_cert().AsStringPiece(), + X509Certificate::GetPEMEncodedFromDER(cert->der_cert().AsStringView(), &pem); value.Append(std::move(pem)); } @@ -367,7 +367,7 @@ return false; SHA256HashValue root_fingerprint; - crypto::SHA256HashString(root->der_cert().AsStringPiece(), + crypto::SHA256HashString(root->der_cert().AsStringView(), root_fingerprint.data, sizeof(root_fingerprint.data)); @@ -468,7 +468,7 @@ void AppendPublicKeyHashes(const der::Input& spki_bytes, HashValueVector* hashes) { HashValue sha256(HASH_VALUE_SHA256); - crypto::SHA256HashString(spki_bytes.AsStringPiece(), sha256.data(), + crypto::SHA256HashString(spki_bytes.AsStringView(), sha256.data(), crypto::kSHA256Length); hashes->push_back(sha256); }
diff --git a/net/cert/cert_verify_proc_unittest.cc b/net/cert/cert_verify_proc_unittest.cc index cc507292..566a9a1 100644 --- a/net/cert/cert_verify_proc_unittest.cc +++ b/net/cert/cert_verify_proc_unittest.cc
@@ -1198,7 +1198,7 @@ if (!tbs_certificate.ReadTag(der::kInteger, &serial_value_der)) return false; - *serial_value = serial_value_der.AsStringPiece(); + *serial_value = serial_value_der.AsStringView(); return true; }
diff --git a/net/cert/ev_root_ca_metadata.cc b/net/cert/ev_root_ca_metadata.cc index 4d8cb0a..d109fe8 100644 --- a/net/cert/ev_root_ca_metadata.cc +++ b/net/cert/ev_root_ca_metadata.cc
@@ -69,7 +69,7 @@ } // namespace bool EVRootCAMetadata::IsEVPolicyOID(der::Input policy_oid) const { - return policy_oids_.find(policy_oid.AsStringPiece()) != policy_oids_.end(); + return policy_oids_.find(policy_oid.AsStringView()) != policy_oids_.end(); } bool EVRootCAMetadata::HasEVPolicyOID(const SHA256HashValue& fingerprint,
diff --git a/net/cert/internal/cert_issuer_source_aia.cc b/net/cert/internal/cert_issuer_source_aia.cc index 855fa44..b4cc6fb 100644 --- a/net/cert/internal/cert_issuer_source_aia.cc +++ b/net/cert/internal/cert_issuer_source_aia.cc
@@ -177,7 +177,7 @@ std::vector<GURL> urls; for (const auto& uri : cert->ca_issuers_uris()) { - GURL url(base::StringPiece(uri.data(), uri.size())); + GURL url(uri); if (url.is_valid()) { // TODO(mattm): do the kMaxFetchesPerCert check only on the number of // supported URL schemes, not all the URLs.
diff --git a/net/cert/internal/crl_getcrlstatusforcert_fuzzer.cc b/net/cert/internal/crl_getcrlstatusforcert_fuzzer.cc index 11d39439..2b55a54 100644 --- a/net/cert/internal/crl_getcrlstatusforcert_fuzzer.cc +++ b/net/cert/internal/crl_getcrlstatusforcert_fuzzer.cc
@@ -13,7 +13,7 @@ const net::der::Input input_der(data, size); const std::string data_hash = - crypto::SHA256HashString(input_der.AsStringPiece()); + crypto::SHA256HashString(input_der.AsStringView()); const net::CrlVersion crl_version = (data_hash[0] % 2) ? net::CrlVersion::V2 : net::CrlVersion::V1; const size_t serial_len = data_hash[1] % (data_hash.size() - 2);
diff --git a/net/cert/internal/revocation_checker.cc b/net/cert/internal/revocation_checker.cc index c99193c..35abe8d 100644 --- a/net/cert/internal/revocation_checker.cc +++ b/net/cert/internal/revocation_checker.cc
@@ -51,11 +51,9 @@ // Check using stapled OCSP, if available. if (!stapled_ocsp_response.empty() && issuer_cert) { OCSPVerifyResult::ResponseStatus response_details; - OCSPRevocationStatus ocsp_status = - CheckOCSP(std::string_view(stapled_ocsp_response.data(), - stapled_ocsp_response.size()), - cert, issuer_cert, base::Time::Now().ToTimeT(), - max_age.InSeconds(), &response_details); + OCSPRevocationStatus ocsp_status = CheckOCSP( + stapled_ocsp_response, cert, issuer_cert, base::Time::Now().ToTimeT(), + max_age.InSeconds(), &response_details); if (stapled_ocsp_verify_result) { stapled_ocsp_verify_result->response_status = response_details; stapled_ocsp_verify_result->revocation_status = ocsp_status; @@ -88,7 +86,7 @@ for (const auto& ocsp_uri : cert->ocsp_uris()) { // Only consider http:// URLs (https:// could create a circular // dependency). - GURL parsed_ocsp_url(base::StringPiece(ocsp_uri.data(), ocsp_uri.size())); + GURL parsed_ocsp_url(ocsp_uri); if (!parsed_ocsp_url.is_valid() || !parsed_ocsp_url.SchemeIs(url::kHttpScheme)) { continue; @@ -189,8 +187,7 @@ ->uniform_resource_identifiers) { // Only consider http:// URLs (https:// could create a circular // dependency). - GURL parsed_crl_url( - base::StringPiece(crl_uri.data(), crl_uri.size())); + GURL parsed_crl_url(crl_uri); if (!parsed_crl_url.is_valid() || !parsed_crl_url.SchemeIs(url::kHttpScheme)) { continue; @@ -354,19 +351,19 @@ // Check for revocation using the certificate's SPKI. std::string spki_hash = - crypto::SHA256HashString(cert->tbs().spki_tlv.AsStringPiece()); + crypto::SHA256HashString(cert->tbs().spki_tlv.AsStringView()); CRLSet::Result result = crl_set->CheckSPKI(spki_hash); // Check for revocation using the certificate's Subject. if (result != CRLSet::REVOKED) { - result = crl_set->CheckSubject(cert->tbs().subject_tlv.AsStringPiece(), + result = crl_set->CheckSubject(cert->tbs().subject_tlv.AsStringView(), spki_hash); } // Check for revocation using the certificate's serial number and issuer's // SPKI. if (result != CRLSet::REVOKED && !is_root) { - result = crl_set->CheckSerial(cert->tbs().serial_number.AsStringPiece(), + result = crl_set->CheckSerial(cert->tbs().serial_number.AsStringView(), issuer_spki_hash); }
diff --git a/net/cert/pki/ocsp_unittest.cc b/net/cert/pki/ocsp_unittest.cc index 8705eef..51afb4b 100644 --- a/net/cert/pki/ocsp_unittest.cc +++ b/net/cert/pki/ocsp_unittest.cc
@@ -219,7 +219,7 @@ // Try to extract the encoded data and compare against |request_data|. // // A known answer output test would be better as this just reverses the logic - // from the implementaiton file. + // from the implementation file. std::string b64 = url.spec().substr(GetParam().size() + 1); // Hex un-escape the data.
diff --git a/net/cert/trial_comparison_cert_verifier_util.cc b/net/cert/trial_comparison_cert_verifier_util.cc index 32dd6ea..96f1f71 100644 --- a/net/cert/trial_comparison_cert_verifier_util.cc +++ b/net/cert/trial_comparison_cert_verifier_util.cc
@@ -79,7 +79,7 @@ return false; SHA256HashValue root_fingerprint; - crypto::SHA256HashString(root->der_cert().AsStringPiece(), + crypto::SHA256HashString(root->der_cert().AsStringView(), root_fingerprint.data, sizeof(root_fingerprint.data));
diff --git a/net/cert/x509_certificate_unittest.cc b/net/cert/x509_certificate_unittest.cc index cbf4518f..d92c417 100644 --- a/net/cert/x509_certificate_unittest.cc +++ b/net/cert/x509_certificate_unittest.cc
@@ -620,7 +620,7 @@ base::StringPiece contents; ASSERT_TRUE(asn1::ExtractExtensionFromDERCert( x509_util::CryptoBufferAsStringPiece(cert->cert_buffer()), - der::Input(kBasicConstraintsOid).AsStringPiece(), &present, &critical, + der::Input(kBasicConstraintsOid).AsStringView(), &present, &critical, &contents)); EXPECT_TRUE(present); EXPECT_TRUE(critical); @@ -639,7 +639,7 @@ ASSERT_TRUE(uid_cert); ASSERT_TRUE(asn1::ExtractExtensionFromDERCert( x509_util::CryptoBufferAsStringPiece(uid_cert->cert_buffer()), - der::Input(kBasicConstraintsOid).AsStringPiece(), &present, &critical, + der::Input(kBasicConstraintsOid).AsStringView(), &present, &critical, &contents)); EXPECT_TRUE(present); EXPECT_FALSE(critical);
diff --git a/net/der/input.cc b/net/der/input.cc index c348799..4c734c1c 100644 --- a/net/der/input.cc +++ b/net/der/input.cc
@@ -10,22 +10,15 @@ namespace net::der { -Input::Input(base::StringPiece in) - : data_(reinterpret_cast<const uint8_t*>(in.data())), len_(in.length()) {} - Input::Input(std::string_view in) : data_(reinterpret_cast<const uint8_t*>(in.data())), len_(in.length()) {} -Input::Input(const std::string* s) : Input(base::StringPiece(*s)) {} +Input::Input(const std::string* s) : Input(std::string_view(*s)) {} std::string Input::AsString() const { return std::string(reinterpret_cast<const char*>(data_), len_); } -base::StringPiece Input::AsStringPiece() const { - return base::StringPiece(reinterpret_cast<const char*>(data_), len_); -} - std::string_view Input::AsStringView() const { return std::string_view(reinterpret_cast<const char*>(data_), len_); }
diff --git a/net/der/input.h b/net/der/input.h index 97a4f633..58b67c31 100644 --- a/net/der/input.h +++ b/net/der/input.h
@@ -11,7 +11,6 @@ #include <string> #include "base/containers/span.h" -#include "base/strings/string_piece.h" #include "net/base/net_export.h" namespace net::der { @@ -39,9 +38,6 @@ constexpr explicit Input(const uint8_t* data, size_t len) : data_(data), len_(len) {} - // Creates an Input from a base::StringPiece. - explicit Input(base::StringPiece sp); - // Creates an Input from a std::string_view explicit Input(std::string_view sp); @@ -62,11 +58,6 @@ // Returns a copy of the data represented by this object as a std::string. std::string AsString() const; - // Returns a StringPiece pointing to the same data as the Input. The resulting - // StringPiece must not outlive the data that was used to construct this - // Input. - base::StringPiece AsStringPiece() const; - // Returns a std::string_view pointing to the same data as the Input. The // resulting string_view must not outlive the data that was used to construct // this Input.
diff --git a/net/der/parse_values.cc b/net/der/parse_values.cc index d7f986e..ec6fbd8 100644 --- a/net/der/parse_values.cc +++ b/net/der/parse_values.cc
@@ -342,7 +342,7 @@ } bool ParseIA5String(Input in, std::string* out) { - for (char c : in.AsStringPiece()) { + for (char c : in.AsStringView()) { if (static_cast<uint8_t>(c) > 127) return false; } @@ -357,7 +357,7 @@ // Also ITU-T X.691 says it much more clearly: // "for VisibleString [the range] is 32 to 126 ... For VisibleString .. all // the values in the range are present." - for (char c : in.AsStringPiece()) { + for (char c : in.AsStringView()) { if (static_cast<uint8_t>(c) < 32 || static_cast<uint8_t>(c) > 126) return false; } @@ -366,7 +366,7 @@ } bool ParsePrintableString(Input in, std::string* out) { - for (char c : in.AsStringPiece()) { + for (char c : in.AsStringView()) { if (!(base::IsAsciiAlpha(c) || c == ' ' || (c >= '\'' && c <= ':') || c == '=' || c == '?')) { return false;
diff --git a/net/http/structured_headers.h b/net/http/structured_headers.h index 7a3dda9..f20b64c8 100644 --- a/net/http/structured_headers.h +++ b/net/http/structured_headers.h
@@ -7,7 +7,6 @@ #include <string> -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_piece.h" #include "net/third_party/quiche/src/quiche/common/structured_headers.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -27,29 +26,23 @@ using Parameters = quiche::structured_headers::Parameters; inline absl::optional<ParameterizedItem> ParseItem(base::StringPiece str) { - return quiche::structured_headers::ParseItem( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseItem(str); } inline absl::optional<Item> ParseBareItem(base::StringPiece str) { - return quiche::structured_headers::ParseBareItem( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseBareItem(str); } inline absl::optional<ParameterisedList> ParseParameterisedList( base::StringPiece str) { - return quiche::structured_headers::ParseParameterisedList( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseParameterisedList(str); } inline absl::optional<ListOfLists> ParseListOfLists(base::StringPiece str) { - return quiche::structured_headers::ParseListOfLists( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseListOfLists(str); } inline absl::optional<List> ParseList(base::StringPiece str) { - return quiche::structured_headers::ParseList( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseList(str); } inline absl::optional<Dictionary> ParseDictionary(base::StringPiece str) { - return quiche::structured_headers::ParseDictionary( - base::StringPieceToStringView(str)); + return quiche::structured_headers::ParseDictionary(str); } inline absl::optional<std::string> SerializeItem(const Item& value) {
diff --git a/net/quic/dedicated_web_transport_http3_client.cc b/net/quic/dedicated_web_transport_http3_client.cc index a09073e..97bc56a 100644 --- a/net/quic/dedicated_web_transport_http3_client.cc +++ b/net/quic/dedicated_web_transport_http3_client.cc
@@ -8,7 +8,6 @@ #include "base/containers/cxx20_erase.h" #include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" -#include "base/strings/abseil_string_conversions.h" #include "base/task/single_thread_task_runner.h" #include "net/base/address_list.h" #include "net/base/port_util.h" @@ -752,7 +751,7 @@ void DedicatedWebTransportHttp3Client::OnDatagramReceived( absl::string_view datagram) { - visitor_->OnDatagramReceived(base::StringViewToStringPiece(datagram)); + visitor_->OnDatagramReceived(datagram); } void DedicatedWebTransportHttp3Client::
diff --git a/net/quic/quic_chromium_client_stream.cc b/net/quic/quic_chromium_client_stream.cc index 726bc45..d37a113 100644 --- a/net/quic/quic_chromium_client_stream.cc +++ b/net/quic/quic_chromium_client_stream.cc
@@ -12,7 +12,6 @@ #include "base/memory/ptr_util.h" #include "base/memory/raw_ptr.h" #include "base/metrics/histogram_functions.h" -#include "base/strings/abseil_string_conversions.h" #include "base/task/single_thread_task_runner.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h" @@ -257,8 +256,9 @@ if (!stream_) return net_error_; - if (stream_->WriteStreamData(base::StringPieceToStringView(data), fin)) + if (stream_->WriteStreamData(data, fin)) { return HandleIOComplete(OK); + } SetCallback(std::move(callback), &write_callback_); return ERR_IO_PENDING;
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc index 7d813d0..1b9d97ca 100644 --- a/net/quic/quic_stream_factory.cc +++ b/net/quic/quic_stream_factory.cc
@@ -1396,6 +1396,8 @@ if (params_.disable_tls_zero_rtt) SetQuicFlag(quic_disable_client_tls_zero_rtt, true); InitializeMigrationOptions(); + cert_verifier_->AddObserver(this); + CertDatabase::GetInstance()->AddObserver(this); } QuicStreamFactory::~QuicStreamFactory() { @@ -1414,6 +1416,8 @@ // QuicCryptoClientConfigs were deleted, in the above lines. DCHECK(active_crypto_config_map_.empty()); + CertDatabase::GetInstance()->RemoveObserver(this); + cert_verifier_->RemoveObserver(this); if (params_.close_sessions_on_ip_change || params_.goaway_sessions_on_ip_change) { NetworkChangeNotifier::RemoveIPAddressObserver(this); @@ -1959,6 +1963,11 @@ MarkAllActiveSessionsGoingAway(kCertDBChanged); } +void QuicStreamFactory::OnCertVerifierChanged() { + // Flush sessions if the CertCerifier configuration has changed. + MarkAllActiveSessionsGoingAway(kCertVerifierChanged); +} + void QuicStreamFactory::set_is_quic_known_to_work_on_current_network( bool is_quic_known_to_work_on_current_network) { is_quic_known_to_work_on_current_network_ =
diff --git a/net/quic/quic_stream_factory.h b/net/quic/quic_stream_factory.h index 940c235..971aec5 100644 --- a/net/quic/quic_stream_factory.h +++ b/net/quic/quic_stream_factory.h
@@ -109,7 +109,8 @@ enum AllActiveSessionsGoingAwayReason { kClockSkewDetected, kIPAddressChanged, - kCertDBChanged + kCertDBChanged, + kCertVerifierChanged }; enum CreateSessionFailure { @@ -249,7 +250,8 @@ class NET_EXPORT_PRIVATE QuicStreamFactory : public NetworkChangeNotifier::IPAddressObserver, public NetworkChangeNotifier::NetworkObserver, - public CertDatabase::Observer { + public CertDatabase::Observer, + public CertVerifier::Observer { public: // This class encompasses |destination| and |server_id|. // |destination| is a HostPortPair which is resolved @@ -417,6 +419,10 @@ // We close all sessions when certificate database is changed. void OnCertDBChanged() override; + // CertVerifier::Observer: + // We close all sessions when certificate verifier settings have changed. + void OnCertVerifierChanged() override; + bool is_quic_known_to_work_on_current_network() const { return is_quic_known_to_work_on_current_network_; }
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc index 8225d77..41c97aa 100644 --- a/net/quic/quic_stream_factory_test.cc +++ b/net/quic/quic_stream_factory_test.cc
@@ -976,7 +976,7 @@ QuicTestPacketMaker client_maker_; QuicTestPacketMaker server_maker_; std::unique_ptr<HttpServerProperties> http_server_properties_; - std::unique_ptr<CertVerifier> cert_verifier_; + std::unique_ptr<MockCertVerifier> cert_verifier_; TransportSecurityState transport_security_state_; DefaultCTPolicyEnforcer ct_policy_enforcer_; std::unique_ptr<ScopedMockNetworkChangeNotifier> @@ -12035,8 +12035,80 @@ EXPECT_TRUE(stream); QuicChromiumClientSession* session = GetActiveSession(scheme_host_port_); - // Change the CA cert and verify that stream saw the event. - factory_->OnCertDBChanged(); + // Synthesize a CertDatabase change notification and verify that stream saw + // the event. + CertDatabase::GetInstance()->NotifyObserversCertDBChanged(); + base::RunLoop().RunUntilIdle(); + + EXPECT_TRUE(factory_->is_quic_known_to_work_on_current_network()); + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_FALSE(HasActiveSession(scheme_host_port_)); + + // Now attempting to request a stream to the same origin should create + // a new session. + + QuicStreamRequest request2(factory_.get()); + EXPECT_EQ(ERR_IO_PENDING, + request2.Request( + scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow, + /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false, + /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); + + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); + EXPECT_TRUE(stream2); + QuicChromiumClientSession* session2 = GetActiveSession(scheme_host_port_); + EXPECT_TRUE(HasActiveSession(scheme_host_port_)); + EXPECT_NE(session, session2); + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); + EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session2)); + + stream2.reset(); + stream.reset(); + + EXPECT_TRUE(socket_data.AllReadDataConsumed()); + EXPECT_TRUE(socket_data.AllWriteDataConsumed()); + EXPECT_TRUE(socket_data2.AllReadDataConsumed()); + EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); +} + +TEST_P(QuicStreamFactoryTest, OnCertVerifierChanged) { + Initialize(); + ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); + + MockQuicData socket_data(version_); + socket_data.AddRead(SYNCHRONOUS, ERR_IO_PENDING); + socket_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket()); + socket_data.AddSocketDataToFactory(socket_factory_.get()); + + client_maker_.Reset(); + MockQuicData socket_data2(version_); + socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING); + socket_data2.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket()); + socket_data2.AddSocketDataToFactory(socket_factory_.get()); + + QuicStreamRequest request(factory_.get()); + EXPECT_EQ(ERR_IO_PENDING, + request.Request( + scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow, + /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false, + /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); + + EXPECT_THAT(callback_.WaitForResult(), IsOk()); + std::unique_ptr<HttpStream> stream = CreateStream(&request); + EXPECT_TRUE(stream); + QuicChromiumClientSession* session = GetActiveSession(scheme_host_port_); + + // Synthesize a CertVerifier change notification and verify that stream saw + // the event. + cert_verifier_->SimulateOnCertVerifierChanged(); + base::RunLoop().RunUntilIdle(); EXPECT_TRUE(factory_->is_quic_known_to_work_on_current_network()); EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session));
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc index be021a4..5954315 100644 --- a/net/spdy/buffered_spdy_framer.cc +++ b/net/spdy/buffered_spdy_framer.cc
@@ -8,7 +8,6 @@ #include <utility> #include "base/check.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_util.h" #include "base/trace_event/memory_usage_estimator.h" @@ -211,8 +210,7 @@ spdy::SpdyStreamId stream_id, absl::string_view origin, const spdy::SpdyAltSvcWireFormat::AlternativeServiceVector& altsvc_vector) { - visitor_->OnAltSvc(stream_id, base::StringViewToStringPiece(origin), - altsvc_vector); + visitor_->OnAltSvc(stream_id, origin, altsvc_vector); } void BufferedSpdyFramer::OnContinuation(spdy::SpdyStreamId stream_id, @@ -297,7 +295,7 @@ const char* data, uint32_t len, spdy::SpdyDataFlags flags) { - spdy::SpdyDataIR data_ir(stream_id, absl::string_view(data, len)); + spdy::SpdyDataIR data_ir(stream_id, std::string_view(data, len)); data_ir.set_fin((flags & spdy::DATA_FLAG_FIN) != 0); return std::make_unique<spdy::SpdySerializedFrame>( spdy_framer_.SerializeData(data_ir));
diff --git a/net/spdy/header_coalescer.cc b/net/spdy/header_coalescer.cc index 4a1b31a..16b5b22 100644 --- a/net/spdy/header_coalescer.cc +++ b/net/spdy/header_coalescer.cc
@@ -9,7 +9,6 @@ #include <utility> #include "base/ranges/algorithm.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -52,9 +51,9 @@ void HeaderCoalescer::OnHeader(absl::string_view key, absl::string_view value) { if (error_seen_) return; - if (!AddHeader(base::StringViewToStringPiece(key), - base::StringViewToStringPiece(value))) + if (!AddHeader(key, value)) { error_seen_ = true; + } } spdy::Http2HeaderBlock HeaderCoalescer::release_headers() { @@ -122,8 +121,7 @@ } } - headers_.AppendValueOrAddHeader(base::StringPieceToStringView(key), - base::StringPieceToStringView(value)); + headers_.AppendValueOrAddHeader(key, value); return true; }
diff --git a/net/spdy/multiplexed_http_stream.cc b/net/spdy/multiplexed_http_stream.cc index 34a5bd1..7df5918 100644 --- a/net/spdy/multiplexed_http_stream.cc +++ b/net/spdy/multiplexed_http_stream.cc
@@ -7,7 +7,6 @@ #include <utility> #include "base/notreached.h" -#include "base/strings/abseil_string_conversions.h" #include "net/http/http_raw_request_headers.h" #include "net/third_party/quiche/src/quiche/spdy/core/http2_header_block.h" @@ -65,9 +64,9 @@ if (!request_headers_callback_) return; HttpRawRequestHeaders raw_headers; - for (const auto& entry : spdy_headers) - raw_headers.Add(base::StringViewToStringPiece(entry.first), - base::StringViewToStringPiece(entry.second)); + for (const auto& entry : spdy_headers) { + raw_headers.Add(entry.first, entry.second); + } request_headers_callback_.Run(std::move(raw_headers)); }
diff --git a/net/spdy/spdy_http_utils.cc b/net/spdy/spdy_http_utils.cc index 59f05037..4bb5957 100644 --- a/net/spdy/spdy_http_utils.cc +++ b/net/spdy/spdy_http_utils.cc
@@ -7,7 +7,6 @@ #include <string> #include <vector> -#include "base/strings/abseil_string_conversions.h" #include "base/strings/escape.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" @@ -48,11 +47,10 @@ if (it == headers.end()) return ERR_INCOMPLETE_HTTP2_HEADERS; - const auto status = base::StringViewToStringPiece(it->second); + const auto status = it->second; std::string raw_headers = base::StrCat({"HTTP/1.1 ", status, base::StringPiece("\0", 1)}); - for (it = headers.begin(); it != headers.end(); ++it) { - const auto name = base::StringViewToStringPiece(it->first); + for (const auto& [name, value] : headers) { DCHECK_GT(name.size(), 0u); if (name[0] == ':') { // https://tools.ietf.org/html/rfc7540#section-8.1.2.4 @@ -67,7 +65,6 @@ // becomes // Set-Cookie: foo\0 // Set-Cookie: bar\0 - const auto value = base::StringViewToStringPiece(it->second); size_t start = 0; size_t end = 0; do { @@ -167,13 +164,12 @@ const spdy::Http2HeaderBlock& spdy_headers, HttpRequestHeaders* http_headers) { for (const auto& it : spdy_headers) { - base::StringPiece key = base::StringViewToStringPiece(it.first); + base::StringPiece key = it.first; if (key[0] == ':') { key.remove_prefix(1); } - std::vector<base::StringPiece> values = - base::SplitStringPiece(base::StringViewToStringPiece(it.second), "\0", - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); + std::vector<base::StringPiece> values = base::SplitStringPiece( + it.second, "\0", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); for (const auto& value : values) { http_headers->SetHeader(key, value); }
diff --git a/net/spdy/spdy_log_util.cc b/net/spdy/spdy_log_util.cc index 15a379f..7e349ed 100644 --- a/net/spdy/spdy_log_util.cc +++ b/net/spdy/spdy_log_util.cc
@@ -6,7 +6,6 @@ #include <utility> -#include "base/strings/abseil_string_conversions.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" @@ -29,9 +28,7 @@ const spdy::Http2HeaderBlock& headers, NetLogCaptureMode capture_mode) { base::Value::List headers_list; - for (const auto& header : headers) { - base::StringPiece key = base::StringViewToStringPiece(header.first); - base::StringPiece value = base::StringViewToStringPiece(header.second); + for (const auto& [key, value] : headers) { headers_list.Append(NetLogStringValue( base::StrCat({key, ": ", ElideHeaderValueForNetLog(capture_mode, std::string(key),
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index b33a3f1..7180f157 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc
@@ -19,7 +19,6 @@ #include "base/metrics/histogram_macros.h" #include "base/rand_util.h" #include "base/ranges/algorithm.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" @@ -149,7 +148,7 @@ spdy::Http2HeaderBlock::iterator it = headers.find(kVary); if (it == headers.end()) return kNoVaryHeader; - base::StringPiece value = base::StringViewToStringPiece(it->second); + base::StringPiece value = it->second; if (value.empty()) return kVaryIsEmpty; if (value == kStar)
diff --git a/net/spdy/spdy_stream.cc b/net/spdy/spdy_stream.cc index 2d6153c..780b407 100644 --- a/net/spdy/spdy_stream.cc +++ b/net/spdy/spdy_stream.cc
@@ -15,7 +15,6 @@ #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/notreached.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "base/task/single_thread_task_runner.h" @@ -401,8 +400,7 @@ } int status; - if (!base::StringToInt(base::StringViewToStringPiece(it->second), - &status)) { + if (!base::StringToInt(it->second, &status)) { const std::string error("Cannot parse :status."); LogStreamError(ERR_HTTP2_PROTOCOL_ERROR, error); session_->ResetStream(stream_id_, ERR_HTTP2_PROTOCOL_ERROR, error);
diff --git a/net/spdy/spdy_test_util_common.cc b/net/spdy/spdy_test_util_common.cc index 573b1b57..e3a72e2 100644 --- a/net/spdy/spdy_test_util_common.cc +++ b/net/spdy/spdy_test_util_common.cc
@@ -13,7 +13,6 @@ #include "base/containers/span.h" #include "base/functional/bind.h" #include "base/notreached.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_piece.h" #include "base/strings/string_split.h" @@ -645,9 +644,8 @@ if (key[0] == ':') key = key.substr(1); for (const std::string& value : - base::SplitString(base::StringViewToStringPiece(it->second), - base::StringPiece("\0", 1), base::TRIM_WHITESPACE, - base::SPLIT_WANT_ALL)) { + base::SplitString(it->second, base::StringPiece("\0", 1), + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { reply_string += key + ": " + value + "\n"; } } @@ -955,7 +953,7 @@ int stream_id, base::StringPiece data, bool fin) { - spdy::SpdyDataIR data_ir(stream_id, base::StringPieceToStringView(data)); + spdy::SpdyDataIR data_ir(stream_id, data); data_ir.set_fin(fin); return spdy::SpdySerializedFrame( headerless_spdy_framer_.SerializeData(data_ir)); @@ -966,7 +964,7 @@ base::StringPiece data, bool fin, int padding_length) { - spdy::SpdyDataIR data_ir(stream_id, base::StringPieceToStringView(data)); + spdy::SpdyDataIR data_ir(stream_id, data); data_ir.set_fin(fin); data_ir.set_padding_len(padding_length); return spdy::SpdySerializedFrame(
diff --git a/net/test/cert_builder.cc b/net/test/cert_builder.cc index 6b4c00ee..b0c0d39 100644 --- a/net/test/cert_builder.cc +++ b/net/test/cert_builder.cc
@@ -503,7 +503,7 @@ ASSERT_TRUE(CBB_add_asn1(&aia, &access_description, CBS_ASN1_SEQUENCE)); ASSERT_TRUE( CBB_add_asn1(&access_description, &access_method, CBS_ASN1_OBJECT)); - ASSERT_TRUE(CBBAddBytes(&access_method, entry.first.AsStringPiece())); + ASSERT_TRUE(CBBAddBytes(&access_method, entry.first.AsStringView())); ASSERT_TRUE(CBB_add_asn1(&access_description, &access_location, CBS_ASN1_CONTEXT_SPECIFIC | 6)); ASSERT_TRUE(CBBAddBytes(&access_location, entry.second.spec())); @@ -673,7 +673,7 @@ for (const auto& oid : purpose_oids) { CBB purpose_cbb; ASSERT_TRUE(CBB_add_asn1(&eku, &purpose_cbb, CBS_ASN1_OBJECT)); - ASSERT_TRUE(CBBAddBytes(&purpose_cbb, oid.AsStringPiece())); + ASSERT_TRUE(CBBAddBytes(&purpose_cbb, oid.AsStringView())); ASSERT_TRUE(CBB_flush(&eku)); } SetExtension(der::Input(kExtKeyUsageOid), FinishCBB(cbb.get()));
diff --git a/net/test/embedded_test_server/http2_connection.cc b/net/test/embedded_test_server/http2_connection.cc index 9e1c701..70a4cd25 100644 --- a/net/test/embedded_test_server/http2_connection.cc +++ b/net/test/embedded_test_server/http2_connection.cc
@@ -10,7 +10,6 @@ #include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr.h" #include "base/memory/raw_ref.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/strcat.h" #include "base/strings/string_piece.h" #include "base/task/sequenced_task_runner.h" @@ -70,8 +69,7 @@ bool Send(absl::string_view frame_header, size_t payload_length) override { std::string concatenated = - base::StrCat({base::StringViewToStringPiece(frame_header), - chunks_.front().substr(0, payload_length)}); + base::StrCat({frame_header, chunks_.front().substr(0, payload_length)}); const int64_t result = connection_->OnReadyToSend(concatenated); // Write encountered error. if (result < 0) {
diff --git a/net/test/revocation_builder.cc b/net/test/revocation_builder.cc index 20aa7be..7d21479 100644 --- a/net/test/revocation_builder.cc +++ b/net/test/revocation_builder.cc
@@ -147,7 +147,7 @@ CBS_ASN1_SEQUENCE) || !CBB_add_asn1(&ocsp_response_bytes_sequence, &ocsp_response_type, CBS_ASN1_OBJECT) || - !CBBAddBytes(&ocsp_response_type, response_type.AsStringPiece()) || + !CBBAddBytes(&ocsp_response_type, response_type.AsStringView()) || !CBB_add_asn1(&ocsp_response_bytes_sequence, &ocsp_response_octet_string, CBS_ASN1_OCTETSTRING) || !CBBAddBytes(&ocsp_response_octet_string, response)) {
diff --git a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_test_output_impl.cc b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_test_output_impl.cc index a99584c..2c27dfe 100644 --- a/net/third_party/quiche/overrides/quiche_platform_impl/quiche_test_output_impl.cc +++ b/net/third_party/quiche/overrides/quiche_platform_impl/quiche_test_output_impl.cc
@@ -10,7 +10,6 @@ #include "base/environment.h" #include "base/files/file_path.h" #include "base/files/file_util.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/stringprintf.h" #include "build/build_config.h" #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_logging.h" @@ -28,8 +27,7 @@ } auto path = base::FilePath::FromUTF8Unsafe(output_dir) - .Append(base::FilePath::FromUTF8Unsafe( - base::StringViewToStringPiece(filename))); + .Append(base::FilePath::FromUTF8Unsafe(filename)); int bytes_written = base::WriteFile(path, data.data(), data.size()); if (bytes_written < 0) { @@ -55,8 +53,7 @@ } auto path = base::FilePath::FromUTF8Unsafe(output_dir) - .Append(base::FilePath::FromUTF8Unsafe( - base::StringViewToStringPiece(filename))); + .Append(base::FilePath::FromUTF8Unsafe(filename)); return base::ReadFileToString(path, data); }
diff --git a/net/tools/cert_verify_tool/verify_using_path_builder.cc b/net/tools/cert_verify_tool/verify_using_path_builder.cc index 47a80f9..e470131 100644 --- a/net/tools/cert_verify_tool/verify_using_path_builder.cc +++ b/net/tools/cert_verify_tool/verify_using_path_builder.cc
@@ -45,7 +45,7 @@ bool AddPemEncodedCert(const net::ParsedCertificate* cert, std::vector<std::string>* pem_encoded_chain) { - std::string der_cert(cert->der_cert().AsStringPiece()); + std::string der_cert(cert->der_cert().AsStringView()); std::string pem; if (!net::X509Certificate::GetPEMEncodedFromDER(der_cert, &pem)) { std::cerr << "ERROR: GetPEMEncodedFromDER failed\n"; @@ -69,7 +69,7 @@ // Returns a hex-encoded sha256 of the DER-encoding of |cert|. std::string FingerPrintParsedCertificate(const net::ParsedCertificate* cert) { - std::string hash = crypto::SHA256HashString(cert->der_cert().AsStringPiece()); + std::string hash = crypto::SHA256HashString(cert->der_cert().AsStringView()); return base::HexEncode(hash.data(), hash.size()); }
diff --git a/remoting/protocol/webrtc_transport.cc b/remoting/protocol/webrtc_transport.cc index 96dd90f..af7a514 100644 --- a/remoting/protocol/webrtc_transport.cc +++ b/remoting/protocol/webrtc_transport.cc
@@ -15,7 +15,6 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/memory/raw_ref.h" -#include "base/strings/abseil_string_conversions.h" #include "base/strings/string_number_conversions.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread_restrictions.h" @@ -256,7 +255,7 @@ // webrtc::RtcEventLogOutput interface bool IsActive() const override { return true; } bool Write(absl::string_view output) override { - event_log_data_->Write(base::StringViewToStringPiece(output)); + event_log_data_->Write(output); return true; }
diff --git a/sandbox/policy/mac/common.sb b/sandbox/policy/mac/common.sb index 93c37254..bc8bfdf 100644 --- a/sandbox/policy/mac/common.sb +++ b/sandbox/policy/mac/common.sb
@@ -203,6 +203,7 @@ ; Reads from /usr. (allow file-read-data (subpath "/usr/share/icu") + (subpath "/usr/share/locale") ) ; Access to the home directory.
diff --git a/storage/browser/file_system/file_system_operation.h b/storage/browser/file_system/file_system_operation.h index 5800540..d3d0a2bd 100644 --- a/storage/browser/file_system/file_system_operation.h +++ b/storage/browser/file_system/file_system_operation.h
@@ -356,7 +356,7 @@ // the metadata of the file itself (as well as GetMetadata does), // while in remote filesystem case the backend may want to download the file // into a temporary snapshot file and return the metadata of the - // temporary file. Or if the implementaiton already has the local cache + // temporary file. Or if the implementation already has the local cache // data for |path| it can simply return the path to the cache. virtual void CreateSnapshotFile(const FileSystemURL& path, SnapshotFileCallback callback) = 0;
diff --git a/storage/browser/file_system/file_system_operation_runner.h b/storage/browser/file_system/file_system_operation_runner.h index 6b5f918..1cb7a0b 100644 --- a/storage/browser/file_system/file_system_operation_runner.h +++ b/storage/browser/file_system/file_system_operation_runner.h
@@ -180,7 +180,7 @@ // the metadata of the file itself (as well as GetMetadata does), // while in remote filesystem case the backend may want to download the file // into a temporary snapshot file and return the metadata of the - // temporary file. Or if the implementaiton already has the local cache + // temporary file. Or if the implementation already has the local cache // data for |url| it can simply return the url to the cache. OperationID CreateSnapshotFile(const FileSystemURL& url, SnapshotFileCallback callback);
diff --git a/storage/browser/quota/quota_database.cc b/storage/browser/quota/quota_database.cc index 742de427..32177fa 100644 --- a/storage/browser/quota/quota_database.cc +++ b/storage/browser/quota/quota_database.cc
@@ -1205,6 +1205,9 @@ if (current_bucket_count >= max_bucket_count) { return base::unexpected(QuotaError::kQuotaExceeded); } + + base::UmaHistogramCounts100000("Storage.Buckets.BucketCount", + current_bucket_count + 1); } static constexpr char kSql[] =
diff --git a/styleguide/c++/c++-features.md b/styleguide/c++/c++-features.md index d67e6d8..d97464f 100644 --- a/styleguide/c++/c++-features.md +++ b/styleguide/c++/c++-features.md
@@ -1256,7 +1256,10 @@ **Notes:** *** promo [Will be allowed soon](https://crbug.com/691162); for now, use -`base::StringPiece[16]`. +`base::StringPiece[16]`, unless interfacing with third-party code, in which +case it is allowed. Note `base::StringPiece[16]` implicitly convert to and from +the corresponding STL types, so one typically does not need to write the STL +name. *** ### std::uncaught_exceptions <sup>[banned]</sup> @@ -1721,8 +1724,12 @@ **Notes:** *** promo -Banned due to only working with 8-bit characters. Keep using -`base::StringPiece` from `base/strings/`. +Originally banned due to only working with 8-bit characters. Now it is +unnecessary because, in Chromium, it is the same type as `std::string_view`. +Use `base::StringPiece` from `base/strings/`, unless interfacing with +third-party code, in which case prefer to write the type as `std::string_view`. +Note `base::StringPiece` implicitly converts to and from `std::string_view`, so +one typically does not need to write the STL name. *** ### Strings Library <sup>[banned]</sup>
diff --git a/testing/scripts/rust/exe_util.py b/testing/scripts/rust/exe_util.py index ed6fe18..32e284d54c 100644 --- a/testing/scripts/rust/exe_util.py +++ b/testing/scripts/rust/exe_util.py
@@ -5,7 +5,7 @@ """ import os -import pty +import subprocess import re # Regex for matching 7-bit and 8-bit C1 ANSI sequences. @@ -37,15 +37,7 @@ Returns: The full executable output as an UTF-8 string. """ - output_bytes = bytearray() - - def read(fd): - data = os.read(fd, 1024) - output_bytes.extend(data) - return data - - pty.spawn(args, read) - + output_bytes = subprocess.check_output(args) # Strip ANSI / terminal escapes. output_bytes = _ANSI_ESCAPE_8BIT_REGEX.sub(b'', output_bytes)
diff --git a/testing/scripts/rust/generate_bash_script_unittests.py b/testing/scripts/rust/generate_bash_script_unittests.py deleted file mode 100755 index cd0c6f4..0000000 --- a/testing/scripts/rust/generate_bash_script_unittests.py +++ /dev/null
@@ -1,63 +0,0 @@ -#!/usr/bin/env vpython3 - -# Copyright 2021 The Chromium Authors -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import os -from pyfakefs import fake_filesystem_unittest -import tempfile -import unittest - -from generate_bash_script import _parse_args -from generate_bash_script import _generate_script - - -class Tests(fake_filesystem_unittest.TestCase): - def test_parse_args(self): - raw_args = [ - '--script-path=./bin/run_foobar', '--exe-dir=.', - '--rust-test-executables=metadata.json' - ] - parsed_args = _parse_args(raw_args) - self.assertEqual('./bin/run_foobar', parsed_args.script_path) - self.assertEqual('.', parsed_args.exe_dir) - self.assertEqual('metadata.json', parsed_args.rust_test_executables) - - def test_generate_script(self): - lib_dir = os.path.dirname(__file__) - out_dir = os.path.join(lib_dir, '../../../out/rust') - args = type('', (), {})() - args.script_path = os.path.join(out_dir, 'bin/run_foo_bar') - args.exe_dir = out_dir - - # pylint: disable=unexpected-keyword-arg - with tempfile.NamedTemporaryFile(delete=False, - mode='w', - encoding='utf-8') as f: - filepath = f.name - f.write("foo\n") - f.write("bar\n") - try: - args.rust_test_executables = filepath - actual = _generate_script(args, - should_validate_if_exes_exist=False) - finally: - os.remove(filepath) - - expected = ''' -#!/bin/bash -SCRIPT_DIR=`dirname $0` -EXE_DIR="$SCRIPT_DIR/.." -LIB_DIR="$SCRIPT_DIR/../../../testing/scripts/rust" -env vpython3 "$LIB_DIR/rust_main_program.py" \\ - "--rust-test-executable=$EXE_DIR/bar" \\ - "--rust-test-executable=$EXE_DIR/foo" \\ - "$@" -'''.strip() - - self.assertEqual(expected, actual) - - -if __name__ == '__main__': - unittest.main()
diff --git a/testing/scripts/rust/generate_bash_script.py b/testing/scripts/rust/generate_script.py similarity index 75% rename from testing/scripts/rust/generate_bash_script.py rename to testing/scripts/rust/generate_script.py index e80ef3b..eb57652 100755 --- a/testing/scripts/rust/generate_bash_script.py +++ b/testing/scripts/rust/generate_script.py
@@ -19,26 +19,25 @@ 'library for running Rust unit tests with support for ' \ 'Chromium test filters, sharding, and test output.' parser = argparse.ArgumentParser(description=description) - parser.add_argument('--script-path', dest='script_path', help='Where to write the bash script.', metavar='FILEPATH', required=True) - parser.add_argument('--exe-dir', dest='exe_dir', help='Directory where the wrapped executables are', metavar='PATH', required=True) - parser.add_argument('--rust-test-executables', dest='rust_test_executables', help='File listing one or more executables to wrap. ' \ '(basenames - no .exe extension or directory)', metavar='FILEPATH', required=True) - + parser.add_argument('--make-bat', + action='store_true', + help='Generate a .bat file instead of a bash script') return parser.parse_args(args=args) @@ -72,29 +71,36 @@ def _generate_script(args, should_validate_if_exes_exist=True): - res = '#!/bin/bash\n' + THIS_DIR = os.path.abspath(os.path.dirname(__file__)) + GEN_SCRIPT_DIR = os.path.dirname(args.script_path) - script_dir = os.path.dirname(args.script_path) - res += 'SCRIPT_DIR=`dirname $0`\n' - - exe_dir = os.path.relpath(args.exe_dir, start=script_dir) + # Path from the .bat or bash script to the test exes. + exe_dir = os.path.relpath(args.exe_dir, start=GEN_SCRIPT_DIR) exe_dir = os.path.normpath(exe_dir) - res += 'EXE_DIR="$SCRIPT_DIR/{}"\n'.format(exe_dir) - generator_script_dir = os.path.dirname(__file__) - lib_dir = os.path.relpath(generator_script_dir, script_dir) - lib_dir = os.path.normpath(lib_dir) - res += 'LIB_DIR="$SCRIPT_DIR/{}"\n'.format(lib_dir) + # Path from the .bat or bash script to the python main. + main_dir = os.path.relpath(THIS_DIR, start=GEN_SCRIPT_DIR) + main_dir = os.path.normpath(main_dir) exes = _find_test_executables(args) if should_validate_if_exes_exist: _validate_if_test_executables_exist(exes) - res += 'env vpython3 "$LIB_DIR/rust_main_program.py" \\\n' - for exe in exes: - res += ' "--rust-test-executable=$EXE_DIR/{}" \\\n'.format(exe) - res += ' "$@"' - + if args.make_bat: + res = '@echo off\n' + res += f'vpython3 "%~dp0\\{main_dir}\\rust_main_program.py" ^\n' + for exe in exes: + res += f' "--rust-test-executable=%~dp0\\{exe_dir}\\{exe}" ^\n' + res += ' %*' + else: + res = '#!/bin/bash\n' + res += (f'env vpython3 ' + f'"$(dirname $0)/{main_dir}/rust_main_program.py" \\\n') + for exe in exes: + res += ( + f' ' + f'"--rust-test-executable=$(dirname $0)/{exe_dir}/{exe}" \\\n') + res += ' "$@"' return res
diff --git a/testing/scripts/rust/generate_script_unittests.py b/testing/scripts/rust/generate_script_unittests.py new file mode 100755 index 0000000..ba91e804 --- /dev/null +++ b/testing/scripts/rust/generate_script_unittests.py
@@ -0,0 +1,93 @@ +#!/usr/bin/env vpython3 + +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import os +from pyfakefs import fake_filesystem_unittest +import tempfile +import unittest + +from generate_script import _parse_args +from generate_script import _generate_script + + +class Tests(fake_filesystem_unittest.TestCase): + def test_parse_args(self): + raw_args = [ + '--script-path=./bin/run_foobar', '--exe-dir=.', + '--rust-test-executables=metadata.json' + ] + parsed_args = _parse_args(raw_args) + self.assertEqual('./bin/run_foobar', parsed_args.script_path) + self.assertEqual('.', parsed_args.exe_dir) + self.assertEqual('metadata.json', parsed_args.rust_test_executables) + + def test_generate_script(self): + lib_dir = os.path.dirname(__file__) + out_dir = os.path.join(lib_dir, '../../../out/rust') + args = type('', (), {})() + args.make_bat = False + args.script_path = os.path.join(out_dir, 'bin/run_foo_bar') + args.exe_dir = out_dir + + # pylint: disable=unexpected-keyword-arg + with tempfile.NamedTemporaryFile(delete=False, + mode='w', + encoding='utf-8') as f: + filepath = f.name + f.write("foo\n") + f.write("bar\n") + try: + args.rust_test_executables = filepath + actual = _generate_script(args, + should_validate_if_exes_exist=False) + finally: + os.remove(filepath) + + expected = ''' +#!/bin/bash +env vpython3 "$(dirname $0)/../../../testing/scripts/rust/rust_main_program.py" \\ + "--rust-test-executable=$(dirname $0)/../bar" \\ + "--rust-test-executable=$(dirname $0)/../foo" \\ + "$@" +'''.strip() + + self.assertEqual(expected, actual) + + def test_generate_bat(self): + lib_dir = os.path.dirname(__file__) + out_dir = os.path.join(lib_dir, '../../../out/rust') + args = type('', (), {})() + args.make_bat = True + args.script_path = os.path.join(out_dir, 'bin/run_foo_bar') + args.exe_dir = out_dir + + # pylint: disable=unexpected-keyword-arg + with tempfile.NamedTemporaryFile(delete=False, + mode='w', + encoding='utf-8') as f: + filepath = f.name + f.write("foo\n") + f.write("bar\n") + try: + args.rust_test_executables = filepath + actual = _generate_script(args, + should_validate_if_exes_exist=False) + finally: + os.remove(filepath) + + expected = ''' +@echo off +vpython3 "%~dp0\\../../../testing/scripts/rust\\rust_main_program.py" ^ + "--rust-test-executable=%~dp0\\..\\bar" ^ + "--rust-test-executable=%~dp0\\..\\foo" ^ + %* +'''.strip() + + self.assertEqual(expected, actual) + + +if __name__ == '__main__': + unittest.main()
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 4b55e33..b783b01 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -4724,6 +4724,27 @@ ] } ], + "EnableEncryptedReportingClientForUpload": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "EnableEncryptedReportingClientForUpload" + ] + } + ] + } + ], "EnableFallbackFontsCrashReporting": [ { "platforms": [ @@ -6173,27 +6194,6 @@ ] } ], - "HatsBluetoothRevamp": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "prob": "0.01", - "survey_cycle_length": "90", - "survey_start_date_ms": "1642608000000", - "trigger_id": "FvkCS2uJU0jBnuKU19R0UrXtnAdP" - }, - "enable_features": [ - "HappinessTrackingSystemBluetoothRevamp" - ] - } - ] - } - ], "HatsGeneralCamera": [ { "platforms": [ @@ -10723,6 +10723,26 @@ ] } ], + "ReadAnything": [ + { + "platforms": [ + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "ReadAnything", + "ReadAnythingWithScreen2x" + ] + } + ] + } + ], "ReadLaterReminderNotification": [ { "platforms": [ @@ -10903,32 +10923,6 @@ ] } ], - "ReportFCPOnlyOnSuccessfulCommit": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "fuchsia", - "linux", - "mac", - "windows", - "android_webview", - "android_weblayer" - ], - "experiments": [ - { - "name": "ReportFCPOnCommitAndDontSkip", - "enable_features": [ - "ReportFCPOnlyOnSuccessfulCommit" - ], - "disable_features": [ - "SkipCommitsIfNotSynchronizingCompositorState" - ] - } - ] - } - ], "ReportingServiceFlushPrefsOnUploadInBackground": [ { "platforms": [
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc index d7dbfff..2ae6a3f 100644 --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc
@@ -1258,10 +1258,6 @@ const base::FeatureParam<bool> kLegacyWindowsPlatform = { &kReduceUserAgentPlatformOsCpu, "legacy_windows_platform", true}; -BASE_FEATURE(kReportFCPOnlyOnSuccessfulCommit, - "ReportFCPOnlyOnSuccessfulCommit", - base::FEATURE_ENABLED_BY_DEFAULT); - // When enabled, Source Location blocking BFCache is captured // to send it to the browser. BASE_FEATURE(kRegisterJSSourceLocationBlockingBFCache,
diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h index d75295e..d4e103e 100644 --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h
@@ -578,11 +578,6 @@ BLINK_COMMON_EXPORT extern const base::FeatureParam<bool> kLegacyWindowsPlatform; -// If enabled, we only report FCP if there’s a successful commit to the -// compositor. Otherwise, FCP may be reported if first BeginMainFrame results in -// a commit failure (see crbug.com/1257607). -BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kReportFCPOnlyOnSuccessfulCommit); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( kRegisterJSSourceLocationBlockingBFCache);
diff --git a/third_party/blink/renderer/build/scripts/hasher.py b/third_party/blink/renderer/build/scripts/hasher.py index 2b356fd4..ce3e852 100644 --- a/third_party/blink/renderer/build/scripts/hasher.py +++ b/third_party/blink/renderer/build/scripts/hasher.py
@@ -15,7 +15,7 @@ # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. -# This implementaiton of SuperFastHash is based on the Python implementation +# This implementation of SuperFastHash is based on the Python implementation # by Victor Perron at <https://github.com/vperron/python-superfasthash>. # We've modified Victor's version to output hash values that match WTFString, # which involves using a specific seed and some different constants.
diff --git a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc index bf6e0cb4..d95153f 100644 --- a/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/viewport_style_resolver.cc
@@ -29,6 +29,7 @@ #include "third_party/blink/renderer/core/css/resolver/viewport_style_resolver.h" +#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom-blink.h" #include "third_party/blink/renderer/core/css/resolver/style_resolver.h" #include "third_party/blink/renderer/core/dom/document.h" @@ -73,7 +74,10 @@ // width to device-width in case Android based browsers want to simulate // desktop behavior where the default layout width comes from the window // size. - description.min_width = Length::DeviceWidth(); + if (base::FeatureList::IsEnabled( + features::kDefaultViewportIsDeviceWidth)) { + description.min_width = Length::DeviceWidth(); + } return description; } // We only want to use the device scale portion of the zoom factor, because
diff --git a/third_party/blink/renderer/core/editing/frame_selection_test.cc b/third_party/blink/renderer/core/editing/frame_selection_test.cc index af4ac99..2e652b7 100644 --- a/third_party/blink/renderer/core/editing/frame_selection_test.cc +++ b/third_party/blink/renderer/core/editing/frame_selection_test.cc
@@ -31,7 +31,6 @@ #include "third_party/blink/renderer/core/testing/dummy_page_holder.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h" -#include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h" #include "third_party/blink/renderer/platform/testing/fake_display_item_client.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" @@ -56,9 +55,6 @@ } Text* AppendTextNode(const String& data); - unsigned LayoutCount() const { - return GetDummyPageHolder().GetFrameView().LayoutCountForTesting(); - } PositionWithAffinity CaretPosition() const { return Selection().frame_caret_->CaretPosition(); @@ -158,44 +154,6 @@ EXPECT_FALSE(Selection().ComputeVisibleSelectionInDOMTree().IsNone()); } -TEST_F(FrameSelectionTest, PaintCaretShouldNotLayout) { - Text* text = AppendTextNode("Hello, World!"); - UpdateAllLifecyclePhasesForTest(); - - GetDocument().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); - GetDocument().body()->Focus(); - EXPECT_TRUE(GetDocument().body()->IsFocused()); - - Selection().SetCaretEnabled(true); - Selection().SetSelectionAndEndTyping( - SelectionInDOMTree::Builder().Collapse(Position(text, 0)).Build()); - UpdateAllLifecyclePhasesForTest(); - EXPECT_TRUE(Selection().ComputeVisibleSelectionInDOMTree().IsCaret()); - EXPECT_TRUE(Selection().ShouldPaintCaret( - *To<LayoutBlock>(GetDocument().body()->GetLayoutObject()))); - - unsigned start_count = LayoutCount(); - { - // To force layout in next updateLayout calling, widen view. - LocalFrameView& frame_view = GetDummyPageHolder().GetFrameView(); - gfx::Rect frame_rect = frame_view.FrameRect(); - frame_rect.set_width(frame_rect.width() + 1); - frame_rect.set_height(frame_rect.height() + 1); - GetDummyPageHolder().GetFrameView().SetFrameRect(frame_rect); - } - auto paint_controller = - std::make_unique<PaintController>(PaintController::kTransient); - { - GraphicsContext context(*paint_controller); - paint_controller->UpdateCurrentPaintChunkProperties( - root_paint_chunk_id_, *root_paint_property_client_, - PropertyTreeState::Root()); - Selection().PaintCaret(context, PhysicalOffset()); - } - paint_controller->CommitNewDisplayItems(); - EXPECT_EQ(start_count, LayoutCount()); -} - #define EXPECT_EQ_SELECTED_TEXT(text) \ EXPECT_EQ(text, Selection().SelectedText().Utf8())
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc index ccebc94..0842bab 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -4609,10 +4609,12 @@ String LocalFrameView::MainThreadScrollingReasonsAsText() { MainThreadScrollingReasons reasons = 0; - DCHECK(Lifecycle().GetState() >= DocumentLifecycle::kPrePaintClean); + DCHECK_GE(Lifecycle().GetState(), DocumentLifecycle::kPaintClean); const auto* properties = GetLayoutView()->FirstFragment().PaintProperties(); - if (properties && properties->Scroll()) - reasons = properties->Scroll()->GetMainThreadScrollingReasons(); + if (properties && properties->Scroll()) { + reasons = paint_artifact_compositor_->GetMainThreadScrollingReasons( + *properties->Scroll()); + } return String(cc::MainThreadScrollingReason::AsText(reasons).c_str()); }
diff --git a/third_party/blink/renderer/core/frame/viewport_data.cc b/third_party/blink/renderer/core/frame/viewport_data.cc index a2863a6..6928985 100644 --- a/third_party/blink/renderer/core/frame/viewport_data.cc +++ b/third_party/blink/renderer/core/frame/viewport_data.cc
@@ -47,8 +47,8 @@ return; viewport_description_ = viewport_description; - // Store the UA specified width to be used as the default "fallback" width. - // i.e. the width to use if the author doesn't specify a layout width. + // The UA-defined min-width is considered specifically by Android WebView + // quirks mode. if (!viewport_description.IsSpecifiedByAuthor()) viewport_default_min_width_ = viewport_description.min_width; }
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc index e97c495..a0afba4 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -3128,12 +3128,9 @@ DidNotSwapAction DidNotSwap(DidNotSwapReason reason, base::TimeTicks timestamp) override { - if (base::FeatureList::IsEnabled( - features::kReportFCPOnlyOnSuccessfulCommit)) { - if (reason != DidNotSwapReason::SWAP_FAILS && - reason != DidNotSwapReason::COMMIT_NO_UPDATE) { - return DidNotSwapAction::KEEP_ACTIVE; - } + if (reason != DidNotSwapReason::SWAP_FAILS && + reason != DidNotSwapReason::COMMIT_NO_UPDATE) { + return DidNotSwapAction::KEEP_ACTIVE; } DidNotSwapAction action = DidNotSwapAction::BREAK_PROMISE;
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_test.cc b/third_party/blink/renderer/core/frame/web_frame_widget_test.cc index 0fda913..93269e6 100644 --- a/third_party/blink/renderer/core/frame/web_frame_widget_test.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_test.cc
@@ -693,9 +693,6 @@ // a successful commit to the compositor. TEST_F(NotifySwapTimesWebFrameWidgetTest, ReportPresentationOnlyOnSuccessfulCommit) { - base::test::ScopedFeatureList feature_list; - feature_list.InitAndEnableFeature(features::kReportFCPOnlyOnSuccessfulCommit); - base::HistogramTester histograms; constexpr base::TimeDelta delta = base::Milliseconds(16); constexpr base::TimeDelta delta_from_swap_time = base::Microseconds(2);
diff --git a/third_party/blink/renderer/core/html/html_element.cc b/third_party/blink/renderer/core/html/html_element.cc index ef07cf7d..0e7bef4b 100644 --- a/third_party/blink/renderer/core/html/html_element.cc +++ b/third_party/blink/renderer/core/html/html_element.cc
@@ -1304,7 +1304,8 @@ bool HTMLElement::IsPopoverReady(PopoverTriggerAction action, ExceptionState* exception_state, - bool include_event_handler_text) const { + bool include_event_handler_text, + Document* expected_document) const { DCHECK(RuntimeEnabledFeatures::HTMLPopoverAttributeEnabled( GetDocument().GetExecutionContext())); DCHECK_NE(action, PopoverTriggerAction::kNone); @@ -1334,6 +1335,12 @@ "Invalid on disconnected popover elements."); return false; } + if (expected_document && &GetDocument() != expected_document) { + maybe_throw_exception(DOMExceptionCode::kInvalidStateError, + "Invalid when the document changes while showing or " + "hiding a popover element."); + return false; + } if (action == PopoverTriggerAction::kShow && GetPopoverData()->visibilityState() != PopoverVisibilityState::kHidden) { maybe_throw_exception(DOMExceptionCode::kInvalidStateError, @@ -1413,8 +1420,9 @@ } void HTMLElement::ShowPopoverInternal(ExceptionState* exception_state) { + auto& original_document = GetDocument(); DCHECK(RuntimeEnabledFeatures::HTMLPopoverAttributeEnabled( - GetDocument().GetExecutionContext())); + original_document.GetExecutionContext())); if (!IsPopoverReady(PopoverTriggerAction::kShow, exception_state)) { DCHECK(exception_state) << " Callers which aren't supposed to throw exceptions should not call " @@ -1436,14 +1444,15 @@ return; // The 'beforetoggle' event handler could have changed this popover, e.g. by - // changing its type, removing it from the document, or calling showPopover(). + // changing its type, removing it from the document, moving it to another + // document, or calling showPopover(). if (!IsPopoverReady(PopoverTriggerAction::kShow, exception_state, - /*include_event_handler_text=*/true)) { + /*include_event_handler_text=*/true, + &original_document)) { return; } bool should_restore_focus = false; - auto& document = GetDocument(); auto original_type = PopoverType(); if (original_type == PopoverValueType::kAuto || original_type == PopoverValueType::kHint) { @@ -1451,8 +1460,8 @@ if (original_type == PopoverValueType::kHint) { DCHECK(RuntimeEnabledFeatures::HTMLPopoverHintEnabled()); // If the new popover is popover=hint, hide other hints first. - if (document.PopoverHintShowing()) { - document.PopoverHintShowing()->HidePopoverInternal( + if (original_document.PopoverHintShowing()) { + original_document.PopoverHintShowing()->HidePopoverInternal( HidePopoverFocusBehavior::kNone, HidePopoverTransitionBehavior::kFireEventsAndWaitForTransitions, exception_state); @@ -1460,7 +1469,7 @@ // Then hide open popovers that aren't ancestors of this hint. if (ancestor) { HideAllPopoversUntil( - ancestor, document, HidePopoverFocusBehavior::kNone, + ancestor, original_document, HidePopoverFocusBehavior::kNone, HidePopoverTransitionBehavior::kFireEventsAndWaitForTransitions, HidePopoverIndependence::kHideUnrelated); } @@ -1468,14 +1477,14 @@ // If the new popover is a popover=auto, hide any popover above this in // the stack, if any. HideAllPopoversUntil( - ancestor, document, HidePopoverFocusBehavior::kNone, + ancestor, original_document, HidePopoverFocusBehavior::kNone, HidePopoverTransitionBehavior::kFireEventsAndWaitForTransitions, HidePopoverIndependence::kHideUnrelated); } // The 'beforetoggle' event handlers could have changed this popover, e.g. - // by changing its type, removing it from the document, or calling - // showPopover(). + // by changing its type, removing it from the document, moving it to + // another document, or calling showPopover(). if (PopoverType() != original_type) { if (exception_state) { exception_state->ThrowDOMException( @@ -1486,29 +1495,30 @@ return; } if (!IsPopoverReady(PopoverTriggerAction::kShow, exception_state, - /*include_event_handler_text=*/true)) { + /*include_event_handler_text=*/true, + &original_document)) { return; } // We only restore focus for popover=auto/hint, and only for the first // popover in the stack. If there's nothing showing, restore focus. - should_restore_focus = !document.TopmostPopoverOrHint(); + should_restore_focus = !original_document.TopmostPopoverOrHint(); // Add this popover to the popover stack. if (original_type == PopoverValueType::kAuto) { - auto& stack = document.PopoverStack(); + auto& stack = original_document.PopoverStack(); DCHECK(!stack.Contains(this)); stack.push_back(this); } else { DCHECK(RuntimeEnabledFeatures::HTMLPopoverHintEnabled()); - document.SetPopoverHintShowing(this); + original_document.SetPopoverHintShowing(this); } } MarkPopoverInvokersDirty(*this); GetPopoverData()->setPreviouslyFocusedElement(nullptr); - Element* originally_focused_element = document.FocusedElement(); - document.AddToTopLayer(this); + Element* originally_focused_element = original_document.FocusedElement(); + original_document.AddToTopLayer(this); // Make the popover match `:popover-open` and remove `display:none` styling: GetPopoverData()->setVisibilityState(PopoverVisibilityState::kShowing); PseudoStateChanged(CSSSelector::kPseudoPopoverOpen); @@ -1516,7 +1526,7 @@ // Force a style update. This ensures that base property values are set prior // to `:popover-open` matching, so that transitions can start on the change to // top layer. - document.UpdateStyleAndLayoutTreeForNode(this); + original_document.UpdateStyleAndLayoutTreeForNode(this); SetPopoverFocusOnShow(); @@ -1546,7 +1556,7 @@ DCHECK(!after_event->cancelable()); after_event->SetTarget(this); GetPopoverData()->setPendingToggleEventTask(PostCancellableTask( - *GetDocument().GetTaskRunner(TaskType::kDOMManipulation), FROM_HERE, + *original_document.GetTaskRunner(TaskType::kDOMManipulation), FROM_HERE, WTF::BindOnce( [](HTMLElement* element, ToggleEvent* event) { DCHECK(element);
diff --git a/third_party/blink/renderer/core/html/html_element.h b/third_party/blink/renderer/core/html/html_element.h index b4d8d19..bde78de 100644 --- a/third_party/blink/renderer/core/html/html_element.h +++ b/third_party/blink/renderer/core/html/html_element.h
@@ -224,9 +224,17 @@ void setPopover(const AtomicString& value); PopoverValueType PopoverType() const; bool popoverOpen() const; + // IsPopoverReady returns true if the popover is in a state where it can be + // either shown or hidden based on |action|. If exception_state is set, then + // it will throw an exception if the state is not ready to transition to the + // state in |action|. |include_event_handler_text| adds some additional text + // to the exception if an exception is thrown. When |expected_document| is + // set, it will be compared to the current document and return false if they + // do not match. bool IsPopoverReady(PopoverTriggerAction action, ExceptionState* exception_state, - bool include_event_handler_text = false) const; + bool include_event_handler_text = false, + Document* expected_document = nullptr) const; void togglePopover(ExceptionState& exception_state); void togglePopover(bool force, ExceptionState& exception_state); void showPopover(ExceptionState& exception_state);
diff --git a/third_party/blink/renderer/core/input/scroll_manager.cc b/third_party/blink/renderer/core/input/scroll_manager.cc index 598c56a..337aede0 100644 --- a/third_party/blink/renderer/core/input/scroll_manager.cc +++ b/third_party/blink/renderer/core/input/scroll_manager.cc
@@ -34,6 +34,7 @@ #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" #include "third_party/blink/renderer/core/scroll/scroll_animator_base.h" #include "third_party/blink/renderer/core/scroll/scroll_customization.h" +#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" #include "third_party/blink/renderer/platform/widget/input/input_metrics.h" @@ -481,11 +482,13 @@ if (!scrollable_area || !scrollable_area->ScrollsOverflow()) continue; - // TODO(bokan): This DCHECK is occasionally tripped. See crbug.com/944706. - // DCHECK(!scrollable_area->UsesCompositedScrolling() || - // !scrollable_area->GetNonCompositedMainThreadScrollingReasons()); - non_composited_main_thread_scrolling_reasons |= - scrollable_area->GetNonCompositedMainThreadScrollingReasons(); + if (auto* compositor = + cur_box->GetFrameView()->GetPaintArtifactCompositor()) { + non_composited_main_thread_scrolling_reasons |= + (compositor->GetMainThreadScrollingReasons( + *cur_box->FirstFragment().PaintProperties()->Scroll()) & + cc::MainThreadScrollingReason::kNonCompositedReasons); + } } return non_composited_main_thread_scrolling_reasons; }
diff --git a/third_party/blink/renderer/core/layout/build.gni b/third_party/blink/renderer/core/layout/build.gni index 8f31afe..3e342b8 100644 --- a/third_party/blink/renderer/core/layout/build.gni +++ b/third_party/blink/renderer/core/layout/build.gni
@@ -565,8 +565,6 @@ "shapes/shape_outside_info.h", "style_retain_scope.cc", "style_retain_scope.h", - "subtree_layout_scope.cc", - "subtree_layout_scope.h", "svg/layout_svg_block.cc", "svg/layout_svg_block.h", "svg/layout_svg_container.cc",
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index b8f3389..50a6f62 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -461,7 +461,6 @@ // TODO(rego): We should store these based on physical direction. has_override_containing_block_content_logical_width_(false), has_override_containing_block_content_logical_height_(false), - has_override_percentage_resolution_block_size_(false), has_previous_content_box_rect_(false), snap_container_(nullptr) {} @@ -508,7 +507,6 @@ NOT_DESTROYED(); ClearOverrideSize(); ClearOverrideContainingBlockContentSize(); - ClearOverridePercentageResolutionBlockSize(); if (IsOutOfFlowPositioned()) LayoutBlock::RemovePositionedObject(this); @@ -2201,42 +2199,6 @@ .ClampNegativeToZero(); } -LayoutUnit LayoutBox::OverrideContainingBlockContentWidth() const { - NOT_DESTROYED(); - DCHECK(HasOverrideContainingBlockContentWidth()); - return ContainingBlock()->StyleRef().IsHorizontalWritingMode() - ? OverrideContainingBlockContentLogicalWidth() - : OverrideContainingBlockContentLogicalHeight(); -} - -LayoutUnit LayoutBox::OverrideContainingBlockContentHeight() const { - NOT_DESTROYED(); - DCHECK(HasOverrideContainingBlockContentHeight()); - return ContainingBlock()->StyleRef().IsHorizontalWritingMode() - ? OverrideContainingBlockContentLogicalHeight() - : OverrideContainingBlockContentLogicalWidth(); -} - -bool LayoutBox::HasOverrideContainingBlockContentWidth() const { - NOT_DESTROYED(); - if (!ContainingBlock()) - return false; - - return ContainingBlock()->StyleRef().IsHorizontalWritingMode() - ? HasOverrideContainingBlockContentLogicalWidth() - : HasOverrideContainingBlockContentLogicalHeight(); -} - -bool LayoutBox::HasOverrideContainingBlockContentHeight() const { - NOT_DESTROYED(); - if (!ContainingBlock()) - return false; - - return ContainingBlock()->StyleRef().IsHorizontalWritingMode() - ? HasOverrideContainingBlockContentLogicalHeight() - : HasOverrideContainingBlockContentLogicalWidth(); -} - // TODO (lajava) Shouldn't we implement these functions based on physical // direction ?. LayoutUnit LayoutBox::OverrideContainingBlockContentLogicalWidth() const { @@ -2313,34 +2275,6 @@ false; } -LayoutUnit LayoutBox::OverridePercentageResolutionBlockSize() const { - NOT_DESTROYED(); - DCHECK(HasOverridePercentageResolutionBlockSize()); - return rare_data_->override_percentage_resolution_block_size_; -} - -bool LayoutBox::HasOverridePercentageResolutionBlockSize() const { - NOT_DESTROYED(); - return rare_data_ && - rare_data_->has_override_percentage_resolution_block_size_; -} - -void LayoutBox::SetOverridePercentageResolutionBlockSize( - LayoutUnit logical_height) { - NOT_DESTROYED(); - DCHECK_GE(logical_height, LayoutUnit(-1)); - auto& rare_data = EnsureRareData(); - rare_data.override_percentage_resolution_block_size_ = logical_height; - rare_data.has_override_percentage_resolution_block_size_ = true; -} - -void LayoutBox::ClearOverridePercentageResolutionBlockSize() { - NOT_DESTROYED(); - if (!rare_data_) - return; - EnsureRareData().has_override_percentage_resolution_block_size_ = false; -} - LayoutUnit LayoutBox::OverrideAvailableInlineSize() const { NOT_DESTROYED(); DCHECK(HasOverrideAvailableInlineSize()); @@ -3984,7 +3918,6 @@ return !containing_block->IsTableCell() && !containing_block->IsOutOfFlowPositioned() && - !containing_block->HasOverridePercentageResolutionBlockSize() && !containing_block->IsLayoutNGGrid() && !containing_block->IsFlexibleBoxIncludingNG() && !containing_block->IsLayoutNGCustom(); @@ -4021,13 +3954,8 @@ } LayoutUnit available_height(-1); - if (containing_block_child->HasOverridePercentageResolutionBlockSize()) { - available_height = - containing_block_child->OverridePercentageResolutionBlockSize(); - } else if (cb->HasOverridePercentageResolutionBlockSize()) { - available_height = cb->OverridePercentageResolutionBlockSize(); - } else if (HasOverrideContainingBlockContentLogicalWidth() && - IsHorizontalWritingMode() != real_cb->IsHorizontalWritingMode()) { + if (HasOverrideContainingBlockContentLogicalWidth() && + IsHorizontalWritingMode() != real_cb->IsHorizontalWritingMode()) { available_height = OverrideContainingBlockContentLogicalWidth(); } else if (HasOverrideContainingBlockContentLogicalHeight() && IsHorizontalWritingMode() == real_cb->IsHorizontalWritingMode()) { @@ -4146,9 +4074,9 @@ // CustomLayout items can resolve their percentages against an available or // percentage size override. - if (IsCustomItem() && (HasOverrideContainingBlockContentLogicalHeight() || - HasOverridePercentageResolutionBlockSize())) + if (IsCustomItem() && HasOverrideContainingBlockContentLogicalHeight()) { return false; + } if (LayoutBlock* cb = ContainingBlockForAutoHeightDetection(logical_height)) return cb->HasAutoHeightOrContainingBlockWithAutoHeight(); @@ -4210,8 +4138,6 @@ To<LayoutBoxModelObject>(cb)); } else if (stretched_height != -1) { available_height = stretched_height; - } else if (HasOverridePercentageResolutionBlockSize()) { - available_height = OverridePercentageResolutionBlockSize(); } else { available_height = has_perpendicular_containing_block ? ContainingBlockLogicalWidthForContent()
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h index 48359a2e..6246adb 100644 --- a/third_party/blink/renderer/core/layout/layout_box.h +++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -103,12 +103,10 @@ bool has_override_containing_block_content_logical_width_ : 1; bool has_override_containing_block_content_logical_height_ : 1; - bool has_override_percentage_resolution_block_size_ : 1; bool has_previous_content_box_rect_ : 1; LayoutUnit override_containing_block_content_logical_width_; LayoutUnit override_containing_block_content_logical_height_; - LayoutUnit override_percentage_resolution_block_size_; // For snap area, the owning snap container. Member<LayoutBox> snap_container_; @@ -895,10 +893,6 @@ LayoutUnit OverrideContentLogicalWidth() const; LayoutUnit OverrideContentLogicalHeight() const; - LayoutUnit OverrideContainingBlockContentWidth() const override; - LayoutUnit OverrideContainingBlockContentHeight() const override; - bool HasOverrideContainingBlockContentWidth() const override; - bool HasOverrideContainingBlockContentHeight() const override; LayoutUnit OverrideContainingBlockContentLogicalWidth() const; LayoutUnit OverrideContainingBlockContentLogicalHeight() const; bool HasOverrideContainingBlockContentLogicalWidth() const; @@ -907,14 +901,6 @@ void SetOverrideContainingBlockContentLogicalHeight(LayoutUnit); void ClearOverrideContainingBlockContentSize(); - // When a percentage resolution block size override has been set, we'll use - // that size to resolve block-size percentages on this box, rather than - // deducing it from the containing block. - LayoutUnit OverridePercentageResolutionBlockSize() const; - bool HasOverridePercentageResolutionBlockSize() const; - void SetOverridePercentageResolutionBlockSize(LayoutUnit); - void ClearOverridePercentageResolutionBlockSize(); - // When an available inline size override has been set, we'll use that to fill // available inline size, rather than deducing it from the containing block // (and then subtract space taken up by adjacent floats).
diff --git a/third_party/blink/renderer/core/layout/layout_box_model_object.cc b/third_party/blink/renderer/core/layout/layout_box_model_object.cc index dd8791c..f2944e9e 100644 --- a/third_party/blink/renderer/core/layout/layout_box_model_object.cc +++ b/third_party/blink/renderer/core/layout/layout_box_model_object.cc
@@ -556,9 +556,9 @@ } } if (this_box && this_box->IsCustomItem() && - (this_box->HasOverrideContainingBlockContentLogicalHeight() || - this_box->HasOverridePercentageResolutionBlockSize())) + (this_box->HasOverrideContainingBlockContentLogicalHeight())) { return false; + } if ((logical_height_length.IsAutoOrContentOrIntrinsic() || logical_height_length.IsFillAvailable()) &&
diff --git a/third_party/blink/renderer/core/layout/layout_box_model_object.h b/third_party/blink/renderer/core/layout/layout_box_model_object.h index 5b916436..2e515266 100644 --- a/third_party/blink/renderer/core/layout/layout_box_model_object.h +++ b/third_party/blink/renderer/core/layout/layout_box_model_object.h
@@ -520,25 +520,6 @@ bool BackgroundTransfersToView( const ComputedStyle* document_element_style = nullptr) const; - virtual LayoutUnit OverrideContainingBlockContentWidth() const { - NOT_DESTROYED(); - NOTREACHED(); - return LayoutUnit(-1); - } - virtual LayoutUnit OverrideContainingBlockContentHeight() const { - NOT_DESTROYED(); - NOTREACHED(); - return LayoutUnit(-1); - } - virtual bool HasOverrideContainingBlockContentWidth() const { - NOT_DESTROYED(); - return false; - } - virtual bool HasOverrideContainingBlockContentHeight() const { - NOT_DESTROYED(); - return false; - } - void RecalcVisualOverflow() override; void AddOutlineRectsForNormalChildren(OutlineRectCollector&,
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index b47b34a..e229c098 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -1422,14 +1422,12 @@ } while (object); } -void LayoutObject::MarkContainerChainForLayout(bool schedule_relayout, - SubtreeLayoutScope* layouter) { +void LayoutObject::MarkContainerChainForLayout(bool schedule_relayout) { NOT_DESTROYED(); #if DCHECK_IS_ON() DCHECK(!IsSetNeedsLayoutForbidden()); DCHECK(!GetDocument().InPostLifecycleSteps()); #endif - DCHECK(!layouter || this != layouter->Root()); // When we're in layout, we're marking a descendant as needing layout with // the intention of visiting it during this layout. We shouldn't be // scheduling it to be laid out later. Also, scheduleRelayout() must not be @@ -1486,16 +1484,6 @@ object->MarkSelfPaintingLayerForVisualOverflowRecalc(); - if (layouter) { - layouter->RecordObjectMarkedForLayout(object); - - if (object == layouter->Root()) { - if (auto* painting_layer = PaintingLayer()) - painting_layer->SetNeedsVisualOverflowRecalc(); - return; - } - } - last = object; if (schedule_relayout && ObjectIsRelayoutBoundary(last)) break;
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index bbed46a..4fe537b 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -41,6 +41,7 @@ #include "third_party/blink/renderer/core/dom/element.h" #include "third_party/blink/renderer/core/editing/forward.h" #include "third_party/blink/renderer/core/html_names.h" +#include "third_party/blink/renderer/core/inspector/inspector_trace_events.h" #include "third_party/blink/renderer/core/layout/api/selection_state.h" #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" #include "third_party/blink/renderer/core/layout/geometry/transform_state.h" @@ -52,7 +53,6 @@ #include "third_party/blink/renderer/core/layout/ng/ng_outline_type.h" #include "third_party/blink/renderer/core/layout/ng/ng_style_variant.h" #include "third_party/blink/renderer/core/layout/outline_rect_collector.h" -#include "third_party/blink/renderer/core/layout/subtree_layout_scope.h" #include "third_party/blink/renderer/core/loader/resource/image_resource_observer.h" #include "third_party/blink/renderer/core/paint/fragment_data.h" #include "third_party/blink/renderer/core/paint/paint_phase.h" @@ -1960,24 +1960,20 @@ bitfields_.SetNeedsCollectInlines(b); } - void MarkContainerChainForLayout(bool schedule_relayout = true, - SubtreeLayoutScope* = nullptr); + void MarkContainerChainForLayout(bool schedule_relayout = true); void MarkParentForSpannerOrOutOfFlowPositionedChange(); void SetNeedsLayout(LayoutInvalidationReasonForTracing, - MarkingBehavior = kMarkContainerChain, - SubtreeLayoutScope* = nullptr); + MarkingBehavior = kMarkContainerChain); void SetNeedsLayoutAndFullPaintInvalidation( LayoutInvalidationReasonForTracing, - MarkingBehavior = kMarkContainerChain, - SubtreeLayoutScope* = nullptr); + MarkingBehavior = kMarkContainerChain); void ClearNeedsLayoutWithoutPaintInvalidation(); // |ClearNeedsLayout()| calls |SetShouldCheckForPaintInvalidation()|. void ClearNeedsLayout(); void ClearNeedsLayoutWithFullPaintInvalidation(); - void SetChildNeedsLayout(MarkingBehavior = kMarkContainerChain, - SubtreeLayoutScope* = nullptr); + void SetChildNeedsLayout(MarkingBehavior = kMarkContainerChain); void SetNeedsPositionedMovementLayout(); void SetIntrinsicLogicalWidthsDirty(MarkingBehavior = kMarkContainerChain); void ClearIntrinsicLogicalWidthsDirty(); @@ -4342,7 +4338,6 @@ private: friend class LineLayoutItem; friend class LocalFrameView; - friend class SubtreeLayoutScope; scoped_refptr<const ComputedStyle> style_; @@ -4405,8 +4400,7 @@ // identical. inline void LayoutObject::SetNeedsLayout( LayoutInvalidationReasonForTracing reason, - MarkingBehavior mark_parents, - SubtreeLayoutScope* layouter) { + MarkingBehavior mark_parents) { #if DCHECK_IS_ON() DCHECK(!IsSetNeedsLayoutForbidden()); #endif @@ -4420,17 +4414,16 @@ TRACE_DISABLED_BY_DEFAULT("devtools.timeline.invalidationTracking"), "LayoutInvalidationTracking", inspector_layout_invalidation_tracking_event::Data, this, reason); - if (mark_parents == kMarkContainerChain && - (!layouter || layouter->Root() != this)) - MarkContainerChainForLayout(!layouter, layouter); + if (mark_parents == kMarkContainerChain) { + MarkContainerChainForLayout(); + } } } inline void LayoutObject::SetNeedsLayoutAndFullPaintInvalidation( LayoutInvalidationReasonForTracing reason, - MarkingBehavior mark_parents, - SubtreeLayoutScope* layouter) { - SetNeedsLayout(reason, mark_parents, layouter); + MarkingBehavior mark_parents) { + SetNeedsLayout(reason, mark_parents); SetShouldDoFullPaintInvalidation(); } @@ -4475,19 +4468,16 @@ SetShouldDoFullPaintInvalidation(); } -inline void LayoutObject::SetChildNeedsLayout(MarkingBehavior mark_parents, - SubtreeLayoutScope* layouter) { +inline void LayoutObject::SetChildNeedsLayout(MarkingBehavior mark_parents) { #if DCHECK_IS_ON() DCHECK(!IsSetNeedsLayoutForbidden()); #endif bool already_needed_layout = NormalChildNeedsLayout(); SetNeedsOverflowRecalc(); SetNormalChildNeedsLayout(true); - // FIXME: Replace MarkOnlyThis with the SubtreeLayoutScope code path and - // remove the MarkingBehavior argument entirely. - if (!already_needed_layout && mark_parents == kMarkContainerChain && - (!layouter || layouter->Root() != this)) - MarkContainerChainForLayout(!layouter, layouter); + if (!already_needed_layout && mark_parents == kMarkContainerChain) { + MarkContainerChainForLayout(); + } } inline void LayoutObject::SetNeedsPositionedMovementLayout() {
diff --git a/third_party/blink/renderer/core/layout/layout_view.cc b/third_party/blink/renderer/core/layout/layout_view.cc index 99f464cd..40408c22 100644 --- a/third_party/blink/renderer/core/layout/layout_view.cc +++ b/third_party/blink/renderer/core/layout/layout_view.cc
@@ -299,34 +299,33 @@ void LayoutView::UpdateBlockLayout(bool relayout_children) { NOT_DESTROYED(); - SubtreeLayoutScope layout_scope(*this); - // Use calcWidth/Height to get the new width/height, since this will take the - // full page zoom factor into account. relayout_children |= !ShouldUsePrintingLayout() && (!frame_view_ || LogicalWidth() != ViewLogicalWidthForBoxSizing() || LogicalHeight() != ViewLogicalHeightForBoxSizing()); if (relayout_children) { - layout_scope.SetChildNeedsLayout(this); + SetChildNeedsLayout(); for (LayoutObject* child = FirstChild(); child; child = child->NextSibling()) { if (child->IsSVGRoot()) continue; + // TODO(1229581): Is this really necessary? if ((child->IsBox() && To<LayoutBox>(child)->HasRelativeLogicalHeight()) || child->StyleRef().LogicalHeight().IsPercentOrCalc() || child->StyleRef().LogicalMinHeight().IsPercentOrCalc() || child->StyleRef().LogicalMaxHeight().IsPercentOrCalc()) - layout_scope.SetChildNeedsLayout(child); + child->SetChildNeedsLayout(); } - if (GetDocument().SvgExtensions()) + if (GetDocument().SvgExtensions()) { GetDocument() .AccessSVGExtensions() - .InvalidateSVGRootsWithRelativeLengthDescendents(&layout_scope); + .InvalidateSVGRootsWithRelativeLengthDescendents(); + } } if (!NeedsLayout())
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_view.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_view.cc index 5844dedb..edc8b69 100644 --- a/third_party/blink/renderer/core/layout/ng/layout_ng_view.cc +++ b/third_party/blink/renderer/core/layout/ng/layout_ng_view.cc
@@ -41,7 +41,7 @@ if (relayout_children && GetDocument().SvgExtensions()) { GetDocument() .AccessSVGExtensions() - .InvalidateSVGRootsWithRelativeLengthDescendents(nullptr); + .InvalidateSVGRootsWithRelativeLengthDescendents(); } NGConstraintSpace constraint_space =
diff --git a/third_party/blink/renderer/core/layout/subtree_layout_scope.cc b/third_party/blink/renderer/core/layout/subtree_layout_scope.cc deleted file mode 100644 index 3c04bd6..0000000 --- a/third_party/blink/renderer/core/layout/subtree_layout_scope.cc +++ /dev/null
@@ -1,90 +0,0 @@ -/* - * Copyright (C) 2013 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "third_party/blink/renderer/core/layout/subtree_layout_scope.h" - -#include "third_party/blink/renderer/core/display_lock/display_lock_utilities.h" -#include "third_party/blink/renderer/core/frame/local_frame_view.h" -#include "third_party/blink/renderer/core/layout/layout_object.h" - -namespace blink { - -SubtreeLayoutScope::SubtreeLayoutScope(LayoutObject& root) : root_(root) { - CHECK(root_.GetDocument().View()->IsInPerformLayout()); -} - -SubtreeLayoutScope::~SubtreeLayoutScope() { - CHECK(!root_.SelfNeedsLayout()); - CHECK(!root_.NeedsLayout() || root_.ChildLayoutBlockedByDisplayLock()); - -#if DCHECK_IS_ON() - for (const auto& layout_object : layout_objects_to_layout_) { - // When CSS Container Queries are enabled, style recalc and layout tree - // rebuild for a container during layout may detach LayoutObjects which - // have been marked for layout. Skip such LayoutObject to avoid that - // NOT_DESTROYED() triggers a DCHECK failure in AssertLaidOut() or - // AssertFragmentTree(). - if (layout_object->is_destroyed_) { - continue; - } - // There are situations where the object to layout was never laid out, such - // as if there was a display-locked descendant of the root and ancestor of - // the object which prevented layout. This can happen in quirks mode, where - // an ancestor can mark a descendant as dirty through its - // PercentHeightDescendants() list, which will not get cleared because - // traversal is blocked by a display lock. This finds such cases and allows - // these objects to be dirty. - if (!DisplayLockUtilities::LockedAncestorPreventingLayout(*layout_object)) - layout_object->AssertLaidOut(); - layout_object->AssertFragmentTree(); - } -#endif -} - -void SubtreeLayoutScope::SetNeedsLayout( - LayoutObject* descendant, - LayoutInvalidationReasonForTracing reason) { - DCHECK(descendant->IsDescendantOf(&root_)); - descendant->SetNeedsLayout(reason, kMarkContainerChain, this); -} - -void SubtreeLayoutScope::SetChildNeedsLayout(LayoutObject* descendant) { - DCHECK(descendant->IsDescendantOf(&root_)); - descendant->SetChildNeedsLayout(kMarkContainerChain, this); -} - -void SubtreeLayoutScope::RecordObjectMarkedForLayout( - LayoutObject* layout_object) { -#if DCHECK_IS_ON() - layout_objects_to_layout_.insert(layout_object); -#endif -} - -} // namespace blink
diff --git a/third_party/blink/renderer/core/layout/subtree_layout_scope.h b/third_party/blink/renderer/core/layout/subtree_layout_scope.h deleted file mode 100644 index a303f9a..0000000 --- a/third_party/blink/renderer/core/layout/subtree_layout_scope.h +++ /dev/null
@@ -1,79 +0,0 @@ -/* - * Copyright (C) 2013 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SUBTREE_LAYOUT_SCOPE_H_ -#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SUBTREE_LAYOUT_SCOPE_H_ - -#include "base/dcheck_is_on.h" -#include "third_party/blink/renderer/core/inspector/inspector_trace_events.h" -#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" - -#if DCHECK_IS_ON() -#include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_set.h" -#endif - -// This is the way to mark a subtree as needing layout during layout, -// e.g. for the purposes of doing a multipass layout. -// -// It should only be used during layout. Outside of layout, you should -// just call layoutObject->setNeedsLayout() directly. -// -// It ensures that you don't accidentally mark part of the tree as -// needing layout and not actually lay it out. - -namespace blink { - -class LayoutObject; - -class SubtreeLayoutScope { - STACK_ALLOCATED(); - - public: - SubtreeLayoutScope(LayoutObject& root); - ~SubtreeLayoutScope(); - - void SetNeedsLayout(LayoutObject* descendant, - LayoutInvalidationReasonForTracing); - void SetChildNeedsLayout(LayoutObject* descendant); - - LayoutObject& Root() { return root_; } - void RecordObjectMarkedForLayout(LayoutObject*); - - private: - LayoutObject& root_; - -#if DCHECK_IS_ON() - HeapHashSet<Member<LayoutObject>> layout_objects_to_layout_; -#endif -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_SUBTREE_LAYOUT_SCOPE_H_
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc index f7b6dcb..a8737ea 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
@@ -198,21 +198,18 @@ } void LayoutSVGResourceContainer::InvalidateCacheAndMarkForLayout( - LayoutInvalidationReasonForTracing reason, - SubtreeLayoutScope* layout_scope) { + LayoutInvalidationReasonForTracing reason) { NOT_DESTROYED(); - SetNeedsLayoutAndFullPaintInvalidation(reason, kMarkContainerChain, - layout_scope); + SetNeedsLayoutAndFullPaintInvalidation(reason, kMarkContainerChain); if (EverHadLayout()) RemoveAllClientsFromCache(); } -void LayoutSVGResourceContainer::InvalidateCacheAndMarkForLayout( - SubtreeLayoutScope* layout_scope) { +void LayoutSVGResourceContainer::InvalidateCacheAndMarkForLayout() { NOT_DESTROYED(); InvalidateCacheAndMarkForLayout( - layout_invalidation_reason::kSvgResourceInvalidated, layout_scope); + layout_invalidation_reason::kSvgResourceInvalidated); } static inline void RemoveFromCacheAndInvalidateDependencies(
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h index a069f01..0152a04 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
@@ -67,9 +67,8 @@ resource_type == kRadialGradientResourceType; } - void InvalidateCacheAndMarkForLayout(LayoutInvalidationReasonForTracing, - SubtreeLayoutScope* = nullptr); - void InvalidateCacheAndMarkForLayout(SubtreeLayoutScope* = nullptr); + void InvalidateCacheAndMarkForLayout(LayoutInvalidationReasonForTracing); + void InvalidateCacheAndMarkForLayout(); bool FindCycle() const;
diff --git a/third_party/blink/renderer/core/layout/svg/svg_content_container.cc b/third_party/blink/renderer/core/layout/svg/svg_content_container.cc index 7a8126b..6212f95 100644 --- a/third_party/blink/renderer/core/layout/svg/svg_content_container.cc +++ b/third_party/blink/renderer/core/layout/svg/svg_content_container.cc
@@ -80,23 +80,20 @@ } // Resource containers are nasty: they can invalidate clients outside the - // current SubtreeLayoutScope. + // containers. // Since they only care about viewport size changes (to resolve their // relative lengths), we trigger their invalidation directly from - // SVGSVGElement::svgAttributeChange() or at a higher SubtreeLayoutScope (in - // LayoutView::layout()). We do not create a SubtreeLayoutScope for - // resources because their ability to reference each other leads to circular - // layout. We protect against that within the layout code for marker - // resources, but it causes assertions if we use a SubtreeLayoutScope for - // them. + // SVGSVGElement::svgAttributeChange() or at the LayoutView. We do not mark + // them for resources here, because their ability to reference each other + // leads to circular layout. + // TODO(layout-dev): Do we still need this special treatment? if (child->IsSVGResourceContainer()) { child->LayoutIfNeeded(); } else { DCHECK(!child->IsSVGRoot()); - SubtreeLayoutScope layout_scope(*child); if (force_child_layout) { - layout_scope.SetNeedsLayout(child, - layout_invalidation_reason::kSvgChanged); + child->SetNeedsLayout(layout_invalidation_reason::kSvgChanged, + kMarkOnlyThis); } // Lay out any referenced resources before the child.
diff --git a/third_party/blink/renderer/core/layout/text_autosizer.cc b/third_party/blink/renderer/core/layout/text_autosizer.cc index 0d7da33..cc18914 100644 --- a/third_party/blink/renderer/core/layout/text_autosizer.cc +++ b/third_party/blink/renderer/core/layout/text_autosizer.cc
@@ -362,8 +362,7 @@ } } -void TextAutosizer::BeginLayout(LayoutBlock* block, - SubtreeLayoutScope* layouter) { +void TextAutosizer::BeginLayout(LayoutBlock* block) { DCHECK(ShouldHandleLayout()); if (PrepareForLayout(block) == kStopLayout) @@ -387,7 +386,7 @@ bool is_auto_table_cell = cell && !cell->Table()->StyleRef().IsFixedTableLayout(); if (!is_auto_table_cell && !cluster_stack_.empty()) - Inflate(block, layouter); + Inflate(block); } void TextAutosizer::InflateAutoTable(LayoutNGTable* table) { @@ -414,8 +413,8 @@ if (!cell->NeedsLayout()) { continue; } - BeginLayout(cell, nullptr); - Inflate(cell, nullptr, kDescendToInnerBlocks); + BeginLayout(cell); + Inflate(cell, kDescendToInnerBlocks); EndLayout(cell); } } @@ -439,7 +438,6 @@ } float TextAutosizer::Inflate(LayoutObject* parent, - SubtreeLayoutScope* layouter, InflateBehavior behavior, float multiplier) { Cluster* cluster = CurrentCluster(); @@ -469,7 +467,7 @@ multiplier = cluster->flags_ & SUPPRESSING ? 1.0f : ClusterMultiplier(cluster); } - ApplyMultiplier(child, multiplier, layouter); + ApplyMultiplier(child, multiplier); if (behavior == kDescendToInnerBlocks) { // The ancestor nodes might be inline-blocks. We should @@ -480,7 +478,7 @@ child->SetIntrinsicLogicalWidthsDirty(kMarkOnlyThis); } } else if (child->IsLayoutInline()) { - multiplier = Inflate(child, layouter, behavior, multiplier); + multiplier = Inflate(child, behavior, multiplier); // If this LayoutInline is an anonymous inline that has multiplied // children, apply the multiplifer to the parent too. We compute // ::first-line style from the style of the parent block. @@ -489,23 +487,22 @@ } else if (child->IsLayoutBlock() && behavior == kDescendToInnerBlocks && !ClassifyBlock(child, INDEPENDENT | EXPLICIT_WIDTH | SUPPRESSING)) { - multiplier = Inflate(child, layouter, behavior, multiplier); + multiplier = Inflate(child, behavior, multiplier); } child = child->NextSibling(); } if (has_text_child) { - ApplyMultiplier(parent, multiplier, - layouter); // Parent handles line spacing. + ApplyMultiplier(parent, multiplier); // Parent handles line spacing. } else if (!parent->IsListItemIncludingNG()) { // For consistency, a block with no immediate text child should always have // a multiplier of 1. - ApplyMultiplier(parent, 1, layouter); + ApplyMultiplier(parent, 1); } if (parent->IsLayoutNGListItem()) { float list_item_multiplier = ClusterMultiplier(cluster); - ApplyMultiplier(parent, list_item_multiplier, layouter); + ApplyMultiplier(parent, list_item_multiplier); // The list item has to be treated special because we can have a tree such // that you have a list item for a form inside it. The list marker then ends @@ -518,7 +515,7 @@ // it. for (LayoutObject* walker = marker; walker; walker = walker->NextInPreOrder(marker)) { - ApplyMultiplier(walker, list_item_multiplier, layouter); + ApplyMultiplier(walker, list_item_multiplier); walker->SetIntrinsicLogicalWidthsDirty(kMarkOnlyThis); } } @@ -711,7 +708,7 @@ while (layout_object) { if (const ComputedStyle* style = layout_object->Style()) { if (style->TextAutosizingMultiplier() != 1) - ApplyMultiplier(layout_object, 1, nullptr, kLayoutNeeded); + ApplyMultiplier(layout_object, 1, kLayoutNeeded); } layout_object = layout_object->NextInPreOrder(); } @@ -1203,7 +1200,6 @@ void TextAutosizer::ApplyMultiplier(LayoutObject* layout_object, float multiplier, - SubtreeLayoutScope* layouter, RelayoutBehavior relayout_behavior) { DCHECK(layout_object); const ComputedStyle& current_style = layout_object->StyleRef(); @@ -1248,14 +1244,11 @@ std::move(style), LayoutObject::ApplyStyleChanges::kNo); if (layout_object->IsText()) To<LayoutText>(layout_object)->AutosizingMultiplerChanged(); - DCHECK(!layouter || layout_object->IsDescendantOf(&layouter->Root())); layout_object->SetNeedsLayoutAndFullPaintInvalidation( - layout_invalidation_reason::kTextAutosizing, kMarkContainerChain, - layouter); + layout_invalidation_reason::kTextAutosizing, kMarkContainerChain); break; case kLayoutNeeded: - DCHECK(!layouter); layout_object->SetModifiedStyleOutsideStyleRecalc( std::move(style), LayoutObject::ApplyStyleChanges::kYes); break; @@ -1412,14 +1405,13 @@ return it != blocks_for_fingerprint_.end() ? &*it->value : nullptr; } -TextAutosizer::LayoutScope::LayoutScope(LayoutBlock* block, - SubtreeLayoutScope* layouter) +TextAutosizer::LayoutScope::LayoutScope(LayoutBlock* block) : text_autosizer_(block->GetDocument().GetTextAutosizer()), block_(block) { if (!text_autosizer_) return; if (text_autosizer_->ShouldHandleLayout()) - text_autosizer_->BeginLayout(block_, layouter); + text_autosizer_->BeginLayout(block_); else text_autosizer_ = nullptr; } @@ -1482,7 +1474,7 @@ // before, at least if the autosizer is enabled. text_autosizer_->RegisterInlineSize(*block_, inline_size); - text_autosizer_->BeginLayout(block_, nullptr); + text_autosizer_->BeginLayout(block_); } TextAutosizer::NGLayoutScope::~NGLayoutScope() {
diff --git a/third_party/blink/renderer/core/layout/text_autosizer.h b/third_party/blink/renderer/core/layout/text_autosizer.h index a61c4ac..a17907a7 100644 --- a/third_party/blink/renderer/core/layout/text_autosizer.h +++ b/third_party/blink/renderer/core/layout/text_autosizer.h
@@ -57,7 +57,6 @@ class LayoutText; class LocalFrame; class Page; -class SubtreeLayoutScope; inline bool operator==(const mojom::blink::TextAutosizerPageInfo& lhs, const mojom::blink::TextAutosizerPageInfo& rhs) { @@ -109,7 +108,7 @@ STACK_ALLOCATED(); public: - explicit LayoutScope(LayoutBlock*, SubtreeLayoutScope* = nullptr); + explicit LayoutScope(LayoutBlock*); ~LayoutScope(); protected: @@ -312,13 +311,12 @@ bool setting_enabled_; }; - void BeginLayout(LayoutBlock*, SubtreeLayoutScope*); + void BeginLayout(LayoutBlock*); void EndLayout(LayoutBlock*); void RegisterInlineSize(const LayoutBlock& ng_block, LayoutUnit inline_size); void UnregisterInlineSize(const LayoutBlock& ng_block); void InflateAutoTable(LayoutNGTable*); float Inflate(LayoutObject*, - SubtreeLayoutScope*, InflateBehavior = kThisBlockOnly, float multiplier = 0); bool ShouldHandleLayout() const; @@ -356,7 +354,6 @@ float MultiplierFromBlock(const LayoutBlock*); void ApplyMultiplier(LayoutObject*, float, - SubtreeLayoutScope*, RelayoutBehavior = kAlreadyInLayout); bool IsWiderOrNarrowerDescendant(Cluster*); Cluster* CurrentCluster() const;
diff --git a/third_party/blink/renderer/core/page/scrolling/main_thread_scrolling_reasons_test.cc b/third_party/blink/renderer/core/page/scrolling/main_thread_scrolling_reasons_test.cc index 252562a..3a76d47 100644 --- a/third_party/blink/renderer/core/page/scrolling/main_thread_scrolling_reasons_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/main_thread_scrolling_reasons_test.cc
@@ -19,6 +19,7 @@ #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" #include "third_party/blink/renderer/core/testing/sim/sim_request.h" #include "third_party/blink/renderer/core/testing/sim/sim_test.h" +#include "third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h" #include "third_party/blink/renderer/platform/testing/find_cc_layer.h" #include "third_party/blink/renderer/platform/testing/paint_test_configurations.h" #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h" @@ -98,14 +99,24 @@ return GetScrollNode(layer)->main_thread_scrolling_reasons; } + uint32_t GetMainThreadScrollingReasons( + const ScrollPaintPropertyNode& scroll) const { + return GetFrame() + ->View() + ->GetPaintArtifactCompositor() + ->GetMainThreadScrollingReasons(scroll); + } + + uint32_t GetMainThreadScrollingReasons( + const PaintLayerScrollableArea& scrollable_area) const { + return GetMainThreadScrollingReasons(*scrollable_area.GetLayoutBox() + ->FirstFragment() + .PaintProperties() + ->Scroll()); + } + uint32_t GetViewMainThreadScrollingReasons() const { - const auto* scroll = GetFrame() - ->View() - ->GetLayoutView() - ->FirstFragment() - .PaintProperties() - ->Scroll(); - return scroll->GetMainThreadScrollingReasons(); + return GetMainThreadScrollingReasons(*GetFrame()->View()->LayoutViewport()); } WebViewImpl* GetWebView() const { return helper_.GetWebView(); } @@ -148,7 +159,7 @@ ASSERT_TRUE(inner_scroll_node); EXPECT_MAIN_THREAD_SCROLLING_REASON( cc::MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, - inner_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*inner_scroll_node)); const cc::Layer* inner_scroll_layer = CcLayerByCcElementId( root_layer, inner_scroll_node->GetCompositorElementId()); ASSERT_TRUE(inner_scroll_layer); @@ -166,7 +177,7 @@ ->Scroll(); ASSERT_TRUE(outer_scroll_node); EXPECT_NO_MAIN_THREAD_SCROLLING_REASON( - outer_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*outer_scroll_node)); const cc::Layer* outer_scroll_layer = CcLayerByCcElementId( root_layer, outer_scroll_node->GetCompositorElementId()); ASSERT_TRUE(outer_scroll_layer); @@ -184,7 +195,7 @@ ASSERT_EQ(inner_scroll_node, inner_layout_view->FirstFragment().PaintProperties()->Scroll()); EXPECT_NO_MAIN_THREAD_SCROLLING_REASON( - inner_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*inner_scroll_node)); ASSERT_EQ(inner_scroll_layer, CcLayerByCcElementId(root_layer, inner_scroll_node->GetCompositorElementId())); @@ -195,7 +206,7 @@ ASSERT_EQ(outer_scroll_node, outer_layout_view->FirstFragment().PaintProperties()->Scroll()); EXPECT_NO_MAIN_THREAD_SCROLLING_REASON( - outer_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*outer_scroll_node)); ASSERT_EQ(outer_scroll_layer, CcLayerByCcElementId(root_layer, outer_scroll_node->GetCompositorElementId())); @@ -218,7 +229,7 @@ inner_layout_view->FirstFragment().PaintProperties()->Scroll()); EXPECT_MAIN_THREAD_SCROLLING_REASON( cc::MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, - inner_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*inner_scroll_node)); ASSERT_EQ(inner_scroll_layer, CcLayerByCcElementId(root_layer, inner_scroll_node->GetCompositorElementId())); @@ -231,7 +242,7 @@ outer_layout_view->FirstFragment().PaintProperties()->Scroll()); EXPECT_MAIN_THREAD_SCROLLING_REASON( cc::MainThreadScrollingReason::kHasBackgroundAttachmentFixedObjects, - outer_scroll_node->GetMainThreadScrollingReasons()); + GetMainThreadScrollingReasons(*outer_scroll_node)); ASSERT_EQ(outer_scroll_layer, CcLayerByCcElementId(root_layer, outer_scroll_node->GetCompositorElementId())); @@ -394,20 +405,6 @@ NavigateTo(base_url_ + "two_scrollable_area.html"); } - uint32_t GetMainThreadScrollingReasons( - const PaintLayerScrollableArea& scrollable_area) const { - if (RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()) { - return GetScrollNode(scrollable_area)->main_thread_scrolling_reasons; - } - return scrollable_area.GetNonCompositedMainThreadScrollingReasons() | - scrollable_area.GetLayoutBox() - ->FirstFragment() - .PaintProperties() - ->ScrollTranslation() - ->ScrollNode() - ->GetMainThreadScrollingReasons(); - } - void TestNonCompositedReasons(const AtomicString& style_class, const uint32_t reason) { GetFrame()->GetSettings()->SetPreferCompositingToLCDTextForTesting(false);
diff --git a/third_party/blink/renderer/core/page/scrolling/scroll_metrics_test.cc b/third_party/blink/renderer/core/page/scrolling/scroll_metrics_test.cc index 3daa237..372361b 100644 --- a/third_party/blink/renderer/core/page/scrolling/scroll_metrics_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/scroll_metrics_test.cc
@@ -156,36 +156,15 @@ // Test touch scroll. Scroll(box, WebGestureDevice::kTouchscreen); - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // cc reports the below reasons because #box is not composited. - EXPECT_TOUCH_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_TOUCH_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_TOUCH_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_TOUCH_TOTAL(3); - } else { - // cc reports the following reasons, because #box is not composited: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Then main reports these reasons when handling the forwarded event: - // kNotOpaqueForTextAndLCDText - // kScrollingOnMainForAnyReason (again) - // - EXPECT_TOUCH_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_TOUCH_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_TOUCH_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 2); - EXPECT_TOUCH_TOTAL(4); - } + // The below reasons are reported because #box is not composited. + EXPECT_TOUCH_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), 1); + EXPECT_TOUCH_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), + 1); + EXPECT_TOUCH_BUCKET( + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_TOUCH_TOTAL(3); // Reset histogram tester. histogram_tester.emplace(); @@ -193,36 +172,15 @@ // Test wheel scroll. Scroll(box, WebGestureDevice::kTouchpad); - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // cc reports the below reasons because #box is not composited. - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_WHEEL_TOTAL(3); - } else { - // cc reports the following reasons, because #box is not composited: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Then main reports these reasons when handling the forwarded event: - // kNotOpaqueForTextAndLCDText - // kScrollingOnMainForAnyReason (again) - // - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 2); - EXPECT_WHEEL_TOTAL(4); - } + // The below reasons are reported because #box is not composited. + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), 1); + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), + 1); + EXPECT_WHEEL_BUCKET( + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_WHEEL_TOTAL(3); } TEST_P(ScrollMetricsTest, CompositedScrollableAreaTest) { @@ -242,36 +200,16 @@ histogram_tester.emplace(); Scroll(box, WebGestureDevice::kTouchpad); - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // cc reports the below reasons because #box is not composited. - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_WHEEL_TOTAL(3); - } else { - // cc reports the following reasons, because #box is not composited: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Then main reports these reasons when handling the forwarded event: - // kNotOpaqueForTextAndLCDText - // kScrollingOnMainForAnyReason (again) - // - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 2); - EXPECT_WHEEL_TOTAL(4); - } + + // The below reasons are reported because #box is not composited. + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), 1); + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), + 1); + EXPECT_WHEEL_BUCKET( + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_WHEEL_TOTAL(3); // Reset histogram tester. histogram_tester.emplace(); @@ -279,9 +217,11 @@ box->setAttribute("class", "composited transform box"); Compositor().BeginFrame(); Scroll(box, WebGestureDevice::kTouchpad); - EXPECT_FALSE(To<LayoutBox>(box->GetLayoutObject()) - ->GetScrollableArea() - ->GetNonCompositedMainThreadScrollingReasons()); + if (!RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()) { + EXPECT_FALSE(To<LayoutBox>(box->GetLayoutObject()) + ->GetScrollableArea() + ->GetNonCompositedMainThreadScrollingReasons()); + } // Now that #box is composited, cc reports that we do not scroll on main. EXPECT_WHEEL_BUCKET(cc::MainThreadScrollingReason::kNotScrollingOnMain, 1); @@ -305,36 +245,15 @@ Scroll(box, WebGestureDevice::kTouchpad); - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // cc reports the below reasons because #box is not composited. - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_WHEEL_TOTAL(3); - } else { - // cc reports the following reasons, because #box is not composited: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Then main reports these reasons when handling the forwarded event: - // kNotOpaqueForTextAndLCDText - // kScrollingOnMainForAnyReason (again) - // - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 2); - EXPECT_WHEEL_TOTAL(4); - } + // The below reasons are reported because #box is not composited. + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), 1); + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), + 1); + EXPECT_WHEEL_BUCKET( + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_WHEEL_TOTAL(3); // Reset histogram tester. histogram_tester.emplace(); @@ -343,35 +262,18 @@ UpdateAllLifecyclePhases(); Scroll(box, WebGestureDevice::kTouchpad); - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // The overflow: hidden element is still a non-fast scroll region, so cc - // reports the following for the second scroll: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Since #box is overflow: hidden, the hit test returns the viewport, and - // so we do not log kNoScrollingLayer again. - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_WHEEL_TOTAL(2); - } else { - // The overflow: hidden element is still a non-fast scroll region, so cc - // reports the following for the second scroll: - // kNonFastScrollableRegion - // kScrollingOnMainForAnyReason - // - // Main does not scroll anything, because #box is overflow: hidden and the - // viewport does not overflow. - EXPECT_WHEEL_BUCKET( - BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), - 1); - EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); - EXPECT_WHEEL_TOTAL(2); - } + // The overflow: hidden element is still a non-fast scroll region, so cc + // reports the following for the second scroll: + // kNonFastScrollableRegion + // kScrollingOnMainForAnyReason + // + // Since #box is overflow: hidden, the hit test returns the viewport, and + // so we do not log kNoScrollingLayer again. + EXPECT_WHEEL_BUCKET( + BucketIndex(cc::MainThreadScrollingReason::kNonFastScrollableRegion), 1); + EXPECT_WHEEL_BUCKET( + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_WHEEL_TOTAL(2); } TEST_P(ScrollMetricsTest, NestedScrollersTest) { @@ -429,7 +331,6 @@ // // Then main reports these reasons when handling the forwarded event: // kNotOpaqueForTextAndLCDText (because ancestors are not composited) - // kScrollingOnMainForAnyReason (again) // EXPECT_WHEEL_BUCKET( BucketIndex(cc::MainThreadScrollingReason::kNoScrollingLayer), 1); @@ -437,8 +338,8 @@ BucketIndex(cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText), 1); EXPECT_WHEEL_BUCKET( - cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 2); - EXPECT_WHEEL_TOTAL(4); + cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason, 1); + EXPECT_WHEEL_TOTAL(3); } }
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h index c2a21bb..70361ab 100644 --- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h +++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -512,6 +512,7 @@ void InvalidatePaintForStickyDescendants(); uint32_t GetNonCompositedMainThreadScrollingReasons() const { + DCHECK(!RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()); return non_composited_main_thread_scrolling_reasons_; }
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc index f88dc8b..7a247d0 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -191,9 +191,6 @@ full_context.container_for_fixed_position = nullptr; context.fixed_position = context.current; context.fixed_position.fixed_position_children_fixed_to_root = true; - - full_context.scroll_unification_enabled = - base::FeatureList::IsEnabled(::features::kScrollUnification); } namespace { @@ -2310,7 +2307,7 @@ DCHECK(scrollable_area); MainThreadScrollingReasons reasons = full_context_.global_main_thread_scrolling_reasons; - if (full_context_.scroll_unification_enabled) { + if (!RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()) { reasons |= scrollable_area->GetNonCompositedMainThreadScrollingReasons(); } if (scrollable_area->BackgroundNeedsRepaintOnScroll()) {
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.h b/third_party/blink/renderer/core/paint/paint_property_tree_builder.h index 54723242..0bc14b0 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.h +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.h
@@ -224,7 +224,6 @@ unsigned was_layout_shift_root : 1 = false; unsigned was_main_thread_scrolling : 1 = false; - unsigned scroll_unification_enabled : 1 = false; // Main thread scrolling reasons that apply to all scrollers in the current // LocalFrameView subtree.
diff --git a/third_party/blink/renderer/core/svg/svg_document_extensions.cc b/third_party/blink/renderer/core/svg/svg_document_extensions.cc index d935df80..b69c722 100644 --- a/third_party/blink/renderer/core/svg/svg_document_extensions.cc +++ b/third_party/blink/renderer/core/svg/svg_document_extensions.cc
@@ -142,8 +142,7 @@ relative_length_svg_roots_.erase(svg_root); } -void SVGDocumentExtensions::InvalidateSVGRootsWithRelativeLengthDescendents( - SubtreeLayoutScope* scope) { +void SVGDocumentExtensions::InvalidateSVGRootsWithRelativeLengthDescendents() { #if DCHECK_IS_ON() DCHECK(!in_relative_length_svg_roots_invalidation_); base::AutoReset<bool> in_relative_length_svg_roots_change( @@ -151,7 +150,7 @@ #endif for (SVGSVGElement* element : relative_length_svg_roots_) - element->InvalidateRelativeLengthClients(scope); + element->InvalidateRelativeLengthClients(); } bool SVGDocumentExtensions::ZoomAndPanEnabled() const {
diff --git a/third_party/blink/renderer/core/svg/svg_document_extensions.h b/third_party/blink/renderer/core/svg/svg_document_extensions.h index 684529db..62cbecd 100644 --- a/third_party/blink/renderer/core/svg/svg_document_extensions.h +++ b/third_party/blink/renderer/core/svg/svg_document_extensions.h
@@ -34,7 +34,6 @@ class Document; class SVGElement; class SVGSVGElement; -class SubtreeLayoutScope; class CORE_EXPORT SVGDocumentExtensions final : public GarbageCollected<SVGDocumentExtensions> { @@ -66,7 +65,7 @@ void AddSVGRootWithRelativeLengthDescendents(SVGSVGElement*); void RemoveSVGRootWithRelativeLengthDescendents(SVGSVGElement*); - void InvalidateSVGRootsWithRelativeLengthDescendents(SubtreeLayoutScope*); + void InvalidateSVGRootsWithRelativeLengthDescendents(); bool ZoomAndPanEnabled() const;
diff --git a/third_party/blink/renderer/core/svg/svg_element.cc b/third_party/blink/renderer/core/svg/svg_element.cc index 089608dd..f19ab493 100644 --- a/third_party/blink/renderer/core/svg/svg_element.cc +++ b/third_party/blink/renderer/core/svg/svg_element.cc
@@ -526,8 +526,7 @@ } } -void SVGElement::InvalidateRelativeLengthClients( - SubtreeLayoutScope* layout_scope) { +void SVGElement::InvalidateRelativeLengthClients() { if (!isConnected()) return; @@ -541,17 +540,16 @@ if (HasRelativeLengths() && layout_object->IsSVGResourceContainer()) { To<LayoutSVGResourceContainer>(layout_object) ->InvalidateCacheAndMarkForLayout( - layout_invalidation_reason::kSizeChanged, layout_scope); + layout_invalidation_reason::kSizeChanged); } else if (SelfHasRelativeLengths()) { layout_object->SetNeedsLayoutAndFullPaintInvalidation( - layout_invalidation_reason::kUnknown, kMarkContainerChain, - layout_scope); + layout_invalidation_reason::kUnknown, kMarkContainerChain); } } for (SVGElement* element : elements_with_relative_lengths_) { if (element != this) - element->InvalidateRelativeLengthClients(layout_scope); + element->InvalidateRelativeLengthClients(); } }
diff --git a/third_party/blink/renderer/core/svg/svg_element.h b/third_party/blink/renderer/core/svg/svg_element.h index 81c70ef..7c0dc3e 100644 --- a/third_party/blink/renderer/core/svg/svg_element.h +++ b/third_party/blink/renderer/core/svg/svg_element.h
@@ -42,7 +42,6 @@ class ElementSMILAnimations; class ExecutionContext; class SVGAnimatedPropertyBase; -class SubtreeLayoutScope; class SVGAnimatedString; class SVGElement; class SVGElementRareData; @@ -179,7 +178,7 @@ virtual void BuildPendingResource() {} virtual bool HaveLoadedRequiredResources(); - void InvalidateRelativeLengthClients(SubtreeLayoutScope* = nullptr); + void InvalidateRelativeLengthClients(); void AddToPropertyMap(SVGAnimatedPropertyBase*);
diff --git a/third_party/blink/renderer/platform/graphics/bitmap_image.cc b/third_party/blink/renderer/platform/graphics/bitmap_image.cc index 642ec90..4e57890 100644 --- a/third_party/blink/renderer/platform/graphics/bitmap_image.cc +++ b/third_party/blink/renderer/platform/graphics/bitmap_image.cc
@@ -142,13 +142,11 @@ SkGainmapInfo gainmap_info; if (decoder_->CreateGainmapGenerator(gainmap_generator, gainmap_info)) { DCHECK(gainmap_generator); - return builder - .set_gainmap_paint_image_generator(std::move(gainmap_generator), - gainmap_info) - .TakePaintImage(); - } else { - return builder.TakePaintImage(); + builder = builder.set_gainmap_paint_image_generator( + std::move(gainmap_generator), gainmap_info); } + + return builder.TakePaintImage(); } void BitmapImage::UpdateSize() const {
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc index afbf95c..e8e0ce6 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
@@ -1102,6 +1102,19 @@ return true; } +uint32_t PaintArtifactCompositor::GetMainThreadScrollingReasons( + const ScrollPaintPropertyNode& scroll) const { + if (!RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()) { + return scroll.GetMainThreadScrollingReasons(); + } + CHECK(root_layer_); + if (!root_layer_->layer_tree_host()) { + return 0; + } + return PropertyTreeManager::GetMainThreadScrollingReasons( + *root_layer_->layer_tree_host(), scroll); +} + void PaintArtifactCompositor::SetLayerDebugInfoEnabled(bool enabled) { if (enabled == layer_debug_info_enabled_) return;
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h index 0ea2854..0056b14 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
@@ -205,6 +205,8 @@ bool DirectlySetScrollOffset(CompositorElementId, const gfx::PointF& scroll_offset); + uint32_t GetMainThreadScrollingReasons(const ScrollPaintPropertyNode&) const; + // The root layer of the tree managed by this object. cc::Layer* RootLayer() const { return root_layer_.get(); }
diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc index ea896d6..121ec17 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
@@ -220,6 +220,33 @@ } } +static uint32_t NonCompositedMainThreadScrollingReasons( + const ScrollPaintPropertyNode& scroll) { + DCHECK(RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()); + // TODO(crbug.com/1414885): We can't distinguish kNotOpaqueForTextAndLCDText + // and kCantPaintScrollingBackgroundAndLCDText here. We should probably + // merge the two reasons for CompositeScrollAfterPaint. + return scroll.GetCompositedScrollingPreference() == + CompositedScrollingPreference::kNotPreferred + ? cc::MainThreadScrollingReason::kPreferNonCompositedScrolling + : cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText; +} + +uint32_t PropertyTreeManager::GetMainThreadScrollingReasons( + const cc::LayerTreeHost& host, + const ScrollPaintPropertyNode& scroll) { + DCHECK(RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled()); + const auto* property_trees = host.property_trees(); + const auto* cc_scroll = property_trees->scroll_tree().Node( + scroll.CcNodeId(property_trees->sequence_number())); + if (!cc_scroll) { + DCHECK(!base::FeatureList::IsEnabled(features::kScrollUnification)); + return scroll.GetMainThreadScrollingReasons() | + NonCompositedMainThreadScrollingReasons(scroll); + } + return cc_scroll->main_thread_scrolling_reasons; +} + void PropertyTreeManager::EnsureCompositorScrollTranslationNodes( const Vector<const TransformPaintPropertyNode*>& scroll_translation_nodes) { DCHECK(base::FeatureList::IsEnabled(features::kScrollUnification)); @@ -601,8 +628,6 @@ compositor_node.max_scroll_offset_affected_by_page_scale = scroll_node.MaxScrollOffsetAffectedByPageScale(); - compositor_node.main_thread_scrolling_reasons = - scroll_node.GetMainThreadScrollingReasons(); compositor_node.overscroll_behavior = cc::OverscrollBehavior(static_cast<cc::OverscrollBehavior::Type>( scroll_node.OverscrollBehaviorX()), @@ -620,16 +645,12 @@ scroll_translation_node.CcNodeId(new_sequence_number_); compositor_node.is_composited = client_.NeedsCompositedScrolling(scroll_translation_node); + compositor_node.main_thread_scrolling_reasons = + scroll_node.GetMainThreadScrollingReasons(); if (RuntimeEnabledFeatures::CompositeScrollAfterPaintEnabled() && !compositor_node.is_composited) { - // TODO(crbug.com/1414885): We can't distinguish kNotOpaqueForTextAndLCDText - // and kCantPaintScrollingBackgroundAndLCDText here. We should probably - // merge the two reasons for CompositeScrollAfterPaint. compositor_node.main_thread_scrolling_reasons |= - scroll_node.GetCompositedScrollingPreference() == - CompositedScrollingPreference::kNotPreferred - ? cc::MainThreadScrollingReason::kPreferNonCompositedScrolling - : cc::MainThreadScrollingReason::kNotOpaqueForTextAndLCDText; + NonCompositedMainThreadScrollingReasons(scroll_node); } scroll_node.SetCcNodeId(new_sequence_number_, id);
diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h index 137df80..42d78f4 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h +++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.h
@@ -153,6 +153,9 @@ CompositorElementId, const gfx::PointF&); + static uint32_t GetMainThreadScrollingReasons(const cc::LayerTreeHost&, + const ScrollPaintPropertyNode&); + // Ensures cc::ScrollNodes and cc::TransformNodes for all scroll translations. void EnsureCompositorScrollTranslationNodes( const Vector<const TransformPaintPropertyNode*>&
diff --git a/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc b/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc index 2d794ea..3bdcddd 100644 --- a/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc +++ b/third_party/blink/renderer/platform/graphics/deferred_image_decoder_test.cc
@@ -311,7 +311,7 @@ PaintImage image = CreatePaintImage(); ASSERT_TRUE(image); EXPECT_FALSE(lazy_decoder_->FrameIsReceivedAtIndex(0)); - // Anything <= 10ms is clamped to 100ms. See the implementaiton for details. + // Anything <= 10ms is clamped to 100ms. See the implementation for details. EXPECT_EQ(base::Milliseconds(100), lazy_decoder_->FrameDurationAtIndex(0)); frame_count_ = 2;
diff --git a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h index 1142a7c..ca5b75d7 100644 --- a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h +++ b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h
@@ -168,7 +168,8 @@ return state_.composited_scrolling_preference; } - // Return reason bitfield with values from cc::MainThreadScrollingReason. + // Note that this doesn't include non-composited main-thread scrolling + // reasons in CompositeScrollAfterPaint. MainThreadScrollingReasons GetMainThreadScrollingReasons() const { return state_.main_thread_scrolling_reasons; }
diff --git a/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.cc b/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.cc index 94a1d42..3ba8938 100644 --- a/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.cc +++ b/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.cc
@@ -48,6 +48,7 @@ #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h" #include "third_party/blink/renderer/platform/runtime_enabled_features.h" #include "third_party/skia/include/core/SkColorSpace.h" +#include "third_party/skia/include/private/SkJpegMetadataDecoder.h" extern "C" { #include <stdio.h> // jpeglib.h needs stdio FILE. @@ -308,8 +309,11 @@ // Retain ICC color profile markers for color management. setup_read_icc_profile(&info_); - // Keep APP1 blocks, for obtaining exif data. - jpeg_save_markers(&info_, kExifMarker, 0xFFFF); + // Keep APP1 blocks, for obtaining exif and XMP data. + jpeg_save_markers(&info_, JPEG_APP0 + 1, 0xFFFF); + + // Keep APP2 blocks, for obtaining ICC and MPF data. + jpeg_save_markers(&info_, JPEG_APP0 + 2, 0xFFFF); } JPEGImageReader(const JPEGImageReader&) = delete; @@ -967,6 +971,51 @@ return supported_decode_sizes_; } +bool JPEGImageDecoder::GetGainmapInfoAndData( + SkGainmapInfo& out_gainmap_info, + scoped_refptr<SegmentReader>& out_gainmap_reader) const { + if (!reader_) { + return false; + } + + // Extract the segments (including parameters) and create an + // SkJpegMetadataDecoder to use to examine gainmap capabilities. + std::vector<SkJpegMetadataDecoder::Segment> segments; + if (jpeg_decompress_struct* info = reader_->Info()) { + for (auto* marker = info->marker_list; marker; marker = marker->next) { + segments.emplace_back( + marker->marker, + SkData::MakeWithoutCopy(marker->data, marker->data_length)); + } + } else { + return false; + } + auto metadata = SkJpegMetadataDecoder::Make(std::move(segments)); + if (!metadata) { + return false; + } + + // TODO(https://crbug.com/1404000): Add an early-out that uses only + // `segments` to determine if a gainmap is guaranteed to not be present. + auto base_image_data = data_->GetAsSkData(); + DCHECK(base_image_data); + + // Extract the SkGainmapInfo and the encoded gainmap image and return them. + // TODO(https://crbug.com/1404000): Rather than extract an SkData, extract + // the offsets and sizes of the subsets of `base_image_data`, and reference + // these directly. + sk_sp<SkData> gainmap_image_data; + SkGainmapInfo gainmap_info; + if (!metadata->findGainmapImage(base_image_data, gainmap_image_data, + gainmap_info)) { + return false; + } + out_gainmap_info = gainmap_info; + out_gainmap_reader = + SegmentReader::CreateFromSkData(std::move(gainmap_image_data)); + return true; +} + gfx::Size JPEGImageDecoder::GetImageCodedSize() const { // We use the |max_{h,v}_samp_factor|s returned by // AreValidSampleFactorsAvailable() since the ones available via
diff --git a/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.h b/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.h index ba19acaa..c1add0c 100644 --- a/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.h +++ b/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.h
@@ -56,6 +56,9 @@ void DecodeToYUV() override; SkYUVColorSpace GetYUVColorSpace() const override; Vector<SkISize> GetSupportedDecodeSizes() const override; + bool GetGainmapInfoAndData( + SkGainmapInfo& outGainmapInfo, + scoped_refptr<SegmentReader>& outGainmapData) const override; bool HasImagePlanes() const { return image_planes_.get(); }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index 92334d4..0700e6a 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -780,7 +780,7 @@ }, { name: "CSSDisplayAnimation", - status: "experimental", + status: "stable", }, { // crbug.com/995106 @@ -2978,7 +2978,7 @@ }, { name: "ScrollEndEvents", - status: "experimental", + status: "stable", }, { name: "ScrollTimeline",
diff --git a/third_party/blink/renderer/platform/testing/paint_test_configurations.h b/third_party/blink/renderer/platform/testing/paint_test_configurations.h index cd1c2d2..d3647ca 100644 --- a/third_party/blink/renderer/platform/testing/paint_test_configurations.h +++ b/third_party/blink/renderer/platform/testing/paint_test_configurations.h
@@ -65,11 +65,11 @@ // // TODO(crbug.com/1414885): Fix this test. // return; // } -#define INSTANTIATE_PAINT_TEST_SUITE_P(test_class) \ - INSTANTIATE_TEST_SUITE_P( \ - All, test_class, \ - ::testing::Values(0, kScrollUnification, kSolidColorLayers, \ - kScrollUnification | kCompositeScrollAfterPaint, \ +#define INSTANTIATE_PAINT_TEST_SUITE_P(test_class) \ + INSTANTIATE_TEST_SUITE_P( \ + All, test_class, \ + ::testing::Values(0, kScrollUnification, kSolidColorLayers, \ + kCompositeScrollAfterPaint, \ kUsedColorSchemeRootScrollbars)) } // namespace blink
diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc index 77624a8..3ebaee0 100644 --- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc +++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc
@@ -194,10 +194,6 @@ const base::CommandLine& cmd = *base::CommandLine::ForCurrentProcess(); cc::LayerTreeSettings settings; - settings.skip_commits_if_not_synchronizing_compositor_state = - base::FeatureList::IsEnabled( - ::features::kSkipCommitsIfNotSynchronizingCompositorState) && - !RuntimeEnabledFeatures::ViewTransitionEnabled(); settings.enable_synchronized_scrolling = base::FeatureList::IsEnabled(::features::kSynchronizedScrolling); Platform* platform = Platform::Current();
diff --git a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc index 83b52be..5f0de34 100644 --- a/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc +++ b/third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
@@ -900,6 +900,18 @@ // main_thread_repaint_reasons instead of reasons_from_scroll_begin. reportable_reasons |= main_thread_repaint_reasons; + if (reportable_reasons && + !base::FeatureList::IsEnabled(::features::kScrollUnification)) { + // In pre-ScrollUnification, there may be non-composited scroll nodes that + // are ancestors of composited scroll nodes. Don't report non-composited + // main-thread scrolling reasons here because ScrollManager will report + // them. + reportable_reasons &= ~cc::MainThreadScrollingReason::kNonCompositedReasons; + if (!reportable_reasons) { + reportable_reasons = cc::MainThreadScrollingReason::kNoScrollingLayer; + } + } + RecordScrollReasonsMetric(device, reportable_reasons); }
diff --git a/third_party/blink/renderer/platform/widget/input/input_metrics.cc b/third_party/blink/renderer/platform/widget/input/input_metrics.cc index d24b68c..1b247f8b 100644 --- a/third_party/blink/renderer/platform/widget/input/input_metrics.cc +++ b/third_party/blink/renderer/platform/widget/input/input_metrics.cc
@@ -4,7 +4,9 @@ #include "third_party/blink/renderer/platform/widget/input/input_metrics.h" +#include "base/feature_list.h" #include "base/metrics/histogram_macros.h" +#include "cc/base/features.h" #include "cc/input/main_thread_scrolling_reason.h" #include "third_party/blink/public/common/input/web_gesture_device.h" @@ -37,8 +39,18 @@ } // Record the histogram for main-thread scrolls for any reason. - RecordOneScrollReasonMetric( - device, cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason); + if (!base::FeatureList::IsEnabled(::features::kScrollUnification) && + (reasons & cc::MainThreadScrollingReason::kNonCompositedReasons)) { + // In pre-ScrollUnification, for the same non-composited scroll, + // InputHandlerProxy reports reasons other than non-composited reasons, + // and ScrollManager reports non-composited reasons. This condition + // prevents kScrollingOnMainForAnyReason from being reported twice. + DCHECK_EQ(0u, + reasons & ~cc::MainThreadScrollingReason::kNonCompositedReasons); + } else { + RecordOneScrollReasonMetric( + device, cc::MainThreadScrollingReason::kScrollingOnMainForAnyReason); + } // The enum in cc::MainThreadScrollingReason simultaneously defines actual // bitmask values and indices into the bitmask, but kNotScrollingMain and
diff --git a/third_party/blink/tools/blinkpy/web_tests/controllers/single_test_runner.py b/third_party/blink/tools/blinkpy/web_tests/controllers/single_test_runner.py index 55ac6127..8dc1e76 100644 --- a/third_party/blink/tools/blinkpy/web_tests/controllers/single_test_runner.py +++ b/third_party/blink/tools/blinkpy/web_tests/controllers/single_test_runner.py
@@ -494,7 +494,7 @@ def _compare_text(self, expected_driver_output, driver_output): if expected_driver_output.text: - driver_output.test_type = 'text' + driver_output.test_type.add('text') if not expected_driver_output.text or not driver_output.text: return [] @@ -577,7 +577,7 @@ def _compare_audio(self, expected_driver_output, driver_output): if expected_driver_output.audio: - driver_output.test_type = 'audio' + driver_output.test_type.add('audio') if not expected_driver_output.audio or not driver_output.audio: return [] if self._port.do_audio_results_differ(expected_driver_output.audio, @@ -600,7 +600,7 @@ def _compare_image(self, expected_driver_output, driver_output): if expected_driver_output.image and expected_driver_output.image_hash: - driver_output.test_type = 'image' + driver_output.test_type.add('image') if not expected_driver_output.image or not expected_driver_output.image_hash: return [] # The presence of an expected image, but a lack of an outputted image @@ -721,8 +721,7 @@ break assert expected_output - # TODO(crbug.com/1396136): Update the test_type to use a string array. - test_output.test_type = 'image' + test_output.test_type.add('image') # Combine compare_text_result and test_result expected_output.text = expected_text_output.text
diff --git a/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink.py b/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink.py index a9022525..fcaf6d08 100644 --- a/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink.py +++ b/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink.py
@@ -147,8 +147,8 @@ pair('web_tests_image_diff_total_pixels', str(result.image_diff_stats['totalPixels']))) - if result.test_type: - tags.append(pair('web_tests_test_type', str(result.test_type))) + for test_type_str in sorted(result.test_type): + tags.append(pair('web_tests_test_type', test_type_str)) for used_file in self._port.used_expectations_files(): tags.append(
diff --git a/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink_unittest.py b/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink_unittest.py index a370549..b98b61ca 100644 --- a/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink_unittest.py +++ b/third_party/blink/tools/blinkpy/web_tests/controllers/test_result_sink_unittest.py
@@ -286,7 +286,7 @@ self.assertEqual(sent_data['tags'], expected_tags) def test_sink_with_test_type(self): - actual_test_type = 'image' + actual_test_type = {'image', 'text'} tr = test_results.TestResult(test_name='test-name', test_type=actual_test_type) tr.type = ResultType.Crash @@ -316,6 +316,10 @@ 'value': 'image' }, { + 'key': 'web_tests_test_type', + 'value': 'text' + }, + { 'key': 'web_tests_used_expectations_file', 'value': 'TestExpectations', },
diff --git a/third_party/blink/tools/blinkpy/web_tests/models/test_results.py b/third_party/blink/tools/blinkpy/web_tests/models/test_results.py index a3d885b3..de0c412 100644 --- a/third_party/blink/tools/blinkpy/web_tests/models/test_results.py +++ b/third_party/blink/tools/blinkpy/web_tests/models/test_results.py
@@ -80,7 +80,7 @@ self.retry_attempt = retry_attempt self.command = command self.image_diff_stats = image_diff_stats - self.test_type = test_type + self.test_type = test_type or set() results = set([f.result for f in self.failures] or [ResultType.Pass]) assert len(results) <= 2, (
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/driver.py b/third_party/blink/tools/blinkpy/web_tests/port/driver.py index 63b5066..5de6cc4 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/driver.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/driver.py
@@ -150,7 +150,7 @@ self.error = error # stderr output self.pid = pid self.command = command - self.test_type = None + self.test_type = set() def has_stderr(self): return bool(self.error)
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 55333a9..f0432e3 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -2951,6 +2951,8 @@ crbug.com/626703 [ Linux ] virtual/attribution-reporting-debug-mode/wpt_internal/attribution-reporting/source-registration.sub.https.html?method=a&eligible [ Skip Timeout ] crbug.com/626703 [ Mac13 ] virtual/attribution-reporting-debug-mode/wpt_internal/attribution-reporting/source-registration.sub.https.html?method=a&eligible [ Skip Timeout ] crbug.com/626703 [ Mac12 ] virtual/attribution-reporting-debug-mode/wpt_internal/attribution-reporting/source-registration.sub.https.html?method=a&eligible [ Skip Timeout ] +crbug.com/1434368 [ Mac11 ] virtual/attribution-reporting-debug-mode/wpt_internal/attribution-reporting/source-registration.sub.https.html?method=a&eligible [ Skip Timeout ] +crbug.com/1434368 [ Win10.20h2 ] virtual/attribution-reporting-debug-mode/wpt_internal/attribution-reporting/source-registration.sub.https.html?method=a&eligible [ Skip Timeout ] crbug.com/626703 [ Linux ] external/wpt/font-access/font_access_query_select.tentative.https.window.html [ Timeout ] crbug.com/626703 [ Mac10.15 ] external/wpt/font-access/font_access_query_select.tentative.https.window.html [ Timeout ] crbug.com/626703 [ Linux ] external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.html [ Timeout ]
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js index 4af3d01..17f3ade 100644 --- a/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js +++ b/third_party/blink/web_tests/external/wpt/bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js
@@ -7,7 +7,7 @@ const expected = new DOMException( 'GATT Characteristic no longer exists.', 'InvalidStateError'); -bluetooth_test(async () => { +bluetooth_test_crbug1430625(async () => { console.log('[crbug.com/1430625] To getMeasurementIntervalCharacteristic'); const {characteristic, fake_characteristic} = await getMeasurementIntervalCharacteristic();
diff --git a/third_party/blink/web_tests/external/wpt/bluetooth/resources/bluetooth-test.js b/third_party/blink/web_tests/external/wpt/bluetooth/resources/bluetooth-test.js index 7ad1b93..7852aad 100644 --- a/third_party/blink/web_tests/external/wpt/bluetooth/resources/bluetooth-test.js +++ b/third_party/blink/web_tests/external/wpt/bluetooth/resources/bluetooth-test.js
@@ -89,6 +89,25 @@ }, name, properties); } +function bluetooth_test_crbug1430625( + test_function, name, properties, validate_response_consumed = true) { +return promise_test(async (t) => { + assert_implements(navigator.bluetooth, 'missing navigator.bluetooth'); + // Trigger Chromium-specific setup. + await performChromiumSetup(); + assert_implements( + navigator.bluetooth.test, 'missing navigator.bluetooth.test'); + console.log('[crbug.com/1430625] To test_function'); + await test_function(t); + if (validate_response_consumed) { + console.log('[crbug.com/1430625] To wait allResponsesConsumed'); + let consumed = await navigator.bluetooth.test.allResponsesConsumed(); + assert_true(consumed); + } + console.log('[crbug.com/1430625] End'); +}, name, properties); +} + /** * Test Helpers */
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-move-documents.html b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-move-documents.html new file mode 100644 index 0000000..2ead18a --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-move-documents.html
@@ -0,0 +1,67 @@ +<!DOCTYPE html> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=help href="https://github.com/whatwg/html/issues/9177"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<iframe id=myframe srcdoc="<p>iframe</p>"></iframe> +<div id=p1 popover=auto>p1</div> +<script> +test(() => { + p1.addEventListener('beforetoggle', () => { + myframe.contentWindow.document.body.appendChild(p1); + }); + assert_throws_dom('InvalidStateError', () => p1.showPopover()); +}, 'Moving popovers between documents while showing should throw an exception.'); +</script> + +<iframe id=myframe2 srcdoc="<p>iframe</p>"></iframe> +<div id=p2 popover=auto>p2</div> +<script> +test(() => { + const p2 = document.getElementById('p2'); + p2.showPopover(); + p2.addEventListener('beforetoggle', () => { + myframe2.contentWindow.document.body.appendChild(p2); + }); + assert_true(p2.matches(':popover-open'), + 'The popover should be open after calling showPopover()'); + + p2.hidePopover(); + assert_false(p2.matches(':popover-open'), + 'The popover should be closed after moving it between documents.'); +}, 'Moving popovers between documents while hiding should not throw an exception.'); +</script> + +<iframe id=myframe3 srcdoc="<p>iframe</p>"></iframe> +<div id=p3 popover=auto> + p3 + <div id=p4 popover=auto>p4</div> + <div id=p5 popover=auto>p5</div> +</div> +<script> +test(() => { + p3.showPopover(); + p4.showPopover(); + p4.addEventListener('beforetoggle', event => { + if (event.newState === 'closed') { + assert_true(p3.matches(':popover-open'), + 'p3 should be showing in the event handler.'); + assert_true(p4.matches(':popover-open'), + 'p4 should be showing in the event handler.'); + assert_equals(event.target, p4, + 'The events target should be p4.'); + myframe3.contentWindow.document.body.appendChild(p5); + } + }); + assert_true(p3.matches(':popover-open'), + 'p3 should be open after calling showPopover on it.'); + assert_true(p4.matches(':popover-open'), + 'p4 should be open after calling showPopover on it.'); + + const p5 = document.getElementById('p5'); + assert_throws_dom('InvalidStateError', () => p5.showPopover()); + assert_false(p5.matches(':popover-open'), + 'p5 should be closed after moving it between documents.'); +}, 'Moving popovers between documents during light dismiss should throw an exception.'); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/lint.ignore b/third_party/blink/web_tests/external/wpt/lint.ignore index ebc25c5e..762fbb1 100644 --- a/third_party/blink/web_tests/external/wpt/lint.ignore +++ b/third_party/blink/web_tests/external/wpt/lint.ignore
@@ -454,6 +454,7 @@ CONSOLE: css/css-writing-modes/orthogonal-parent-shrink-to-fit-001*.html CONSOLE: css/css-writing-modes/tools/generators/template.html CONSOLE: bluetooth/characteristic/readValue/characteristic-is-removed.https.window.js +CONSOLE: bluetooth/resources/bluetooth-test.js TRAILING WHITESPACE: css/css-fonts/support/fonts/gsubtest-lookup3.ufo/features.fea
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt index ede7d19a..efac455 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
@@ -178,6 +178,7 @@ PASS oldChildWindow.onreset is newChildWindow.onreset PASS oldChildWindow.onresize is newChildWindow.onresize PASS oldChildWindow.onscroll is newChildWindow.onscroll +PASS oldChildWindow.onscrollend is newChildWindow.onscrollend PASS oldChildWindow.onsearch is newChildWindow.onsearch PASS oldChildWindow.onsecuritypolicyviolation is newChildWindow.onsecuritypolicyviolation PASS oldChildWindow.onseeked is newChildWindow.onseeked
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt index 685ee11..c1d9793 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
@@ -130,6 +130,7 @@ PASS childWindow.onreset is null PASS childWindow.onresize is null PASS childWindow.onscroll is null +PASS childWindow.onscrollend is null PASS childWindow.onsearch is null PASS childWindow.onsecuritypolicyviolation is null PASS childWindow.onseeked is null
diff --git a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt index 37dd0e4..285d32b 100644 --- a/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
@@ -130,6 +130,7 @@ PASS childWindow.onreset is null PASS childWindow.onresize is null PASS childWindow.onscroll is null +PASS childWindow.onscrollend is null PASS childWindow.onsearch is null PASS childWindow.onsecuritypolicyviolation is null PASS childWindow.onseeked is null
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt index c07f07cd..fe34529 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/element-instance-property-listing-expected.txt
@@ -239,6 +239,7 @@ property onreset property onresize property onscroll + property onscrollend property onsearch property onsecuritypolicyviolation property onseeked @@ -1422,6 +1423,7 @@ property onreset property onresize property onscroll + property onscrollend property onsearch property onsecuritypolicyviolation property onseeked
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index 181658a..4597dd5 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -1529,6 +1529,7 @@ getter onresize getter onresume getter onscroll + getter onscrollend getter onsearch getter onsecuritypolicyviolation getter onseeked @@ -1737,6 +1738,7 @@ setter onresize setter onresume setter onscroll + setter onscrollend setter onsearch setter onsecuritypolicyviolation setter onseeked @@ -3146,6 +3148,7 @@ getter onreset getter onresize getter onscroll + getter onscrollend getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -3276,6 +3279,7 @@ setter onreset setter onresize setter onscroll + setter onscrollend setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -5008,6 +5012,7 @@ getter onreset getter onresize getter onscroll + getter onscrollend getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -5116,6 +5121,7 @@ setter onreset setter onresize setter onscroll + setter onscrollend setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -7064,6 +7070,7 @@ getter onreset getter onresize getter onscroll + getter onscrollend getter onsecuritypolicyviolation getter onseeked getter onseeking @@ -7174,6 +7181,7 @@ setter onreset setter onresize setter onscroll + setter onscrollend setter onsecuritypolicyviolation setter onseeked setter onseeking @@ -11177,6 +11185,7 @@ getter onreset getter onresize getter onscroll + getter onscrollend getter onsearch getter onsecuritypolicyviolation getter onseeked @@ -11391,6 +11400,7 @@ setter onreset setter onresize setter onscroll + setter onscrollend setter onsearch setter onsecuritypolicyviolation setter onseeked
diff --git a/third_party/gvr-android-sdk/display_synchronizer_jni.h b/third_party/gvr-android-sdk/display_synchronizer_jni.h index f28862a..b285b0b8 100644 --- a/third_party/gvr-android-sdk/display_synchronizer_jni.h +++ b/third_party/gvr-android-sdk/display_synchronizer_jni.h
@@ -8,7 +8,7 @@ // com/google/vr/cardboard/DisplaySynchronizer // Local modification includes: -// 1. Remove all implementaiton, only keep definition. +// 1. Remove all implementation, only keep definition. // 2. Use absolute path instead of relative path. // 3. Removed all helper functions such as: Create. // 4. Added function RegisterDisplaySynchronizerNatives at the end of this file.
diff --git a/third_party/gvr-android-sdk/gvr_api_jni.h b/third_party/gvr-android-sdk/gvr_api_jni.h index 5c6c69f..f0c8135 100644 --- a/third_party/gvr-android-sdk/gvr_api_jni.h +++ b/third_party/gvr-android-sdk/gvr_api_jni.h
@@ -8,7 +8,7 @@ // com/google/vr/ndk/base/GvrApi // Local modification includes: -// 1. Remove all implementaiton, only keep definition. +// 1. Remove all implementation, only keep definition. // 2. Use absolute path instead of relative path. // 3. Removed all helper functions such as: Create. // 4. Removed external functions that don't have implementation in shim file.
diff --git a/third_party/gvr-android-sdk/native_callbacks_jni.h b/third_party/gvr-android-sdk/native_callbacks_jni.h index 247ef58..a899366e 100644 --- a/third_party/gvr-android-sdk/native_callbacks_jni.h +++ b/third_party/gvr-android-sdk/native_callbacks_jni.h
@@ -8,7 +8,7 @@ // com/google/vr/internal/controller/NativeCallbacks // Local modification includes: -// 1. Remove all implementaiton, only keep definition. +// 1. Remove all implementation, only keep definition. // 2. Use absolute path instead of relative path. // 3. Removed all helper functions such as: Create. // 4. Removed external functions that don't have implementation in shim file.
diff --git a/third_party/gvr-android-sdk/proguard-gvr-chromium.txt b/third_party/gvr-android-sdk/proguard-gvr-chromium.txt index 495d836..c9e4cf6e 100644 --- a/third_party/gvr-android-sdk/proguard-gvr-chromium.txt +++ b/third_party/gvr-android-sdk/proguard-gvr-chromium.txt
@@ -1,2 +1,7 @@ -dontwarn com.google.common.logging.nano.Vr$** -dontwarn com.google.vr.** + +# Since we manually register, we need to keep every native method. +-keepclasseswithmembers,includedescriptorclasses class com.google.vr.** { + native <methods>; +}
diff --git a/third_party/nearby/BUILD.gn b/third_party/nearby/BUILD.gn index b5ca924..d10bb66 100644 --- a/third_party/nearby/BUILD.gn +++ b/third_party/nearby/BUILD.gn
@@ -491,6 +491,7 @@ ] public_deps = [ ":platform_base", + "//crypto:crypto", "//third_party/abseil-cpp:absl", ] configs -= [ "//build/config/compiler:chromium_code" ] @@ -872,6 +873,7 @@ ":presence_ldt_stub", ":presence_mediums", ":presence_types", + "//crypto:crypto", "//third_party/abseil-cpp:absl", "//third_party/boringssl:boringssl", ]
diff --git a/third_party/nearby/README.chromium b/third_party/nearby/README.chromium index aad0028..f49b4ce 100644 --- a/third_party/nearby/README.chromium +++ b/third_party/nearby/README.chromium
@@ -1,7 +1,7 @@ Name: Nearby Connections Library Short Name: Nearby URL: https://github.com/google/nearby -Version: 6cdc9890b5f83ff731a6363a785272bd1a75f87e +Version: c40e0112672b28ef87b67f69cc4189a9434c3d47 License: Apache 2.0 License File: LICENSE Security Critical: yes
diff --git a/third_party/updater/chromium_linux64/3pp/3pp.pb b/third_party/updater/chromium_linux64/3pp/3pp.pb new file mode 100644 index 0000000..1bf6f45 --- /dev/null +++ b/third_party/updater/chromium_linux64/3pp/3pp.pb
@@ -0,0 +1,14 @@ +create { + source { + script { name: "fetch.py" } + unpack_archive: true + no_archive_prune: true + } + build { + } +} + +upload { + universal: true + pkg_prefix: "chromium/third_party/updater" +}
diff --git a/third_party/updater/chromium_linux64/3pp/fetch.py b/third_party/updater/chromium_linux64/3pp/fetch.py new file mode 100755 index 0000000..304b634 --- /dev/null +++ b/third_party/updater/chromium_linux64/3pp/fetch.py
@@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import argparse +import functools +import json +import math +import os +import sys +import urllib.request + +# MIN_VERSION is the earliest working version of the updater for self-update +# testing. If a backwards-incompatible change to the updater is made, it may be +# necessary to increase the version. +MIN_VERSION = 1132112 + +def get_platform(): + return 'Linux_x64' + + +def int_or_inf(v): + try: + return int(v) + except ValueError: + return -float('inf') + + +def fetch(platform, minimum, minimum_lexographic): + """ + Queries GCS for versions and returns a tuple (min, max), where min is the + (numerically) lowest version greater than `minimum` returned by GCS, and + max is the greatest (lexographically) version returned by GCS. Because GCS + compares and returns items in lexographic order, GCS may return no eligible + min items. (For example, if minimum = 200, it could return 30, 31, 32...) + In this case, min will be float('inf') and the caller should query with max as + the new minimum_lexographic. + """ + return functools.reduce( + lambda a, b: (min(a[0], int(b)) if int_or_inf(b) > minimum else a[0], + max(a[1], b)), + map( + lambda s: s[len(platform) + 1:-1], + json.load( + urllib.request.urlopen( + 'https://storage.googleapis.com/storage/v1/b/' + 'chromium-browser-snapshots/o?prefix=%s%%2F&startOffset=%s' + '%%2F%s&fields=prefixes&delimiter=%%2F' % + (platform, platform, + minimum_lexographic)))['prefixes']), + (float('inf'), '')) + + +def find(platform, minimum, maximum): + """ + Returns a version from GCS closest to `minimum` but not more than `maximum` + for `platform`. May return maximum even if it does not exist in GCS. + """ + found_min = maximum + pivot = str(minimum) + while pivot < str(maximum): + found, pivot = fetch(platform, minimum, pivot) + found_min = min(found_min, found) + return found_min + + +def lastDatum(platform): + """ + Returns a version from GCS that only updates every n versions. + """ + latest = int( + urllib.request.urlopen( + 'https://storage.googleapis.com/storage/v1/b/' + 'chromium-browser-snapshots/o/%s%%2FLAST_CHANGE?alt=media' % platform).read()) + return max(MIN_VERSION, + find(platform, latest - latest % 1000, latest)) + + +def print_latest(): + print(lastDatum(get_platform())) + + +def get_url(): + print( + json.dumps({ + 'url': [ + 'https://storage.googleapis.com/storage/v1/b/' + 'chromium-browser-snapshots/o/%s%%2F%s%%2Fupdater.zip?alt=media' + % (get_platform(), os.environ['_3PP_VERSION']) + ], + 'ext': + '.zip', + 'name': ['updater.zip'] + })) + + +def main(): + ap = argparse.ArgumentParser() + sub = ap.add_subparsers() + sub.add_parser('latest').set_defaults(func=lambda _opts: print_latest()) + sub.add_parser('get_url').set_defaults(func=lambda _opts: get_url()) + opts = ap.parse_args() + return opts.func(opts) + + +if __name__ == '__main__': + sys.exit(main())
diff --git a/third_party/updater/chromium_linux64/3pp/install.sh b/third_party/updater/chromium_linux64/3pp/install.sh new file mode 100755 index 0000000..7e78b65 --- /dev/null +++ b/third_party/updater/chromium_linux64/3pp/install.sh
@@ -0,0 +1,14 @@ +#!/bin/bash +# Copyright 2021 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +set -e +set -x +set -o pipefail + +# An auto-created directory whose content will ultimately be uploaded to CIPD. +# The commands below should output the built product to this directory. +PREFIX="$1" + +mv updater_test "$PREFIX"
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index ce0efb1..a003971 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -661,10 +661,10 @@ 'chromium.perf': { 'Android Builder Perf': 'official_reclient_minimal_symbols_android', - 'Android arm64 Builder Perf': 'official_reclient_minimal_symbols_android_arm64', + 'Android arm64 Builder Perf': 'official_minimal_symbols_android_arm64', 'android-builder-perf': 'official_reclient_minimal_symbols_android', 'android-builder-perf-pgo': 'official_reclient_minimal_symbols_android_pgo', - 'android_arm64-builder-perf': 'official_reclient_minimal_symbols_android_arm64', + 'android_arm64-builder-perf': 'official_minimal_symbols_android_arm64', 'android_arm64-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_pgo', 'android_arm64_high_end-builder-perf': 'official_reclient_minimal_symbols_android_arm64_high_end', 'android_arm64_high_end-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_high_end_pgo', @@ -672,9 +672,9 @@ 'chromeos-amd64-generic-lacros-builder-perf': 'chromeos_amd64-generic_lacros_official_reclient', 'chromeos-arm-generic-lacros-builder-perf': 'chromeos_arm-generic_lacros_official_reclient', 'chromeos-arm64-generic-lacros-builder-perf': 'chromeos_arm64-generic_lacros_official_reclient', - 'linux-builder-perf': 'official_reclient_linux_perf', + 'linux-builder-perf': 'official_linux_perf', 'linux-builder-perf-pgo': 'official_reclient_linux_perf_pgo', - 'linux-builder-perf-rel': 'official_reclient_linux_perf', + 'linux-builder-perf-rel': 'official_linux_perf', 'mac-arm-builder-perf': 'official_reclient_mac_arm_perf', 'mac-arm-builder-perf-pgo': 'official_reclient_mac_arm_perf_pgo', 'mac-builder-perf': 'official_reclient_mac_perf', @@ -684,8 +684,8 @@ }, 'chromium.perf.calibration': { - 'android-pixel2-perf-calibration': 'official_goma_minimal_symbols_android_arm64', - 'linux-perf-calibration': 'official_goma_linux_perf', + 'android-pixel2-perf-calibration': 'official_minimal_symbols_android_arm64', + 'linux-perf-calibration': 'official_linux_perf', }, 'chromium.perf.fyi': { @@ -698,10 +698,10 @@ 'chromium.perf.pinpoint': { 'Android Builder Perf': 'official_reclient_minimal_symbols_android', - 'Android arm64 Builder Perf': 'official_reclient_minimal_symbols_android_arm64', + 'Android arm64 Builder Perf': 'official_minimal_symbols_android_arm64', 'android-builder-perf': 'official_reclient_minimal_symbols_android', 'android-builder-perf-pgo': 'official_reclient_minimal_symbols_android_pgo', - 'android_arm64-builder-perf': 'official_reclient_minimal_symbols_android_arm64', + 'android_arm64-builder-perf': 'official_minimal_symbols_android_arm64', 'android_arm64-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_pgo', 'android_arm64_high_end-builder-perf': 'official_reclient_minimal_symbols_android_arm64_high_end', 'android_arm64_high_end-builder-perf-pgo': 'official_reclient_minimal_symbols_android_arm64_high_end_pgo', @@ -709,9 +709,9 @@ 'chromeos-amd64-generic-lacros-builder-perf': 'chromeos_amd64-generic_lacros_official_reclient', 'chromeos-arm-generic-lacros-builder-perf': 'chromeos_arm-generic_lacros_official_reclient', 'chromeos-arm64-generic-lacros-builder-perf': 'chromeos_arm64-generic_lacros_official_reclient', - 'linux-builder-perf': 'official_reclient_linux_perf', + 'linux-builder-perf': 'official_linux_perf', 'linux-builder-perf-pgo': 'official_reclient_linux_perf_pgo', - 'linux-builder-perf-rel': 'official_reclient_linux_perf', + 'linux-builder-perf-rel': 'official_linux_perf', 'mac-arm-builder-perf': 'official_reclient_mac_arm_perf', 'mac-arm-builder-perf-pgo': 'official_reclient_mac_arm_perf_pgo', 'mac-builder-perf': 'official_reclient_mac_perf', @@ -1335,14 +1335,14 @@ 'tryserver.chromium.perf': { 'Android Compile Perf': 'official_goma_minimal_symbols_android', 'Android Compile Perf PGO': 'official_goma_minimal_symbols_android_pgo', - 'Android arm64 Compile Perf': 'official_goma_minimal_symbols_android_arm64', + 'Android arm64 Compile Perf': 'official_minimal_symbols_android_arm64', 'Android arm64 Compile Perf PGO': 'official_goma_minimal_symbols_android_arm64_pgo', 'Android arm64 High End Compile Perf': 'official_goma_minimal_symbols_android_arm64_high_end', 'Android arm64 High End Compile Perf PGO': 'official_goma_minimal_symbols_android_arm64_high_end_pgo', 'Chromeos Amd64 Generic Lacros Builder Perf': 'chromeos_amd64-generic_lacros_official', 'Fuchsia Builder Perf': 'official_goma_fuchsia_arm64_perf', 'Fuchsia Builder Perf x64': 'official_goma_fuchsia_x64_perf', - 'Linux Builder Perf': 'official_goma_linux_perf', + 'Linux Builder Perf': 'official_linux_perf', 'Linux Builder Perf PGO': 'official_goma_linux_perf_pgo', 'Mac Builder Perf': 'official_goma_mac_perf', 'Mac Builder Perf PGO': 'official_goma_mac_perf_pgo', @@ -3169,11 +3169,11 @@ ], 'official_android_arm32_pgo': [ - 'official', 'reclient', 'android', 'arm', 'minimal_symbols', 'no_default_afdo', 'pgo_phase_1', + 'official', 'reclient', 'android', 'arm', 'minimal_symbols', 'no_default_afdo', 'pgo_phase_1', 'stable_version_code', ], 'official_android_arm64_pgo': [ - 'official', 'reclient', 'android', 'arm64', 'minimal_symbols', 'no_default_afdo', 'pgo_phase_1', + 'official', 'reclient', 'android', 'arm64', 'minimal_symbols', 'no_default_afdo', 'pgo_phase_1', 'stable_version_code', ], 'official_celab_release_bot': [ @@ -3196,10 +3196,6 @@ 'official', 'goma', 'minimal_symbols', 'fuchsia', 'x64', 'ffmpeg_branding_chrome', 'proprietary_codecs', 'test_isolate_no_emulator', 'fuchsia_chrome' ], - 'official_goma_linux_perf': [ - 'official', 'goma', 'no_gnome_keyring', 'minimal_symbols', 'pgo_phase_0', - ], - 'official_goma_linux_perf_pgo': [ 'official', 'goma', 'no_gnome_keyring', 'minimal_symbols', ], @@ -3224,10 +3220,6 @@ 'official', 'goma', 'minimal_symbols', 'android', 'pgo_phase_0', 'no_default_afdo' ], - 'official_goma_minimal_symbols_android_arm64': [ - 'official', 'goma', 'minimal_symbols', 'android', 'arm64', 'pgo_phase_0', 'no_default_afdo' - ], - 'official_goma_minimal_symbols_android_arm64_high_end': [ 'official', 'goma', 'minimal_symbols', 'android', 'arm64', 'pgo_phase_0', 'no_default_afdo', 'android_high_end' ], @@ -3264,6 +3256,10 @@ 'official', 'release', 'lacros', 'arm-generic-crostoolchain', 'chromeos_device_reclient', 'no_symbols', 'cfi', 'pgo_phase_1', 'thin_lto' ], + 'official_linux_perf': [ + 'official', 'reclient', 'no_gnome_keyring', 'minimal_symbols', 'pgo_phase_0', + ], + 'official_linux_pgo': [ 'official', 'reclient', 'no_symbols', 'pgo_phase_1', 'release' ], @@ -3276,6 +3272,10 @@ 'official', 'reclient', 'no_widevine_cdm_host_verification', 'disable_widevine_signing', 'no_symbols', 'pgo_phase_1', 'release' ], + 'official_minimal_symbols_android_arm64': [ + 'official', 'reclient', 'minimal_symbols', 'android', 'arm64', 'pgo_phase_0', 'no_default_afdo' + ], + 'official_optimize_minimal_symbols_reclient': [ 'official_optimize_reclient', 'minimal_symbols', ], @@ -3304,9 +3304,6 @@ 'official', 'reclient', 'minimal_symbols', 'fuchsia', 'x64', 'ffmpeg_branding_chrome', 'proprietary_codecs', 'test_isolate_no_emulator', ], - 'official_reclient_linux_perf': [ - 'official', 'reclient', 'no_gnome_keyring', 'minimal_symbols', 'pgo_phase_0', - ], 'official_reclient_linux_perf_pgo': [ 'official', 'reclient', 'no_gnome_keyring', 'minimal_symbols', ], @@ -3338,10 +3335,6 @@ 'official', 'reclient', 'minimal_symbols', 'android', 'pgo_phase_0', 'no_default_afdo' ], - 'official_reclient_minimal_symbols_android_arm64': [ - 'official', 'reclient', 'minimal_symbols', 'android', 'arm64', 'pgo_phase_0', 'no_default_afdo' - ], - 'official_reclient_minimal_symbols_android_arm64_high_end': [ 'official', 'reclient', 'minimal_symbols', 'android', 'arm64', 'pgo_phase_0', 'no_default_afdo', 'android_high_end' ], @@ -4676,6 +4669,12 @@ 'gn_args': 'android_channel="stable"', }, + # Ensures we don't have mulitple versions of Trichrome Library installed on + # devices so as to not run out of disk space. + 'stable_version_code': { + 'gn_args': 'android_override_version_code="1234567890"', + }, + 'static': { 'gn_args': 'is_component_build=false', },
diff --git a/tools/mb/mb_config_expectations/chrome.pgo.json b/tools/mb/mb_config_expectations/chrome.pgo.json index 938f036..5650cb1 100644 --- a/tools/mb/mb_config_expectations/chrome.pgo.json +++ b/tools/mb/mb_config_expectations/chrome.pgo.json
@@ -1,6 +1,7 @@ { "android-arm32-pgo": { "gn_args": { + "android_override_version_code": "1234567890", "chrome_pgo_phase": 1, "clang_use_default_sample_profile": false, "debuggable_apks": false, @@ -17,6 +18,7 @@ }, "android-arm64-pgo": { "gn_args": { + "android_override_version_code": "1234567890", "chrome_pgo_phase": 1, "clang_use_default_sample_profile": false, "debuggable_apks": false,
diff --git a/tools/mb/mb_config_expectations/chromium.perf.calibration.json b/tools/mb/mb_config_expectations/chromium.perf.calibration.json index 02ef664..0a754fe 100644 --- a/tools/mb/mb_config_expectations/chromium.perf.calibration.json +++ b/tools/mb/mb_config_expectations/chromium.perf.calibration.json
@@ -12,7 +12,7 @@ "symbol_level": 1, "target_cpu": "arm64", "target_os": "android", - "use_goma": true + "use_remoteexec": true } }, "linux-perf-calibration": { @@ -23,7 +23,7 @@ "strip_absolute_paths_from_debug_symbols": true, "symbol_level": 1, "use_gnome_keyring": false, - "use_goma": true + "use_remoteexec": true } } } \ No newline at end of file
diff --git a/tools/mb/mb_config_expectations/tryserver.chrome.pgo.json b/tools/mb/mb_config_expectations/tryserver.chrome.pgo.json index 938f036..5650cb1 100644 --- a/tools/mb/mb_config_expectations/tryserver.chrome.pgo.json +++ b/tools/mb/mb_config_expectations/tryserver.chrome.pgo.json
@@ -1,6 +1,7 @@ { "android-arm32-pgo": { "gn_args": { + "android_override_version_code": "1234567890", "chrome_pgo_phase": 1, "clang_use_default_sample_profile": false, "debuggable_apks": false, @@ -17,6 +18,7 @@ }, "android-arm64-pgo": { "gn_args": { + "android_override_version_code": "1234567890", "chrome_pgo_phase": 1, "clang_use_default_sample_profile": false, "debuggable_apks": false,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.perf.json b/tools/mb/mb_config_expectations/tryserver.chromium.perf.json index 71c68b9a..9e43f36b 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.perf.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.perf.json
@@ -39,7 +39,7 @@ "symbol_level": 1, "target_cpu": "arm64", "target_os": "android", - "use_goma": true + "use_remoteexec": true } }, "Android arm64 Compile Perf PGO": { @@ -145,7 +145,7 @@ "strip_absolute_paths_from_debug_symbols": true, "symbol_level": 1, "use_gnome_keyring": false, - "use_goma": true + "use_remoteexec": true } }, "Linux Builder Perf PGO": {
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index ccd593c..074f78dd 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -29302,6 +29302,15 @@ </description> </action> +<action name="Settings.PrivacySandbox.RestrictedNotice.Acknowledged"> + <owner>djmitche@chromium.org</owner> + <owner>kartoffel-core@google.com</owner> + <owner>tommasin@chromium.org</owner> + <description> + User acknowledged the Restricted Privacy Sandbox notice. + </description> +</action> + <action name="Settings.PrivacySandbox.SpamFraud.Opened"> <owner>dullweber@google.com</owner> <owner>sauski@google.com</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 4dd73b5a..66de7cc 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -7342,6 +7342,12 @@ <int value="59" label="Suggestions shown and none had metadata"/> <int value="60" label="Selected card suggestion had metadata"/> <int value="61" label="Selected card suggestion did not have metadata"/> + <int value="64" + label="Suggestions shown and included a card with metadata (once)"/> + <int value="65" label="Suggestions shown and none had metadata (once)"/> + <int value="66" label="Selected card suggestion had metadata (once)"/> + <int value="67" + label="Selected card suggestion did not have metadata (once)"/> </enum> <enum name="AutofillFormSubmittedState"> @@ -63522,6 +63528,7 @@ label="GetDisplayMediaSetAutoSelectAllScreens:disabled"/> <int value="792307132" label="KeyboardBasedDisplayArrangementInSettings:enabled"/> + <int value="792840942" label="BorealisDGPU:enabled"/> <int value="792884862" label="EnableSharedImageForWebview:enabled"/> <int value="793287900" label="VerifyDidCommitParams:disabled"/> <int value="793816915" label="MessagesForAndroidPopupBlocked:disabled"/> @@ -63778,6 +63785,7 @@ <int value="948085015" label="WebFilterInterstitialRefresh:disabled"/> <int value="948351976" label="WallpaperWebUI:disabled"/> <int value="948521531" label="StylusHandwriting:disabled"/> + <int value="948682684" label="BorealisDGPU:disabled"/> <int value="951111587" label="MediaAppPhotosIntegrationVideo:disabled"/> <int value="951338017" label="SidePanelJourneysQueryless:enabled"/> <int value="952558794" label="enable-remote-assistance"/> @@ -94283,6 +94291,16 @@ <int value="2" label="App"/> </enum> +<enum name="SharingContentTypeAndroid"> + <int value="0" label="Unknown"/> + <int value="1" label="Text"/> + <int value="2" label="Text with link"/> + <int value="3" label="Link"/> + <int value="4" label="Image"/> + <int value="5" label="Image with link"/> + <int value="6" label="Files"/> +</enum> + <enum name="SharingDeviceRegistrationResult"> <int value="0" label="Operation is successful"/> <int value="1" label="Failed with Sync not ready"/>
diff --git a/tools/metrics/histograms/metadata/ash/histograms.xml b/tools/metrics/histograms/metadata/ash/histograms.xml index f97c97d2..baedccff 100644 --- a/tools/metrics/histograms/metadata/ash/histograms.xml +++ b/tools/metrics/histograms/metadata/ash/histograms.xml
@@ -3226,9 +3226,9 @@ </histogram> <histogram name="Ash.InteractiveWindowResize.TimeToPresent" units="ms" - expires_after="2023-06-01"> + expires_after="2024-04-16"> + <owner>xiyuan@chromium.org</owner> <owner>oshima@chromium.org</owner> - <owner>mukai@chromium.org</owner> <summary> Time between when the size of a window changes during an interactive window resize and the results are drawn (presented) on screen. This is recorded for @@ -3237,9 +3237,9 @@ </histogram> <histogram name="Ash.InteractiveWindowResize.TimeToPresent.MaxLatency" - units="ms" expires_after="2023-06-01"> + units="ms" expires_after="2024-04-16"> + <owner>xiyuan@chromium.org</owner> <owner>oshima@chromium.org</owner> - <owner>mukai@chromium.org</owner> <summary> Maximum time between when the size of a window changes during an interactive window resize and the results are drawn (presented) on screen. This is @@ -4312,23 +4312,23 @@ </histogram> <histogram base="true" name="Ash.Overview.WindowDrag.PresentationTime" - units="ms" expires_after="2023-05-30"> + units="ms" expires_after="2024-04-16"> <!-- Name completed by histogram_suffixes name="TabletOrClamshellMode" --> - <owner>omrilio@chromium.org</owner> - <owner>oshima@chromium.org</owner> + <owner>xdai@chromium.org</owner> + <owner>chromeos-wm-corexp@google.com</owner> <summary>Presentation time for dragging a window in overview mode.</summary> </histogram> <histogram base="true" name="Ash.Overview.WindowDrag.PresentationTime.MaxLatency" units="ms" - expires_after="2023-05-30"> + expires_after="2024-04-16"> <!-- Name completed by histogram_suffixes name="TabletOrClamshellMode" --> - <owner>omrilio@chromium.org</owner> - <owner>oshima@chromium.org</owner> + <owner>xdai@chromium.org</owner> + <owner>chromeos-wm-corexp@google.com</owner> <summary> Maximum latency of the presentation time for dragging a window in overview mode. @@ -4888,9 +4888,9 @@ </histogram> <histogram name="Ash.Rotation.AnimationSmoothness" units="%" - expires_after="2023-06-01"> - <owner>oshima@chromium.org</owner> - <owner>wutao@chromium.org</owner> + expires_after="2024-04-16"> + <owner>xiyuan@chromium.org</owner> + <owner>chromeos-perfmetrics-eng@google.com</owner> <summary> Relative smoothness of animations when rotating screen. 100% represents ideally smooth 60 frames per second. 50% represents only 30 frames per
diff --git a/tools/metrics/histograms/metadata/bluetooth/histograms.xml b/tools/metrics/histograms/metadata/bluetooth/histograms.xml index 9319fa94..195d4106 100644 --- a/tools/metrics/histograms/metadata/bluetooth/histograms.xml +++ b/tools/metrics/histograms/metadata/bluetooth/histograms.xml
@@ -69,7 +69,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.DeviceConnected.{ConnectionType}" - enum="BluetoothDeviceType" expires_after="2023-06-01"> + enum="BluetoothDeviceType" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -85,7 +85,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.DeviceDisconnect" - enum="BluetoothDeviceType" expires_after="2023-06-21"> + enum="BluetoothDeviceType" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>Emitted each time a Bluetooth device is disconnected.</summary> @@ -93,7 +93,7 @@ <histogram name="Bluetooth.ChromeOS.DeviceSelectionDuration{DeviceSelectionUISurfaces}" - units="ms" expires_after="2023-06-01"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -108,7 +108,7 @@ <histogram name="Bluetooth.ChromeOS.DeviceSelectionDuration{DeviceSelectionUISurfaces}.NotPaired{BluetoothTransportTypes}" - units="ms" expires_after="2023-06-01"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -122,7 +122,7 @@ <histogram name="Bluetooth.ChromeOS.DeviceSelectionDuration{DeviceSelectionUISurfaces}{BluetoothPairedStates}" - units="ms" expires_after="2023-06-01"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1566,7 +1566,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.Forget.Result" enum="ForgetResult" - expires_after="2023-08-20"> + expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>Emitted each time a device forget attempt completes.</summary> @@ -1574,7 +1574,7 @@ <histogram name="Bluetooth.ChromeOS.Pairing.Duration.Failure{BluetoothTransportTypes}" - units="ms" expires_after="2023-06-21"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1590,7 +1590,7 @@ <histogram name="Bluetooth.ChromeOS.Pairing.Duration.Success{BluetoothTransportTypes}" - units="ms" expires_after="2023-06-21"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1606,7 +1606,7 @@ <histogram name="Bluetooth.ChromeOS.Pairing.Result.FailureReason{BluetoothTransportTypes}" - enum="BluetoothConnectionFailureReason" expires_after="2023-06-01"> + enum="BluetoothConnectionFailureReason" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1624,7 +1624,7 @@ <histogram name="Bluetooth.ChromeOS.Pairing.Result.FilteredFailureReason{BluetoothTransportTypes}" - enum="BluetoothConnectionFailureReason" expires_after="2024-02-01"> + enum="BluetoothConnectionFailureReason" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1643,7 +1643,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.Pairing.Result{BluetoothTransportTypes}" - enum="BooleanSuccess" expires_after="2023-06-01"> + enum="BooleanSuccess" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1661,7 +1661,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.Pairing.TransportType" - enum="BluetoothTransportType" expires_after="2023-10-15"> + enum="BluetoothTransportType" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1672,7 +1672,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.PoweredState" enum="BooleanEnabled" - expires_after="2023-10-15"> + expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1683,7 +1683,7 @@ </histogram> <histogram name="Bluetooth.ChromeOS.PoweredState.{Operation}.Result" - enum="BooleanSuccess" expires_after="2023-06-21"> + enum="BooleanSuccess" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>Record emitted when an {Operation}.</summary> @@ -1695,14 +1695,14 @@ </histogram> <histogram name="Bluetooth.ChromeOS.SetNickname.Result" - enum="SetNicknameResult" expires_after="2023-08-20"> + enum="SetNicknameResult" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>Emitted each time a nickname change attempt completes.</summary> </histogram> <histogram name="Bluetooth.ChromeOS.UiSurfaceDisplayed" - enum="BluetoothUiSurface" expires_after="2023-08-20"> + enum="BluetoothUiSurface" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>Metric emmitted each time a UI surface is shown.</summary> @@ -1710,7 +1710,7 @@ <histogram name="Bluetooth.ChromeOS.UserInitiatedDisconnect.Result{BluetoothTransportTypes}" - enum="DisconnectResult" expires_after="2023-06-21"> + enum="DisconnectResult" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1724,7 +1724,7 @@ <histogram name="Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Duration.Failure{BluetoothTransportTypes}" - units="ms" expires_after="2023-06-21"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1738,7 +1738,7 @@ <histogram name="Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Duration.Success{BluetoothTransportTypes}" - units="ms" expires_after="2023-06-19"> + units="ms" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1752,7 +1752,7 @@ <histogram name="Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Result.FailureReason{UserInitiatedReconnectionUISurfaces}" - enum="BluetoothConnectionFailureReason" expires_after="2023-06-21"> + enum="BluetoothConnectionFailureReason" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary> @@ -1771,7 +1771,7 @@ <histogram name="Bluetooth.ChromeOS.UserInitiatedReconnectionAttempt.Result{UserInitiatedReconnectionUISurfaces}" - enum="BooleanSuccess" expires_after="2023-06-21"> + enum="BooleanSuccess" expires_after="2024-03-01"> <owner>khorimoto@chromium.org</owner> <owner>cros-connectivity@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/compositing/histograms.xml b/tools/metrics/histograms/metadata/compositing/histograms.xml index 1ba03c09..363a280 100644 --- a/tools/metrics/histograms/metadata/compositing/histograms.xml +++ b/tools/metrics/histograms/metadata/compositing/histograms.xml
@@ -1377,24 +1377,6 @@ </histogram> <histogram - name="Graphics.Smoothness.PerSession.95pctPercentDroppedFrames_1sWindow" - units="%" expires_after="2023-04-17"> - <owner>jonross@chromium.org</owner> - <owner>graphics-dev@chromium.org</owner> - <summary> - Tracks the 95th percentile of dropped frames percent of a sliding window of - 1 second. The metric is reported once per page-load when the page closes. If - there are fewer than 20 sliding windows for calculating 95th percentile, the - max value will be used instead of 95th percentile. - - PercentDroppedFrames is measured by tracking the number of frames which were - not displayed on screen out of the total number of frames expected to be - produced and displayed. In other words, the lower this number is, the - smoother experience. - </summary> -</histogram> - -<histogram name="Graphics.Smoothness.PerSession.MaxPercentDroppedFrames_1sWindow" units="%" expires_after="2023-06-11"> <owner>jonross@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/file/histograms.xml b/tools/metrics/histograms/metadata/file/histograms.xml index 91ef79c..8c2b2f8d 100644 --- a/tools/metrics/histograms/metadata/file/histograms.xml +++ b/tools/metrics/histograms/metadata/file/histograms.xml
@@ -67,7 +67,7 @@ </variants> <histogram name="DriveCommon.Lifecycle.FirstLaunchTime" units="ms" - expires_after="M112"> + expires_after="2024-04-18"> <owner>simmonsjosh@google.com</owner> <owner>src/ui/file_manager/OWNERS</owner> <summary> @@ -76,21 +76,21 @@ </histogram> <histogram name="DriveCommon.Lifecycle.Mount" enum="DriveMountStatus" - expires_after="2023-09-10"> + expires_after="2024-04-18"> <owner>simmonsjosh@google.com</owner> <owner>src/ui/file_manager/OWNERS</owner> <summary>Records outcomes of attempts to mount Google Drive.</summary> </histogram> <histogram name="DriveCommon.Lifecycle.MountTime" units="ms" - expires_after="M112"> + expires_after="2024-04-18"> <owner>simmonsjosh@google.com</owner> <owner>src/ui/file_manager/OWNERS</owner> <summary>How long did it take to mount Google Drive.</summary> </histogram> <histogram name="DriveCommon.Lifecycle.Unmount" enum="DriveMountStatus" - expires_after="M112"> + expires_after="2024-04-18"> <owner>simmonsjosh@google.com</owner> <owner>src/ui/file_manager/OWNERS</owner> <summary>Records outcomes of attempts to unmount Google Drive.</summary>
diff --git a/tools/metrics/histograms/metadata/history/histograms.xml b/tools/metrics/histograms/metadata/history/histograms.xml index 7981c75..681feb87 100644 --- a/tools/metrics/histograms/metadata/history/histograms.xml +++ b/tools/metrics/histograms/metadata/history/histograms.xml
@@ -306,6 +306,7 @@ <variant name="NetworkErrorLogging" summary="NetworkErrorLogging"/> <variant name="NetworkHistory" summary="NetworkHistory"/> <variant name="ReportingCache" summary="ReportingCache"/> + <variant name="SharedStorage" summary="SharedStorage"/> <variant name="StoragePartition" summary="StoragePartition"/> <variant name="Synchronous" summary="Synchronous"/> <variant name="TrustTokens" summary="TrustTokens"/>
diff --git a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml index dc13f8d..0850d54 100644 --- a/tools/metrics/histograms/metadata/safe_browsing/histograms.xml +++ b/tools/metrics/histograms/metadata/safe_browsing/histograms.xml
@@ -112,7 +112,7 @@ <histogram name="SafeBrowsing.Android.RealTimeAllowlist.ComponentUpdaterResultMatchesSBApiHandlerCheck" - enum="HighConfidenceUrlAllowlistCheckResults" expires_after="2023-04-20"> + enum="HighConfidenceUrlAllowlistCheckResults" expires_after="2023-05-20"> <owner>skrakowi@chromium.org</owner> <owner>chrome-counter-abuse-alerts@google.com</owner> <summary> @@ -300,6 +300,19 @@ </summary> </histogram> +<histogram name="SafeBrowsing.BrowserThrottle.RedirectedExtensionUrlScheme" + enum="SafeBrowsingUrlScheme" expires_after="2023-07-12"> + <owner>xinghuilu@chromium.org</owner> + <owner>chrome-counter-abuse-alerts@google.com</owner> + <summary> + Logs the scheme of the new URL that is redirected from a chrome-extension:// + URL. Logged each time browser URL loader throttle receives a redirect + request and the scheme of the original URL is chrome-extension://. This + histogram can help us determine if it is safe to skip chrome-extension:// + URLs when the request starts. + </summary> +</histogram> + <histogram name="SafeBrowsing.BrowserThrottle.RedirectedOriginalUrlScheme" enum="SafeBrowsingUrlScheme" expires_after="2023-07-12"> <owner>xinghuilu@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/sharing/histograms.xml b/tools/metrics/histograms/metadata/sharing/histograms.xml index f036335..6c54e013 100644 --- a/tools/metrics/histograms/metadata/sharing/histograms.xml +++ b/tools/metrics/histograms/metadata/sharing/histograms.xml
@@ -646,6 +646,20 @@ </summary> </histogram> +<histogram name="Sharing.{ShareSurface}.ShareContentType" + enum="SharingContentTypeAndroid" expires_after="2023-10-13"> + <owner>wenyufu@chromium.org</owner> + <owner>src/chrome/browser/share/OWNERS</owner> + <summary> + The content type being shared when using a share sheet. Recorded when share + is sent to share sheet for {ShareSurface}. Android only. + </summary> + <token key="ShareSurface"> + <variant name="DefaultSharesheetAndroid" summary="System share sheet"/> + <variant name="SharingHubAndroid" summary="Chrome's sharing hub"/> + </token> +</histogram> + </histograms> </histogram-configuration>
diff --git a/tools/metrics/histograms/metadata/storage/histograms.xml b/tools/metrics/histograms/metadata/storage/histograms.xml index 2693e314..c53ae87e 100644 --- a/tools/metrics/histograms/metadata/storage/histograms.xml +++ b/tools/metrics/histograms/metadata/storage/histograms.xml
@@ -350,6 +350,21 @@ </token> </histogram> +<histogram name="Storage.Buckets.BucketCount" units="buckets" + expires_after="2024-04-01"> + <owner>estade@chromium.org</owner> + <owner>chrome-owp-storage@google.com</owner> + <summary> + Counts the number of storage buckets in existence for a StorageKey when a + new one is created (including the new one). This is intended to give an idea + of the number of buckets individual apps use. Note: the count in histogram + bucket 1 correlates to the total number of sites that use the buckets API + (per Chrome client). The count in histogram bucket N, divided by the size of + the bucket, correlates to the number of sites for that Chrome client which + use at least that many buckets. + </summary> +</histogram> + <histogram name="Storage.Buckets.Parameters.Durability" enum="StorageBucketDurabilityParameter" expires_after="2024-04-01"> <owner>estade@chromium.org</owner>
diff --git a/tools/update_pgo_profiles.py b/tools/update_pgo_profiles.py index a22f5dd..2e5c818 100755 --- a/tools/update_pgo_profiles.py +++ b/tools/update_pgo_profiles.py
@@ -133,7 +133,14 @@ '--target', required=True, choices=[ - 'win32', 'win64', 'mac', 'mac-arm', 'linux', 'lacros64', 'lacros-arm' + 'win32', + 'win64', + 'mac', + 'mac-arm', + 'linux', + 'lacros64', + 'lacros-arm', + 'lacros-arm64', ], help='Identifier of a specific target platform + architecture.') subparsers = parser.add_subparsers()
diff --git a/ui/accessibility/ax_table_info.cc b/ui/accessibility/ax_table_info.cc index d745d25..b04457a 100644 --- a/ui/accessibility/ax_table_info.cc +++ b/ui/accessibility/ax_table_info.cc
@@ -61,7 +61,7 @@ caption_node_id); } else if (IsTableRow(child->GetRole())) { row_node_list->push_back(child); - cell_nodes_per_row->push_back(std::vector<AXNode*>()); + cell_nodes_per_row->emplace_back(); FindCellsInRow(child, &cell_nodes_per_row->back()); } else if (child->GetRole() == ax::mojom::Role::kCaption) { caption_node_id = child->id(); @@ -427,13 +427,12 @@ for (size_t i = 0; i < col_count; i++) { new_extra_mac_nodes.push_back(CreateExtraMacColumnNode(i)); - changes.push_back(AXTreeObserver::Change( - new_extra_mac_nodes[i], AXTreeObserver::ChangeType::NODE_CREATED)); + changes.emplace_back(new_extra_mac_nodes[i], + AXTreeObserver::ChangeType::NODE_CREATED); } new_extra_mac_nodes.push_back(CreateExtraMacTableHeaderNode()); - changes.push_back( - AXTreeObserver::Change(new_extra_mac_nodes[col_count], - AXTreeObserver::ChangeType::NODE_CREATED)); + changes.emplace_back(new_extra_mac_nodes[col_count], + AXTreeObserver::ChangeType::NODE_CREATED); { ScopedTreeUpdateInProgressStateSetter tree_update_in_progress(*tree_); @@ -456,8 +455,7 @@ } // tree_update_in_progress. - changes.push_back(AXTreeObserver::Change( - table_node_, AXTreeObserver::ChangeType::NODE_CHANGED)); + changes.emplace_back(table_node_, AXTreeObserver::ChangeType::NODE_CHANGED); for (AXNode* node : extra_mac_nodes) { for (AXTreeObserver& observer : tree_->observers())
diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc index 8fdfc537..5f9ae71 100644 --- a/ui/accessibility/ax_tree.cc +++ b/ui/accessibility/ax_tree.cc
@@ -843,9 +843,7 @@ // bad state. if (bounds.IsEmpty() && !GetTreeUpdateInProgressState() && allow_recursion) { - for (size_t i = 0; i < node->children().size(); i++) { - ui::AXNode* child = node->children()[i]; - + for (auto* child : node->children()) { bool ignore_offscreen; gfx::RectF child_bounds = RelativeToTreeBoundsInternal(child, gfx::RectF(), &ignore_offscreen,
diff --git a/ui/accessibility/ax_tree_combiner.cc b/ui/accessibility/ax_tree_combiner.cc index b1a9a71..562c01f 100644 --- a/ui/accessibility/ax_tree_combiner.cc +++ b/ui/accessibility/ax_tree_combiner.cc
@@ -10,11 +10,9 @@ namespace ui { -AXTreeCombiner::AXTreeCombiner() { -} +AXTreeCombiner::AXTreeCombiner() = default; -AXTreeCombiner::~AXTreeCombiner() { -} +AXTreeCombiner::~AXTreeCombiner() = default; void AXTreeCombiner::AddTree(const AXTreeUpdate& tree, bool is_root) { if (tree.tree_data.tree_id == AXTreeIDUnknown()) { @@ -87,8 +85,7 @@ void AXTreeCombiner::ProcessTree(const AXTreeUpdate* tree) { AXTreeID tree_id = tree->tree_data.tree_id; - for (size_t i = 0; i < tree->nodes.size(); ++i) { - AXNodeData node = tree->nodes[i]; + for (auto node : tree->nodes) { AXTreeID child_tree_id = AXTreeID::FromString( node.GetStringAttribute(ax::mojom::StringAttribute::kChildTreeId)); @@ -96,8 +93,9 @@ node.id = MapId(tree_id, node.id); // Map the node's child IDs. - for (size_t j = 0; j < node.child_ids.size(); ++j) - node.child_ids[j] = MapId(tree_id, node.child_ids[j]); + for (int& child_id : node.child_ids) { + child_id = MapId(tree_id, child_id); + } // Map the container id. if (node.relative_bounds.offset_container_id > 0) @@ -105,24 +103,23 @@ MapId(tree_id, node.relative_bounds.offset_container_id); // Map other int attributes that refer to node IDs. - for (size_t j = 0; j < node.int_attributes.size(); ++j) { - auto& attr = node.int_attributes[j]; - if (IsNodeIdIntAttribute(attr.first)) + for (auto& attr : node.int_attributes) { + if (IsNodeIdIntAttribute(attr.first)) { attr.second = MapId(tree_id, attr.second); + } } // Map other int list attributes that refer to node IDs. - for (size_t j = 0; j < node.intlist_attributes.size(); ++j) { - auto& attr = node.intlist_attributes[j]; - if (IsNodeIdIntListAttribute(attr.first)) { - for (size_t k = 0; k < attr.second.size(); k++) - attr.second[k] = MapId(tree_id, attr.second[k]); + for (auto& node_int_list : node.intlist_attributes) { + if (IsNodeIdIntListAttribute(node_int_list.first)) { + for (int& attr : node_int_list.second) { + attr = MapId(tree_id, attr); + } } } // Remove the ax::mojom::StringAttribute::kChildTreeId attribute. - for (size_t j = 0; j < node.string_attributes.size(); ++j) { - auto& attr = node.string_attributes[j]; + for (auto& attr : node.string_attributes) { if (attr.first == ax::mojom::StringAttribute::kChildTreeId) { attr.first = ax::mojom::StringAttribute::kNone; attr.second = "";
diff --git a/ui/accessibility/platform/ax_platform_node_base.cc b/ui/accessibility/platform/ax_platform_node_base.cc index 4584db34..85aa276 100644 --- a/ui/accessibility/platform/ax_platform_node_base.cc +++ b/ui/accessibility/platform/ax_platform_node_base.cc
@@ -2325,7 +2325,7 @@ // TODO(nektar): Compute what objects are auto-generated in Blink and // TODO(1278249): add OCRed text from Screen AI Service too. if (GetRole() == ax::mojom::Role::kListMarker) - attributes.push_back(std::make_pair("auto-generated", "true")); + attributes.emplace_back("auto-generated", "true"); int color; if ((color = delegate_->GetBackgroundColor())) { @@ -2336,7 +2336,7 @@ base::NumberToString(green) + ',' + base::NumberToString(blue) + ')'; SanitizeTextAttributeValue(color_value, &color_value); - attributes.push_back(std::make_pair("background-color", color_value)); + attributes.emplace_back(std::make_pair("background-color", color_value)); } if ((color = delegate_->GetColor())) { @@ -2347,7 +2347,7 @@ base::NumberToString(green) + ',' + base::NumberToString(blue) + ')'; SanitizeTextAttributeValue(color_value, &color_value); - attributes.push_back(std::make_pair("color", color_value)); + attributes.emplace_back(std::make_pair("color", color_value)); } // First try to get the inherited font family name from the delegate. If we @@ -2362,13 +2362,13 @@ // Attribute has no default value. if (!font_family.empty()) { SanitizeTextAttributeValue(font_family, &font_family); - attributes.push_back(std::make_pair("font-family", font_family)); + attributes.emplace_back(std::make_pair("font-family", font_family)); } absl::optional<float> font_size_in_points = GetFontSizeInPoints(); // Attribute has no default value. if (font_size_in_points) { - attributes.push_back(std::make_pair( + attributes.emplace_back(std::make_pair( "font-size", base::NumberToString(*font_size_in_points) + "pt")); } @@ -2379,23 +2379,24 @@ int32_t text_style = GetIntAttribute(ax::mojom::IntAttribute::kTextStyle); if (text_style) { if (HasTextStyle(ax::mojom::TextStyle::kBold)) - attributes.push_back(std::make_pair("font-weight", "bold")); + attributes.emplace_back(std::make_pair("font-weight", "bold")); if (HasTextStyle(ax::mojom::TextStyle::kItalic)) - attributes.push_back(std::make_pair("font-style", "italic")); + attributes.emplace_back(std::make_pair("font-style", "italic")); if (HasTextStyle(ax::mojom::TextStyle::kLineThrough)) { // TODO(nektar): Figure out a more specific value. - attributes.push_back(std::make_pair("text-line-through-style", "solid")); + attributes.emplace_back( + std::make_pair("text-line-through-style", "solid")); } if (HasTextStyle(ax::mojom::TextStyle::kUnderline)) { // TODO(nektar): Figure out a more specific value. - attributes.push_back(std::make_pair("text-underline-style", "solid")); + attributes.emplace_back(std::make_pair("text-underline-style", "solid")); } } std::string language = GetDelegate()->GetLanguage(); if (!language.empty()) { SanitizeTextAttributeValue(language, &language); - attributes.push_back(std::make_pair("language", language)); + attributes.emplace_back(std::make_pair("language", language)); } auto text_direction = static_cast<ax::mojom::WritingDirection>( @@ -2404,17 +2405,17 @@ case ax::mojom::WritingDirection::kNone: break; case ax::mojom::WritingDirection::kLtr: - attributes.push_back(std::make_pair("writing-mode", "lr")); + attributes.emplace_back(std::make_pair("writing-mode", "lr")); break; case ax::mojom::WritingDirection::kRtl: - attributes.push_back(std::make_pair("writing-mode", "rl")); + attributes.emplace_back(std::make_pair("writing-mode", "rl")); break; case ax::mojom::WritingDirection::kTtb: - attributes.push_back(std::make_pair("writing-mode", "tb")); + attributes.emplace_back(std::make_pair("writing-mode", "tb")); break; case ax::mojom::WritingDirection::kBtt: // Not listed in the IA2 Spec. - attributes.push_back(std::make_pair("writing-mode", "bt")); + attributes.emplace_back(std::make_pair("writing-mode", "bt")); break; } @@ -2424,10 +2425,10 @@ case ax::mojom::TextPosition::kNone: break; case ax::mojom::TextPosition::kSubscript: - attributes.push_back(std::make_pair("text-position", "sub")); + attributes.emplace_back(std::make_pair("text-position", "sub")); break; case ax::mojom::TextPosition::kSuperscript: - attributes.push_back(std::make_pair("text-position", "super")); + attributes.emplace_back(std::make_pair("text-position", "super")); break; }
diff --git a/ui/file_manager/integration_tests/file_manager/file_dialog.js b/ui/file_manager/integration_tests/file_manager/file_dialog.js index f6359cec..4bfc643 100644 --- a/ui/file_manager/integration_tests/file_manager/file_dialog.js +++ b/ui/file_manager/integration_tests/file_manager/file_dialog.js
@@ -920,13 +920,8 @@ await remoteCall.fakeKeyDown(appId, menuVisible, ...escKey); await remoteCall.waitForElementLost(appId, menuVisible); - // Right-click 100px inside of #file-list (in an empty space). - const offsetBottom = -100; - const offsetRight = -100; - chrome.test.assertTrue( - await remoteCall.callRemoteTestUtil( - 'rightClickOffset', appId, ['#file-list', offsetBottom, offsetRight]), - 'right click failed'); + // Right-click inside of #file-list (in an empty space). + await remoteCall.rightClickFileListBlankSpace(appId); // Check that context menu is NOT displayed because there is no visible menu // items.
diff --git a/ui/file_manager/integration_tests/remote_call.js b/ui/file_manager/integration_tests/remote_call.js index cf0cd24..e7f459e 100644 --- a/ui/file_manager/integration_tests/remote_call.js +++ b/ui/file_manager/integration_tests/remote_call.js
@@ -401,12 +401,15 @@ /** * Simulate Click in the UI in the middle of the element. - * @param{string} appId App window ID contains the element. NOTE: The click is + * @param {string} appId App window ID contains the element. NOTE: The click + * is * simulated on most recent window in the window system. * @param {string|!Array<string>} query Query to the element to be clicked. + * @param {boolean} leftClick If true, simulate left click. Otherwise simulate + * right click. * @return {!Promise} A promise fulfilled after the click event. */ - async simulateUiClick(appId, query) { + async simulateUiClick(appId, query, leftClick = true) { const element = /* @type {!Object} */ ( await this.waitForElementStyles(appId, query, ['display'])); chrome.test.assertTrue(!!element, 'element for simulateUiClick not found'); @@ -418,7 +421,18 @@ Math.floor(element['renderedTop'] + (element['renderedHeight'] / 2)); return sendTestMessage( - {appId, name: 'simulateClick', 'clickX': x, 'clickY': y}); + {appId, name: 'simulateClick', 'clickX': x, 'clickY': y, leftClick}); + } + + /** + * Simulate Right Click in blank/empty space of the file list element. + * @param{string} appId App window ID contains the element. NOTE: The click is + * simulated on most recent window in the window system. + * @return {!Promise} A promise fulfilled after the click event. + */ + async rightClickFileListBlankSpace(appId) { + await this.simulateUiClick( + appId, '#file-list .spacer.signals-overscroll', false); } /**
diff --git a/ui/gl/dc_layer_overlay_image.cc b/ui/gl/dc_layer_overlay_image.cc index 24f8e18..6d90d8b 100644 --- a/ui/gl/dc_layer_overlay_image.cc +++ b/ui/gl/dc_layer_overlay_image.cc
@@ -15,6 +15,21 @@ namespace gl { +const char* DCLayerOverlayTypeToString(DCLayerOverlayType overlay_type) { + switch (overlay_type) { + case DCLayerOverlayType::kNV12Texture: + return "NV12Texture"; + case DCLayerOverlayType::kNV12Pixmap: + return "NV12Pixmap"; + case DCLayerOverlayType::kDCompVisualContent: + return "DCompVisualContent"; + case DCLayerOverlayType::kDCompSurfaceProxy: + return "DCompSurfaceProxy"; + } + + NOTREACHED_NORETURN(); +} + DCLayerOverlayImage::DCLayerOverlayImage( const gfx::Size& size, Microsoft::WRL::ComPtr<ID3D11Texture2D> nv12_texture,
diff --git a/ui/gl/dc_layer_overlay_image.h b/ui/gl/dc_layer_overlay_image.h index 161c249d..be55809 100644 --- a/ui/gl/dc_layer_overlay_image.h +++ b/ui/gl/dc_layer_overlay_image.h
@@ -30,6 +30,9 @@ kDCompSurfaceProxy, }; +GL_EXPORT const char* DCLayerOverlayTypeToString( + DCLayerOverlayType overlay_type); + // Holds DComp content needed to update the DComp layer tree class GL_EXPORT DCLayerOverlayImage { public:
diff --git a/ui/gl/gl_context_egl.cc b/ui/gl/gl_context_egl.cc index 509f379..d1ac6903 100644 --- a/ui/gl/gl_context_egl.cc +++ b/ui/gl/gl_context_egl.cc
@@ -544,6 +544,12 @@ return false; } + if (gl_display_) { + if (gl_display_->GetDisplay() != eglGetCurrentDisplay()) { + return false; + } + } + return true; }
diff --git a/ui/gl/swap_chain_presenter.cc b/ui/gl/swap_chain_presenter.cc index 7e79dae..2288ae67 100644 --- a/ui/gl/swap_chain_presenter.cc +++ b/ui/gl/swap_chain_presenter.cc
@@ -321,20 +321,6 @@ return (std::abs(i - j) < kFullScreenMargin); } -// TODO(sunnyps): Move to DCLayerOverlayType header and make consistent with the -// type names after changing trace tests which depend on this. -std::string OverlayTypeToString(DCLayerOverlayType overlay_type) { - std::string overlay_type_str; - if (overlay_type == gl::DCLayerOverlayType::kDCompVisualContent) { - overlay_type_str = "swap chain"; - } else if (overlay_type == gl::DCLayerOverlayType::kNV12Texture) { - overlay_type_str = "hardware video frame"; - } else { - overlay_type_str = "software video frame"; - } - return overlay_type_str; -} - void DumpWithoutCrashingForToggleVpSuperResolutionError(HRESULT hr, UINT gpu_vendor_id) { // ToggleVpSuperResolution() is called for all GPUs unless a flag disables it. @@ -1211,7 +1197,7 @@ } TRACE_EVENT2("gpu", "SwapChainPresenter::PresentToSwapChain", "image_type", - OverlayTypeToString(overlay_type), "size", + DCLayerOverlayTypeToString(overlay_type), "size", content_size.ToString()); // Swap chain image already has a swap chain that's presented by the client
diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc index d043032..5635af2 100644 --- a/ui/views/controls/menu/menu_scroll_view_container.cc +++ b/ui/views/controls/menu/menu_scroll_view_container.cc
@@ -41,10 +41,6 @@ #include "ui/views/view.h" #include "ui/views/view_class_properties.h" -#if BUILDFLAG(IS_CHROMEOS_ASH) -#include "ash/constants/ash_features.h" -#endif - namespace views { namespace { @@ -493,14 +489,11 @@ background_view_->layer()->SetRoundedCornerRadius(GetRoundedCorners()); #if BUILDFLAG(IS_CHROMEOS_ASH) - if (ash::features::IsDarkLightModeEnabled()) { - background_view_->SetBorder(std::make_unique<HighlightBorder>( - GetRoundedCorners(), - // corner_radius_, - chromeos::features::IsJellyrollEnabled() - ? HighlightBorder::Type::kHighlightBorderOnShadow - : HighlightBorder::Type::kHighlightBorder1)); - } + background_view_->SetBorder(std::make_unique<HighlightBorder>( + GetRoundedCorners(), + chromeos::features::IsJellyrollEnabled() + ? HighlightBorder::Type::kHighlightBorderOnShadow + : HighlightBorder::Type::kHighlightBorder1)); #endif } else { SetBackground(std::make_unique<BubbleBackground>(bubble_border.get()));
diff --git a/ui/views/controls/textarea/textarea.cc b/ui/views/controls/textarea/textarea.cc index 4dedcaf9..e615bf5 100644 --- a/ui/views/controls/textarea/textarea.cc +++ b/ui/views/controls/textarea/textarea.cc
@@ -30,6 +30,7 @@ GetRenderText()->SetDisplayOffset(GetRenderText()->GetUpdatedDisplayOffset() + gfx::Vector2d(0, event.y_offset())); UpdateCursorViewPosition(); + UpdateCursorVisibility(); SchedulePaint(); return true; }
diff --git a/ui/views/controls/textfield/textfield.cc b/ui/views/controls/textfield/textfield.cc index cc166df..735af2c1 100644 --- a/ui/views/controls/textfield/textfield.cc +++ b/ui/views/controls/textfield/textfield.cc
@@ -2748,8 +2748,11 @@ bool Textfield::ShouldShowCursor() const { // Show the cursor when the primary selected range is empty; secondary // selections do not affect cursor visibility. + // TODO(crbug.com/1434319): The cursor will be entirely hidden if partially + // occluded. It would be better if only the occluded part is hidden. return HasFocus() && !HasSelection(true) && GetEnabled() && !GetReadOnly() && - !drop_cursor_visible_ && GetRenderText()->cursor_enabled(); + !drop_cursor_visible_ && GetRenderText()->cursor_enabled() && + GetLocalBounds().Contains(cursor_view_->bounds()); } int Textfield::CharsToDips(int width_in_chars) const {
diff --git a/ui/views/controls/textfield/textfield.h b/ui/views/controls/textfield/textfield.h index 4d6939bc..02a4f69 100644 --- a/ui/views/controls/textfield/textfield.h +++ b/ui/views/controls/textfield/textfield.h
@@ -527,6 +527,9 @@ // Update the cursor position in the text field. void UpdateCursorViewPosition(); + // A callback function to periodically update the cursor node_data. + void UpdateCursorVisibility(); + private: friend class TextfieldTestApi; @@ -577,9 +580,6 @@ // Updates cursor visibility and blinks the cursor if needed. void ShowCursor(); - // A callback function to periodically update the cursor node_data. - void UpdateCursorVisibility(); - // Gets the style::TextStyle that should be used. int GetTextStyle() const;
diff --git a/ui/webui/resources/tools/build_webui.gni b/ui/webui/resources/tools/build_webui.gni index e6226e72..3b3b190 100644 --- a/ui/webui/resources/tools/build_webui.gni +++ b/ui/webui/resources/tools/build_webui.gni
@@ -15,6 +15,7 @@ import("//ui/webui/resources/tools/generate_grd.gni") import("//ui/webui/resources/tools/minify_js.gni") import("//ui/webui/resources/tools/optimize_webui.gni") +import("//ui/webui/webui_features.gni") if (use_blink) { import("//chrome/common/features.gni") @@ -34,7 +35,7 @@ ts_out_dir = invoker.ts_out_dir } - optimize = false + optimize = optimize_webui if (defined(invoker.optimize)) { optimize = invoker.optimize }
diff --git a/ui/webui/resources/tools/minify_js.py b/ui/webui/resources/tools/minify_js.py index 37c2efb..05ed297 100755 --- a/ui/webui/resources/tools/minify_js.py +++ b/ui/webui/resources/tools/minify_js.py
@@ -35,7 +35,7 @@ node_modules.PathToTerser(), os.path.join(in_path, input_file), '--comments', '/Copyright|license|LICENSE/', '--output', - os.path.join(out_path, input_file) + os.path.join(out_path, input_file), '--module' ]) manifest_data = {}