diff --git a/DEPS b/DEPS index 5f9f301..da816165 100644 --- a/DEPS +++ b/DEPS
@@ -313,15 +313,15 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'src_internal_revision': 'f11a7d33a9d0c660a8c3b3b2fca966b25c575b3e', + 'src_internal_revision': 'c4e9cf1cc0de2e6de21aca6876facddd3ea450a1', # 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': 'b72fe6f76c61be2fd9cf6878f6e3defd44960af8', + 'skia_revision': 'c5f8c24606eadfdf5ddf1741c6bd4bbeb34e0214', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'c57efa129901e286f562dccac8c5e77b9517b1fd', + 'v8_revision': 'b5f6750fd599671f406a077969c2caf4bd8e2da7', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -408,7 +408,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': '4ef9c73c536379ce499e8771304ef3f999fc86b6', + 'devtools_frontend_revision': 'a4cc1be16a5fecf8333afbb0a8bbbd70e09bdd94', # 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. @@ -448,7 +448,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': '174c42e551ba1b82747056cb7fc2b9722082d0d4', + 'dawn_revision': '3cd439bfaf464c0ea5ab2d669febda4bc5651e0a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -848,7 +848,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '5c5f938d64e779438a837a026ff3234e7050b392', + 'cb7ce7fd96470a676aa91a7f942323c10f78da2f', 'condition': 'checkout_android and checkout_src_internal', }, @@ -1054,7 +1054,7 @@ 'packages': [ { 'package': 'chromium/third_party/androidx', - 'version': 'ubPprrWxHA0qqDaHt15loHyEFma5qJ5_nZ5SY4oHLewC', + 'version': 'fT5pz2yH4irycAN03PGWg7WhP9YI8WplHi8GsnRTL0IC', }, ], 'condition': 'checkout_android', @@ -1298,13 +1298,13 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '456663282214a9b81f7299908f67d03beeb63845', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'aabd869daf9956514eba5f57d92da166f993ca47', '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' + '@' + '5fde161dd4df5e1bc613121743ca9a6f92e1acf8', + 'url': Var('chrome_git') + '/devtools/devtools-internal.git' + '@' + 'e892097f7c37eb2144577fadb1a390fc0ce3f8e4', 'condition': 'checkout_src_internal', }, @@ -1481,7 +1481,7 @@ Var('chromium_git') + '/chromium/deps/hunspell_dictionaries.git' + '@' + '41cdffd71c9948f63c7ad36e1fb0ff519aa7a37e', 'src/third_party/icu': - Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '985b9a6f70e13f3db741fed121e4dcc3046ad494', + Var('chromium_git') + '/chromium/deps/icu.git' + '@' + '995db880cff28a8b5d3a9978acd1b7cab9885edd', 'src/third_party/icu4j': { 'packages': [ @@ -1782,7 +1782,7 @@ Var('chromium_git') + '/external/github.com/cisco/openh264' + '@' + '09a4f3ec842a8932341b195c5b01e141c8a16eb7', 'src/third_party/openscreen/src': - Var('chromium_git') + '/openscreen' + '@' + 'cba24a91356b6d7d2930797541168ff6e0d17885', + Var('chromium_git') + '/openscreen' + '@' + 'd0b32cadd6ddc94646047ee93aff43db2470f9c0', 'src/third_party/openxr/src': { 'url': Var('chromium_git') + '/external/github.com/KhronosGroup/OpenXR-SDK' + '@' + '58a00cf85c39ad5ec4dc43a769624e420c06179a', @@ -1938,7 +1938,7 @@ 'dep_type': 'cipd', }, - 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@be2755d4d1097be1c7efa48b4c75d2abfc689205', + 'src/third_party/vulkan-deps': '{chromium_git}/vulkan-deps@b0fb86c92b69af3d19421199c5d8f3b6dda018e0', 'src/third_party/vulkan_memory_allocator': Var('chromium_git') + '/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git' + '@' + 'e87036508bb156f9986ea959323de1869e328f58', @@ -1978,7 +1978,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '4e91a54a0767cf596a407e9bc0933e4bbc66e8d3', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '756911644f7c82cedc9230dd626e24053b9a50c4', + Var('webrtc_git') + '/src.git' + '@' + 'cedabf3e2ee01939dcef2fef18c1be8515b09ecd', # 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. @@ -4874,10 +4874,12 @@ }, # Pull down Node binaries for WebUI toolchain. + # The Linux binary is always downloaded regardless of host os and architecture + # since remote node actions run on Linux worker. + # See also //third_party/node/node.gni { 'name': 'node_linux64', 'pattern': '.', - 'condition': 'host_os == "linux"', 'action': [ 'python3', 'src/third_party/depot_tools/download_from_google_storage.py', '--no_resume',
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn index 6d5fc09..200f5b5 100644 --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn
@@ -845,6 +845,7 @@ "//components/metrics:metrics_java", "//components/network_session_configurator/android:network_session_configurator_java", "//components/permissions/android:core_java", + "//components/safe_browsing/android:safe_browsing_java", "//components/variations:variations_java", "//components/viz:viz_java", "//content/public/android:content_java",
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java index abcb5e4..574d720e 100644 --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -19,6 +19,7 @@ import org.chromium.components.metrics.MetricsSwitches; import org.chromium.components.network_session_configurator.NetworkSessionSwitches; import org.chromium.components.permissions.PermissionsAndroidFeatureList; +import org.chromium.components.safe_browsing.SafeBrowsingFeatures; import org.chromium.components.variations.VariationsSwitches; import org.chromium.components.viz.common.VizFeatures; import org.chromium.content_public.common.ContentFeatures; @@ -449,6 +450,8 @@ Flag.baseFeature(AwFeatures.WEBVIEW_METRICS_FILTERING, "If enabled, clients used to be out-sampled will report filtered metrics." + " This has no effect if metrics reporting is disabled"), + Flag.baseFeature(SafeBrowsingFeatures.SAFE_BROWSING_SKIP_SUBRESOURCES, + "When enabled, Safe Browsing will skip subresources"), Flag.baseFeature("SafeBrowsingOnUIThread"), Flag.baseFeature(BlinkFeatures.ANDROID_EXTENDED_KEYBOARD_SHORTCUTS, "Enables WebView to use the extended keyboard shortcuts added for Android U"),
diff --git a/android_webview/ui/grit_resources_allowlist.txt b/android_webview/ui/grit_resources_allowlist.txt index 49e55d6..643dcceb 100644 --- a/android_webview/ui/grit_resources_allowlist.txt +++ b/android_webview/ui/grit_resources_allowlist.txt
@@ -9,6 +9,7 @@ IDR_SAFE_BROWSING_JS IDR_SAFE_BROWSING_HTML IDR_WEBUI_JS_CR_JS +IDR_WEBUI_JS_ASSERT_JS IDR_WEBUI_JS_ASSERT_TS_JS IDR_WEBUI_JS_UTIL_TS_JS IDR_WEBUI_JS_PROMISE_RESOLVER_JS
diff --git a/ash/system/tray/tray_bubble_wrapper.cc b/ash/system/tray/tray_bubble_wrapper.cc index 34c733c..e46dc40 100644 --- a/ash/system/tray/tray_bubble_wrapper.cc +++ b/ash/system/tray/tray_bubble_wrapper.cc
@@ -10,8 +10,10 @@ #include "ash/system/tray/tray_background_view.h" #include "ash/system/tray/tray_bubble_view.h" #include "ash/system/tray/tray_event_filter.h" +#include "ui/aura/window.h" #include "ui/views/bubble/bubble_dialog_delegate_view.h" #include "ui/views/widget/widget.h" +#include "ui/wm/core/transient_window_manager.h" namespace ash { @@ -21,6 +23,12 @@ TrayBubbleWrapper::~TrayBubbleWrapper() { if (bubble_widget_) { + auto* transient_manager = ::wm::TransientWindowManager::GetOrCreate( + bubble_widget_->GetNativeWindow()); + if (transient_manager) { + for (auto* window : transient_manager->transient_children()) + transient_manager->RemoveTransientChild(window); + } bubble_widget_->RemoveObserver(this); bubble_widget_->Close(); } @@ -41,7 +49,6 @@ TrayBackgroundView::InitializeBubbleAnimations(bubble_widget_); bubble_view_->InitializeAndShowBubble(); - // We need to explicitly dismiss app list bubble here due to b/1186479. if (!Shell::Get()->tablet_mode_controller()->InTabletMode()) Shell::Get()->app_list_controller()->DismissAppList(); @@ -68,6 +75,12 @@ bubble_widget_->RemoveObserver(this); bubble_widget_ = nullptr; + // Although the bubble is already closed, the next mouse release event + // will invoke PerformAction which reopens the bubble again. To prevent the + // reopen, the mouse capture of |tray_| has to be released. + // See crbug.com/177075 + tray_->GetWidget()->GetNativeWindow()->ReleaseCapture(); + tray_->HideBubbleWithView(bubble_view_); // May destroy |bubble_view_| }
diff --git a/ash/system/tray/tray_event_filter.cc b/ash/system/tray/tray_event_filter.cc index 3a5c6e8..8b1f3f9 100644 --- a/ash/system/tray/tray_event_filter.cc +++ b/ash/system/tray/tray_event_filter.cc
@@ -136,7 +136,13 @@ auto* gained_active_widget = views::Widget::GetWidgetForNativeView(gained_active); - if (bubble_widget == gained_active_widget) { + // Don't close the bubble if a transient child is gaining or losing + // activation. + if (bubble_widget == gained_active_widget || + ::wm::HasTransientAncestor(gained_active, + bubble_widget->GetNativeWindow()) || + (lost_active && ::wm::HasTransientAncestor( + lost_active, bubble_widget->GetNativeWindow()))) { return; }
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc index 410b0a6..84b4f4d 100644 --- a/ash/system/unified/unified_system_tray_bubble.cc +++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -351,7 +351,11 @@ // Don't close the bubble if a transient child is gaining or losing // activation. - if (bubble_widget_ == gained_active_widget) { + if (bubble_widget_ == gained_active_widget || + ::wm::HasTransientAncestor(gained_active, + bubble_widget_->GetNativeWindow()) || + (lost_active && ::wm::HasTransientAncestor( + lost_active, bubble_widget_->GetNativeWindow()))) { return; }
diff --git a/ash/test/ash_test_helper.cc b/ash/test/ash_test_helper.cc index 78d6220..da9c7444 100644 --- a/ash/test/ash_test_helper.cc +++ b/ash/test/ash_test_helper.cc
@@ -411,9 +411,10 @@ // Tests expect empty wallpaper. shell->wallpaper_controller()->CreateEmptyWallpaperForTesting(); - // Move the mouse cursor to far away so that native events don't interfere - // with test expectations. - Shell::GetPrimaryRootWindow()->MoveCursorTo(gfx::Point(-1000, -1000)); + // Native events and mouse movements are disabled by + // `ui::DisableNativeUiEventDispatchDisabled()`. Just make sure that the the + // mouse cursour is not on the screen by default. + aura::Env::GetInstance()->SetLastMouseLocation(gfx::Point(-1000, -1000)); shell->cursor_manager()->EnableMouseEvents(); // Changing GestureConfiguration shouldn't make tests fail. These values
diff --git a/ash/webui/camera_app_ui/resources/utils/cca/commands/dev.py b/ash/webui/camera_app_ui/resources/utils/cca/commands/dev.py index 3775989..844f51b9 100644 --- a/ash/webui/camera_app_ui/resources/utils/cca/commands/dev.py +++ b/ash/webui/camera_app_ui/resources/utils/cca/commands/dev.py
@@ -341,9 +341,17 @@ routes = self._handler.routes for route in routes: if _route_match(route): - return self._send_200(path, route.handler(path)) + try: + content = route.handler(path) + except Exception as e: + logging.debug(f"Error while handling {path}", e) + self.send_response(404) + self.end_headers() + return + return self._send_200(path, content) self.send_response(404) + self.end_headers() _DEV_OUTPUT_TEMP_DIR = "/tmp/cca-dev-out"
diff --git a/base/containers/circular_deque_unittest.cc b/base/containers/circular_deque_unittest.cc index d02b8081..d7a9ae3 100644 --- a/base/containers/circular_deque_unittest.cc +++ b/base/containers/circular_deque_unittest.cc
@@ -7,6 +7,7 @@ #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/test/copy_only_int.h" +#include "base/test/gtest_util.h" #include "base/test/move_only_int.h" #include "testing/gtest/include/gtest/gtest.h" @@ -879,9 +880,7 @@ EXPECT_EQ(&back, &q.back()); } -/* -This test should assert in a debug build. It tries to dereference an iterator -after mutating the container. Uncomment to double-check that this works. +// This test tries to dereference an iterator after mutating the container. TEST(CircularDeque, UseIteratorAfterMutate) { circular_deque<int> q; q.push_back(0); @@ -890,9 +889,10 @@ EXPECT_EQ(0, *old_begin); q.push_back(1); - EXPECT_EQ(0, *old_begin); // Should DCHECK. + + // This statement is not executed when DCHECKs are disabled. + EXPECT_DCHECK_DEATH(*old_begin); } -*/ // This test verifies that a scoped_refptr specifically is moved rather than // copied when a circular_deque is resized. It would be extremely inefficient if
diff --git a/base/system/sys_info.cc b/base/system/sys_info.cc index 4c6cbdfd..1407922 100644 --- a/base/system/sys_info.cc +++ b/base/system/sys_info.cc
@@ -88,28 +88,79 @@ namespace { -bool IsAndroid4GbOr6GbDevice() { +enum class BucketizedSize { + k2GbOrLess, + k3Gb, + k4Gb, + k6Gb, + k8GbOrHigher, +}; + +BucketizedSize GetAndroidSystemRamBucketizedSize() { + int physical_memory = base::SysInfo::AmountOfPhysicalMemoryMB(); + // Because of Android carveouts, AmountOfPhysicalMemory() returns smaller - // than the actual memory size, So we will use a small lowerbound than 4GB - // to discriminate real 4GB devices from lower memory ones. - constexpr int kLowerBoundMB = 3.2 * 1024; - constexpr int kUpperBoundMB = 6 * 1024; - static bool is_4gb_or_6g_device = - kLowerBoundMB <= base::SysInfo::AmountOfPhysicalMemoryMB() && - base::SysInfo::AmountOfPhysicalMemoryMB() <= kUpperBoundMB; - return is_4gb_or_6g_device; + // than the actual memory size, So we will use a small lowerbound than "X"GB + // to discriminate real "X"GB devices from lower memory ones. + + constexpr int kUpperBound2GB = 2 * 1024; // inclusive + if (physical_memory <= kUpperBound2GB) { + return BucketizedSize::k2GbOrLess; + } + + constexpr int kLowerBound3GB = kUpperBound2GB; // exclusive + constexpr int kUpperBound3GB = 3.2 * 1024; // inclusive + if (kLowerBound3GB < physical_memory && physical_memory <= kUpperBound3GB) { + return BucketizedSize::k3Gb; + } + + constexpr int kLowerBound4GB = kUpperBound3GB; // exclusive + constexpr int kUpperBound4GB = 4 * 1024; // inclusive + if (kLowerBound4GB < physical_memory && physical_memory <= kUpperBound4GB) { + return BucketizedSize::k4Gb; + } + + constexpr int kLowerBound6GB = kUpperBound4GB; // exclusive + constexpr int kUpperBound6GB = 6.5 * 1024 - 1; // inclusive + if (kLowerBound6GB < physical_memory && physical_memory <= kUpperBound6GB) { + return BucketizedSize::k6Gb; + } + + return BucketizedSize::k8GbOrHigher; +} + +BucketizedSize GetCachedAndroidSystemRamBucketizedSize() { + static BucketizedSize s_size = GetAndroidSystemRamBucketizedSize(); + return s_size; } bool IsPartialLowEndModeOnMidRangeDevicesEnabled() { // TODO(crbug.com/1434873): make the feature not enable on 32-bit devices // before launching or going to high Stable %. - return IsAndroid4GbOr6GbDevice() && + return SysInfo::IsAndroid4GbOr6GbDevice() && base::FeatureList::IsEnabled( features::kPartialLowEndModeOnMidRangeDevices); } } // namespace +bool SysInfo::IsAndroid3GbDevice() { + return GetCachedAndroidSystemRamBucketizedSize() == BucketizedSize::k3Gb; +} + +bool SysInfo::IsAndroid4GbDevice() { + return GetCachedAndroidSystemRamBucketizedSize() == BucketizedSize::k4Gb; +} + +bool SysInfo::IsAndroid4GbOr6GbDevice() { + return GetCachedAndroidSystemRamBucketizedSize() == BucketizedSize::k4Gb || + GetCachedAndroidSystemRamBucketizedSize() == BucketizedSize::k6Gb; +} + +bool SysInfo::IsAndroid6GbDevice() { + return GetCachedAndroidSystemRamBucketizedSize() == BucketizedSize::k6Gb; +} + #endif // BUILDFLAG(IS_ANDROID) // TODO(crbug.com/1434873): This method is for chromium native code.
diff --git a/base/system/sys_info.h b/base/system/sys_info.h index 5d03488..b07d4c9 100644 --- a/base/system/sys_info.h +++ b/base/system/sys_info.h
@@ -297,6 +297,19 @@ static bool IsLowEndDeviceOrPartialLowEndModeEnabled( const FeatureParam<bool>& param_for_exclusion); +#if BUILDFLAG(IS_ANDROID) + // Returns true for Android devices whose memory is X GB, considering + // carveouts. The carveouts is memory reserved by the system, e.g. + // for drivers, MTE, etc. It's very common for querying app to see + // hundreds MBs less than actual physical memory installed on the system. + static bool IsAndroid3GbDevice(); + static bool IsAndroid4GbDevice(); + static bool IsAndroid6GbDevice(); + // Returns true for Android devices whose memory is 4GB or 6GB, considering + // carveouts. + static bool IsAndroid4GbOr6GbDevice(); +#endif // BUILDFLAG(IS_ANDROID) + #if BUILDFLAG(IS_MAC) // Indicates that CPU security mitigations are enabled for the current // process. This is used to control the behavior of NumberOfProcessors(), see
diff --git a/base/threading/thread_local_internal.h b/base/threading/thread_local_internal.h index ed99410..5504813 100644 --- a/base/threading/thread_local_internal.h +++ b/base/threading/thread_local_internal.h
@@ -30,7 +30,7 @@ public: CheckedThreadLocalOwnedPointer() = default; - CheckedThreadLocalOwnedPointer<T>(const CheckedThreadLocalOwnedPointer<T>&) = + CheckedThreadLocalOwnedPointer(const CheckedThreadLocalOwnedPointer<T>&) = delete; CheckedThreadLocalOwnedPointer<T>& operator=( const CheckedThreadLocalOwnedPointer<T>&) = delete;
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn index bc098eb74..3f6344e 100644 --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn
@@ -1134,17 +1134,6 @@ "-m64", "-msse3", ] - - # Minimum SIMD support for devices running lacros. - # See https://crbug.com/1475858 - if (is_chromeos_lacros) { - cflags += [ - "-mssse3", - "-msse4", - "-msse4.1", - "-msse4.2", - ] - } ldflags += [ "-m64" ] } else if (current_cpu == "x86") { cflags += [ "-m32" ]
diff --git a/build/config/ios/BUILD.gn b/build/config/ios/BUILD.gn index 120eb6b..4360f32 100644 --- a/build/config/ios/BUILD.gn +++ b/build/config/ios/BUILD.gn
@@ -64,10 +64,6 @@ ] cflags_objcc = [ - # Without this, the constructors and destructors of a C++ object inside - # an Objective C struct won't be called, which is very bad. - "-fobjc-call-cxx-cdtors", - # When using -std=c++20 or higher, clang automatically returns true for # `__has_feature(modules)` as it enables cxx modules. This is problematic # because Objective-C code uses this to detect whether `@import` can be
diff --git a/build/config/mac/BUILD.gn b/build/config/mac/BUILD.gn index fc7f57a..85a668d 100644 --- a/build/config/mac/BUILD.gn +++ b/build/config/mac/BUILD.gn
@@ -43,10 +43,6 @@ asmflags = common_mac_flags cflags = common_mac_flags - # Without this, the constructors and destructors of a C++ object inside - # an Objective C struct won't be called, which is very bad. - cflags_objcc = [ "-fobjc-call-cxx-cdtors" ] - ldflags = common_mac_flags if (save_unstripped_output) {
diff --git a/build/config/siso/clang_all.star b/build/config/siso/clang_all.star index b617e1da..de0003c 100644 --- a/build/config/siso/clang_all.star +++ b/build/config/siso/clang_all.star
@@ -6,7 +6,7 @@ load("@builtin//struct.star", "module") -def __filegroups(ct): +def __filegroups(ctx): return { "third_party/libc++/src/include:headers": { "type": "glob",
diff --git a/build/config/siso/clang_windows.star b/build/config/siso/clang_windows.star index 67d2b46..712a245f3 100644 --- a/build/config/siso/clang_windows.star +++ b/build/config/siso/clang_windows.star
@@ -4,29 +4,43 @@ # found in the LICENSE file. """Siso configuration for clang-cl/windows.""" +load("@builtin//encoding.star", "json") load("@builtin//path.star", "path") load("@builtin//struct.star", "module") load("./clang_all.star", "clang_all") load("./clang_code_coverage_wrapper.star", "clang_code_coverage_wrapper") load("./rewrapper_cfg.star", "rewrapper_cfg") +def __win_toolchain_dir(ctx): + # build/win_toolchain.json may not exist when + # $env:DEPOT_TOOLS_WIN_TOOLCHAIN=0 or so. + if not ctx.fs.exists("build/win_toolchain.json"): + return None + data = json.decode(str(ctx.fs.read("build/win_toolchain.json"))) + if "path" in data: + return ctx.fs.canonpath(data["path"]) + return None + def __filegroups(ctx): - fg = { - # for precomputed subtree - "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci": { - "type": "glob", - "includes": [ - "*.h", - "*.inl", - "*.H", - "*.Hxx", - "*.hxx", - "*.hpp", - "VC/Tools/MSVC/*/include/*", - "VC/Tools/MSVC/*/include/*/*", - ], - }, - } + win_toolchain_dir = __win_toolchain_dir(ctx) + fg = {} + if win_toolchain_dir: + fg.update({ + # for precomputed subtree + win_toolchain_dir + ":headers-ci": { + "type": "glob", + "includes": [ + "*.h", + "*.inl", + "*.H", + "*.Hxx", + "*.hxx", + "*.hpp", + "VC/Tools/MSVC/*/include/*", + "VC/Tools/MSVC/*/include/*/*", + ], + }, + }) fg.update(clang_all.filegroups(ctx)) return fg @@ -46,167 +60,176 @@ "clang-cl": reproxy_config["platform"], }) step_config["input_deps"].update(clang_all.input_deps) - if reproxy_config["platform"]["OSFamily"] == "Windows": - step_config["input_deps"].update({ - "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers": [ - "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci", - ], - }) - else: - step_config["input_deps"].update({ - "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers": [ - "third_party/depot_tools/win_toolchain/vs_files/27370823e7:headers-ci", - # third_party/libc++ includes "DeplayIMP.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/VC/Tools/MSVC/14.34.31933/include/DelayIMP.h", - # third_party/abseil-cpp includes "dbghelp.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dbghelp.h", - # third_party/abseil-cpp includes "aclapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/aclapi.h", - # base/debug includes "psapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/psapi.h", - # base/process includes "tlhelp32.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/tlhelp32.h", - # base/process includes "userenv.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/userenv.h", - # base includes "shlobj.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/shlobj.h", - # base/win includes "lm.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/lm.h", - # base/win includes "mdmregistration.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mdmregistration.h", - # base/win includes "shellscalingapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/shellscalingapi.h", - # base/win includes "uiviewsettingsinterop.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/uiviewsettingsinterop.h", - # native_client/src/shared/platform/win includes "WinError.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/WinError.h", - # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/windows.graphics.directX.direct3d11.h", - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/winrt/windows.graphics.directX.direct3d11.h", - # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.directX.direct3d11.interop.h", - # third_party/crashpad/crashpad/handler/win includes "werapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/werapi.h", - # chrome/install_static/ includes "wtsapi32.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/wtsapi32.h", - # third_party/dawn/include/dawn/native includes "DXGI1_4.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/DXGI1_4.h", - # v8/src/diagnostics includes "versionhelpers.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/versionhelpers.h", - # ui/gfx/ includes "DXGIType.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/DXGIType.h", - # third_party/unrar includes "PowrProf.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/PowrProf.h", - # device/base/ includes "dbt.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dbt.h", - # third_party/skia/ includes "ObjBase.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ObjBase.h", - # third_party/webrtc/rtc_base includes "ws2spi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ws2spi.h", - # third_party/skia/ includes "T2EmbApi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/T2EmbApi.h", - # device/vr/windows/ includes "D3D11_1.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/D3D11_1.h", - # rlz/win/ includes "Sddl.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/Sddl.h", - # chrome/common/safe_browsing/ includes "softpub.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/softpub.h", - # services/device/generic_sensor/ includes "Sensors.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Sensors.h", - # third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.capture.interop.h", - # third_party/skia/ includes "FontSub.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/FontSub.h", - # chrome/updater/ includes "regstr.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/regstr.h", - # services/device/compute_pressure includes "pdh.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/pdh.h", - # chrome/installer/ includes "mshtmhst.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mshtmhst.h", - # net/ssl/ includes "NCrypt.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/NCrypt.h", - # device/fido/win/ includes "Combaseapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Combaseapi.h", - # components/device_signals/core/system_signals/win includes "wscapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/wscapi.h", - # net/proxy_resolution/win/ includes "dhcpcsdk.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dhcpcsdk.h", - # third_party/dawn/third_party/glfw includes "xinput.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/xinput.h", - # v8/tools/v8windbg includes "pathcch.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/pathcch.h", - # remoting/host includes "rpcproxy.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/rpcproxy.h", - # sandbox/win includes "Aclapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Aclapi.h", - # ui/accessibility/platform includes "uiautomation.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/uiautomation.h", - # chrome/credential_provider/gaiacp includes "ntsecapi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ntsecapi.h", - # net/dns includes "Winsock2.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winsock2.h", - # media/cdm/win includes "mferror.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mferror.h", - # chrome/credentialProvider/gaiacp includes "Winternl.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winternl.h", - # media/audio/win includes "audioclient.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/audioclient.h", - # media/audio/win includes "MMDeviceAPI.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/MMDeviceAPI.h", - # net/proxy_resolution/win includes "dhcpv6csdk.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/dhcpv6csdk.h", - # components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/systemmediatransportcontrolsinterop.h", - # ui/native_theme includes "Windows.Media.ClosedCaptioning.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/Windows.Media.ClosedCaptioning.h", - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/winrt/Windows.Media.ClosedCaptioning.h", - # media/audio/win includes "Functiondiscoverykeys_devpkey.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Functiondiscoverykeys_devpkey.h", - # device/fido includes "Winuser.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Winuser.h", - # chrome/updater/win includes "msxml2.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/msxml2.h", - # remoting/host includes "ime.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/ime.h", - # remoting/host/win includes "D3DCommon.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/D3DCommon.h", - # ui/views/controls/menu includes "Vssym32.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Vssym32.h", - # third_party/wtl includes "richedit.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/richedit.h", - # chrome/updater/net includes "Urlmon.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Urlmon.h", - # device/gamepad includes "XInput.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/XInput.h", - # chrome/credential_provider/gaiacp includes "Shlobj.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Shlobj.h", - # content/renderer includes "mlang.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/mlang.h", - # components/storage_monitor includes "portabledevice.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/portabledevice.h", - # third_party/wtl includes "richole.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/richole.h", - # chrome/utility/importer includes "intshcut.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/intshcut.h", - # chrome/browser/net includes "Ws2spi.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/Ws2spi.h", - # chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/proofofpossessioncookieinfo.h", - # chrome/utility/importer includes "urlhist.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/urlhist.h", - # chrome/updater/win/installer includes "msiquery.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/um/msiquery.h", - # third_party/win_virtual_display/controller includes "Devpropdef.h" - "third_party/depot_tools/win_toolchain/vs_files/27370823e7/Windows Kits/10/Include/10.0.22621.0/shared/Devpropdef.h", - ], - }) + + # when win_toolchain_dir is unknown (e.g. + # missing build/win_toolchain.json), we can't run + # clang-cl remotely as we can find sysroot files + # under exec_root, so just run locally. + remote = False + win_toolchain_dir = __win_toolchain_dir(ctx) + if win_toolchain_dir: + if reproxy_config["platform"]["OSFamily"] == "Windows": + step_config["input_deps"].update({ + win_toolchain_dir + ":headers": [ + win_toolchain_dir + ":headers-ci", + ], + }) + else: + step_config["input_deps"].update({ + win_toolchain_dir + ":headers": [ + win_toolchain_dir + ":headers-ci", + # third_party/libc++ includes "DeplayIMP.h" + path.join(win_toolchain_dir, "VC/Tools/MSVC/14.34.31933/include/DelayIMP.h"), + # third_party/abseil-cpp includes "dbghelp.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dbghelp.h"), + # third_party/abseil-cpp includes "aclapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/aclapi.h"), + # base/debug includes "psapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/psapi.h"), + # base/process includes "tlhelp32.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/tlhelp32.h"), + # base/process includes "userenv.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/userenv.h"), + # base includes "shlobj.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/shlobj.h"), + # base/win includes "lm.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/lm.h"), + # base/win includes "mdmregistration.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mdmregistration.h"), + # base/win includes "shellscalingapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/shellscalingapi.h"), + # base/win includes "uiviewsettingsinterop.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/uiviewsettingsinterop.h"), + # native_client/src/shared/platform/win includes "WinError.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/WinError.h"), + # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/windows.graphics.directX.direct3d11.h"), + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/winrt/windows.graphics.directX.direct3d11.h"), + # third_party/webrtc/rtc_base/win includes "windows.graphics.directX.direct3d11.interop.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.directX.direct3d11.interop.h"), + # third_party/crashpad/crashpad/handler/win includes "werapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/werapi.h"), + # chrome/install_static/ includes "wtsapi32.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/wtsapi32.h"), + # third_party/dawn/include/dawn/native includes "DXGI1_4.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/DXGI1_4.h"), + # v8/src/diagnostics includes "versionhelpers.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/versionhelpers.h"), + # ui/gfx/ includes "DXGIType.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/DXGIType.h"), + # third_party/unrar includes "PowrProf.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/PowrProf.h"), + # device/base/ includes "dbt.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dbt.h"), + # third_party/skia/ includes "ObjBase.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ObjBase.h"), + # third_party/webrtc/rtc_base includes "ws2spi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ws2spi.h"), + # third_party/skia/ includes "T2EmbApi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/T2EmbApi.h"), + # device/vr/windows/ includes "D3D11_1.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/D3D11_1.h"), + # rlz/win/ includes "Sddl.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/Sddl.h"), + # chrome/common/safe_browsing/ includes "softpub.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/softpub.h"), + # services/device/generic_sensor/ includes "Sensors.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Sensors.h"), + # third_party/webrtc/modules/desktop_capture/win includes "windows.graphics.capture.interop.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/windows.graphics.capture.interop.h"), + # third_party/skia/ includes "FontSub.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/FontSub.h"), + # chrome/updater/ includes "regstr.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/regstr.h"), + # services/device/compute_pressure includes "pdh.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/pdh.h"), + # chrome/installer/ includes "mshtmhst.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mshtmhst.h"), + # net/ssl/ includes "NCrypt.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/NCrypt.h"), + # device/fido/win/ includes "Combaseapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Combaseapi.h"), + # components/device_signals/core/system_signals/win includes "wscapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/wscapi.h"), + # net/proxy_resolution/win/ includes "dhcpcsdk.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dhcpcsdk.h"), + # third_party/dawn/third_party/glfw includes "xinput.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/xinput.h"), + # v8/tools/v8windbg includes "pathcch.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/pathcch.h"), + # remoting/host includes "rpcproxy.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/rpcproxy.h"), + # sandbox/win includes "Aclapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Aclapi.h"), + # ui/accessibility/platform includes "uiautomation.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/uiautomation.h"), + # chrome/credential_provider/gaiacp includes "ntsecapi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ntsecapi.h"), + # net/dns includes "Winsock2.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winsock2.h"), + # media/cdm/win includes "mferror.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mferror.h"), + # chrome/credentialProvider/gaiacp includes "Winternl.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winternl.h"), + # media/audio/win includes "audioclient.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/audioclient.h"), + # media/audio/win includes "MMDeviceAPI.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/MMDeviceAPI.h"), + # net/proxy_resolution/win includes "dhcpv6csdk.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/dhcpv6csdk.h"), + # components/system_media_controls/win includes "systemmediatransportcontrolsinterop.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/systemmediatransportcontrolsinterop.h"), + # ui/native_theme includes "Windows.Media.ClosedCaptioning.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/cppwinrt/winrt/Windows.Media.ClosedCaptioning.h"), + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/winrt/Windows.Media.ClosedCaptioning.h"), + # media/audio/win includes "Functiondiscoverykeys_devpkey.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Functiondiscoverykeys_devpkey.h"), + # device/fido includes "Winuser.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Winuser.h"), + # chrome/updater/win includes "msxml2.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/msxml2.h"), + # remoting/host includes "ime.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/ime.h"), + # remoting/host/win includes "D3DCommon.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/D3DCommon.h"), + # ui/views/controls/menu includes "Vssym32.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Vssym32.h"), + # third_party/wtl includes "richedit.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/richedit.h"), + # chrome/updater/net includes "Urlmon.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Urlmon.h"), + # device/gamepad includes "XInput.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/XInput.h"), + # chrome/credential_provider/gaiacp includes "Shlobj.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Shlobj.h"), + # content/renderer includes "mlang.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/mlang.h"), + # components/storage_monitor includes "portabledevice.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/portabledevice.h"), + # third_party/wtl includes "richole.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/richole.h"), + # chrome/utility/importer includes "intshcut.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/intshcut.h"), + # chrome/browser/net includes "Ws2spi.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/Ws2spi.h"), + # chrome/browser/enterprise/platform_auth includes "proofofpossessioncookieinfo.h)" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/proofofpossessioncookieinfo.h"), + # chrome/utility/importer includes "urlhist.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/urlhist.h"), + # chrome/updater/win/installer includes "msiquery.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/um/msiquery.h"), + # third_party/win_virtual_display/controller includes "Devpropdef.h" + path.join(win_toolchain_dir, "Windows Kits/10/Include/10.0.22621.0/shared/Devpropdef.h"), + ], + }) + remote = True step_config["rules"].extend([ { "name": "clang-cl/cxx", "action": "(.*_)?cxx", "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", "platform_ref": "clang-cl", - "remote": True, + "remote": remote, "remote_wrapper": reproxy_config["remote_wrapper"], "timeout": "2m", }, @@ -215,7 +238,7 @@ "action": "(.*_)?cc", "command_prefix": "..\\..\\third_party\\llvm-build\\Release+Asserts\\bin\\clang-cl.exe", "platform_ref": "clang-cl", - "remote": True, + "remote": remote, "remote_wrapper": reproxy_config["remote_wrapper"], "timeout": "2m", }, @@ -228,7 +251,7 @@ ], "handler": "clang_compile_coverage", "platform_ref": "clang-cl", - "remote": True, + "remote": remote, "remote_wrapper": reproxy_config["remote_wrapper"], "timeout": "2m", }, @@ -241,7 +264,7 @@ ], "handler": "clang_compile_coverage", "platform_ref": "clang-cl", - "remote": True, + "remote": remote, "remote_wrapper": reproxy_config["remote_wrapper"], "timeout": "2m", },
diff --git a/build/config/siso/cros.star b/build/config/siso/cros.star new file mode 100644 index 0000000..a5faff5 --- /dev/null +++ b/build/config/siso/cros.star
@@ -0,0 +1,114 @@ +# -*- bazel-starlark -*- +# 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. +"""Siso configuration for ChromeOS builds.""" + +load("@builtin//lib/gn.star", "gn") +load("@builtin//path.star", "path") +load("@builtin//struct.star", "module") + +def __filegroups(ctx): + fg = {} + if not "args.gn" in ctx.metadata: + print("no args.gn") + return fg + gn_args = gn.args(ctx) + if not "cros_target_cxx" in gn_args: + print("no cros_target_cxx") + return fg + toolchain = gn_args.get("cros_target_cxx") + toolchain = toolchain.strip('"') + toolchain = ctx.fs.canonpath(toolchain) + print("toolchain = %s" % toolchain) + if toolchain: + toolchain = path.dir(path.dir(toolchain)) + fg[toolchain + ":headers"] = { + "type": "glob", + "includes": ["*"], + } + if not "target_sysroot" in gn_args: + print("no target_sysroot") + return fg + sysroot = gn_args.get("target_sysroot") + sysroot = sysroot.strip('"') + sysroot = ctx.fs.canonpath(sysroot) + print("sysroot = %s" % sysroot) + if sysroot: + fg[path.join(sysroot, "usr/include") + ":include"] = { + "type": "glob", + "includes": ["*"], + # needs bits/stab.def, c++/* + } + fg[path.join(sysroot, "usr/lib") + ":headers"] = { + "type": "glob", + "includes": ["*.h", "crtbegin.o"], + } + fg[path.join(sysroot, "usr/lib64") + ":headers"] = { + "type": "glob", + "includes": ["*.h"], + } + print(fg) + return fg + +def __cros_compiler(ctx, cmd): + tool_inputs = cmd.tool_inputs + for i, arg in enumerate(cmd.args): + if arg.startswith("-fprofile-sample-use="): + # profile data is in ninja input (direct or indirect), + # but siso doesn't include ninja inputs for deps=gcc + # (it would include lots of unnecessary inputs) + # so just add profdata by checking command line flag. + profdata = ctx.fs.canonpath(arg.removeprefix("-fprofile-sample-use=")) + tool_inputs.append(profdata) + ctx.actions.fix(tool_inputs = tool_inputs) + +__handlers = { + "cros_compiler": __cros_compiler, +} + +def __step_config(ctx, step_config): + if not "args.gn" in ctx.metadata: + return step_config + gn_args = gn.args(ctx) + if "cros_target_cxx" in gn_args: + toolchain = gn_args.get("cros_target_cxx") + if toolchain: + step_config["rules"].extend([ + { + "name": "clang-cros/cxx", + "command_prefix": "../../build/cros_cache/chrome-sdk/", + "remote": True, + "handler": "cros_compiler", + "canonicalize_dir": True, + "timeout": "5m", + }, + { + "name": "clang-cros/cc", + "command_prefix": "../../build/cros_cache/chrome-sdk/", + "remote": True, + "handler": "cros_compiler", + "canonicalize_dir": True, + "timeout": "5m", + }, + ]) + if "target_sysroot" in gn_args: + sysroot = gn_args.get("target_sysroot") + if sysroot: + sysroot = sysroot.strip('"') + sysroot = ctx.fs.canonpath(sysroot) + step_config["input_deps"].update({ + sysroot + ":headers": [ + path.join(sysroot, "usr/include") + ":include", + path.join(sysroot, "usr/lib") + ":headers", + path.join(sysroot, "usr/lib64") + ":headers", + ], + }) + return step_config + +cros = module( + "cros", + filegroups = __filegroups, + handlers = __handlers, + step_config = __step_config, +)
diff --git a/build/config/siso/linux.star b/build/config/siso/linux.star index abf04b7..1c6208f 100644 --- a/build/config/siso/linux.star +++ b/build/config/siso/linux.star
@@ -7,6 +7,7 @@ load("@builtin//struct.star", "module") load("./android.star", "android") load("./clang_linux.star", "clang") +load("./cros.star", "cros") load("./config.star", "config") load("./nacl_linux.star", "nacl") load("./nasm_linux.star", "nasm") @@ -19,6 +20,7 @@ fg = {} fg.update(android.filegroups(ctx)) fg.update(clang.filegroups(ctx)) + fg.update(cros.filegroups(ctx)) fg.update(nacl.filegroups(ctx)) fg.update(nasm.filegroups(ctx)) fg.update(proto.filegroups(ctx)) @@ -29,6 +31,7 @@ __handlers = {} __handlers.update(android.handlers) __handlers.update(clang.handlers) +__handlers.update(cros.handlers) __handlers.update(nacl.handlers) __handlers.update(nasm.handlers) __handlers.update(proto.handlers) @@ -86,6 +89,7 @@ step_config = android.step_config(ctx, step_config) step_config = clang.step_config(ctx, step_config) + step_config = cros.step_config(ctx, step_config) step_config = nacl.step_config(ctx, step_config) step_config = nasm.step_config(ctx, step_config) step_config = proto.step_config(ctx, step_config)
diff --git a/buildtools/reclient_cfgs/configure_reclient_cfgs.py b/buildtools/reclient_cfgs/configure_reclient_cfgs.py index 38409c1..82bbc1048 100755 --- a/buildtools/reclient_cfgs/configure_reclient_cfgs.py +++ b/buildtools/reclient_cfgs/configure_reclient_cfgs.py
@@ -54,8 +54,8 @@ return None return subprocess.check_output( ['git', 'log', '-1', '--format=%H'], - cwd= nacl_dir, shell=os.name == 'nt', - ).decode('utf-8').strip() + cwd= nacl_dir, shell=os.name == 'nt', text=True, + ).strip() class CipdError(Exception): """Raised by configure_reclient_cfgs on fatal cipd error.""" @@ -83,12 +83,16 @@ raise CipdError(e.output) from e def IsCipdLoggedIn(): - ret = subprocess.call( + ps = subprocess.run( ['cipd', 'auth-info'], - shell=True, - stderr=subprocess.PIPE, - stdout=subprocess.DEVNULL) - return ret == 0 + shell=True, capture_output=True, text=True) + logging.info( + "log for http://b/304677840: stdout from cipd auth-info: %s", + ps.stdout) + logging.info( + "log for http://b/304677840: stderr from cipd auth-info: %s", + ps.stderr) + return ps.returncode == 0 def RbeProjectFromInstance(instance): m = re.fullmatch(r'projects/([-\w]+)/instances/[-\w]+', instance)
diff --git a/chrome/VERSION b/chrome/VERSION index 41b7bb6..a34ee30 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=120 MINOR=0 -BUILD=6060 +BUILD=6061 PATCH=0
diff --git a/chrome/android/profiles/arm.newest.txt b/chrome/android/profiles/arm.newest.txt index fa3081bb..e9c643f 100644 --- a/chrome/android/profiles/arm.newest.txt +++ b/chrome/android/profiles/arm.newest.txt
@@ -1 +1 @@ -chromeos-chrome-arm-120.0.6057.0_rc-r2-merged.afdo.bz2 +chromeos-chrome-arm-120.0.6058.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 955a2190..a059efa8 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-120.0.6057.0_rc-r2-merged.afdo.bz2 +chromeos-chrome-amd64-120.0.6058.0_rc-r1-merged.afdo.bz2
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 8ef60a1..315aa68 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -3287,9 +3287,9 @@ desc="Subpage summary for cookie theft warning with account info."> This file can harm your personal and social network accounts, including <ph name="USER_EMAIL">$1<ex>john@google.com</ex></ph> </message> - <message name="IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_MALWARE" - desc="Subpage summary text for a download item when the downloaded file may hide malware."> - This file may hide malware + <message name="IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_ARCHIVE_MALWARE" + desc="Subpage summary text for a download item when the downloaded archive file may hide malware."> + This archive file includes other files that may hide malware </message> <!-- Deep scanning in download bubble -->
diff --git a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_ARCHIVE_MALWARE.png.sha1 b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_ARCHIVE_MALWARE.png.sha1 new file mode 100644 index 0000000..57c71aa --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_ARCHIVE_MALWARE.png.sha1
@@ -0,0 +1 @@ +bce360a5edfdf9855442a180790d9af88bf90095 \ No newline at end of file
diff --git a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_MALWARE.png.sha1 b/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_MALWARE.png.sha1 deleted file mode 100644 index 258c802..0000000 --- a/chrome/app/generated_resources_grd/IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_MALWARE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -aea8d231ebbba8b46286dfaee61b7208a683a678 \ No newline at end of file
diff --git a/chrome/app/gmc_strings.grdp b/chrome/app/gmc_strings.grdp index 657ec95..81f8ded 100644 --- a/chrome/app/gmc_strings.grdp +++ b/chrome/app/gmc_strings.grdp
@@ -52,6 +52,12 @@ <message name="IDS_GLOBAL_MEDIA_CONTROLS_CONTROL_CAST_SESSIONS_PROMO" desc="Text shown on promotional UI appearing next to the global media controls button to promote controlling cast sessions."> Control the media you're casting </message> + <message name="IDS_GMC_LOCAL_MEDIA_CAST_SESSIONS_PROMO" desc="Text shown on promotional UI appearing next to the global media controls button to promote starting cast sessions for local media."> + Cast video files on your device to another screen + </message> + <message name="IDS_GMC_LOCAL_MEDIA_CAST_START_PROMO" desc="Text used by the screenreader when accessing the IPH for starting a cast session for local media"> + Initiate casting of video files from your device to another screen + </message> <message name="IDS_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE" desc="Title of the toolbar button's context menu item, which, on click, opens a page to report an issue with Cast."> Report an issue with Google Cast </message>
diff --git a/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_SESSIONS_PROMO.png.sha1 b/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_SESSIONS_PROMO.png.sha1 new file mode 100644 index 0000000..bbcc00eb5 --- /dev/null +++ b/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_SESSIONS_PROMO.png.sha1
@@ -0,0 +1 @@ +a9bdb15c7d9c4609c605a34d517b7efd2e251c89 \ No newline at end of file
diff --git a/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_START_PROMO.png.sha1 b/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_START_PROMO.png.sha1 new file mode 100644 index 0000000..bbcc00eb5 --- /dev/null +++ b/chrome/app/gmc_strings_grdp/IDS_GMC_LOCAL_MEDIA_CAST_START_PROMO.png.sha1
@@ -0,0 +1 @@ +a9bdb15c7d9c4609c605a34d517b7efd2e251c89 \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index f8c84f3..259d5b9 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -5248,6 +5248,7 @@ "//ash/webui/system_extensions_internals_ui/mojom", "//build:chromeos_buildflags", "//chrome/app/theme:chrome_unscaled_resources_grit", + "//chrome/browser/apps/almanac_api_client", "//chrome/browser/apps/app_deduplication_service", "//chrome/browser/apps/app_discovery_service", "//chrome/browser/apps/app_preload_service", @@ -5417,6 +5418,9 @@ # TODO(crbug.com/1253318): Refactor window_management into ash/ and expose # the InstanceRegistry via an InstanceRegistryWrapper, then remove this. "//chrome/browser/ash/system_extensions/api/window_management", + + # Dependent on ProfileKey and ImageFetcherServiceFactory. + "//chrome/browser/apps/almanac_api_client", ] if (target_cpu == "x64") {
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index d906384..b8457cd 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -340,6 +340,7 @@ #endif #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) +#include "chrome/browser/apps/link_capturing/link_capturing_features.h" #include "chrome/browser/enterprise/profile_management/profile_management_features.h" #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) @@ -10977,6 +10978,12 @@ {"uno-desktop", flag_descriptions::kUnoDesktopName, flag_descriptions::kUnoDesktopDescription, kOsLinux | kOsMac | kOsWin, FEATURE_VALUE_TYPE(switches::kUnoDesktop)}, + + {"enable-user-link-capturing-pwa", + flag_descriptions::kDesktopPWAsUserLinkCapturingName, + flag_descriptions::kDesktopPWAsUserLinkCapturingDescription, + kOsLinux | kOsMac | kOsWin, + FEATURE_VALUE_TYPE(apps::features::kDesktopPWAsLinkCapturing)}, #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) {"forgot-password-form-support",
diff --git a/chrome/browser/apps/almanac_api_client/BUILD.gn b/chrome/browser/apps/almanac_api_client/BUILD.gn index 5b160a6..fded467f 100644 --- a/chrome/browser/apps/almanac_api_client/BUILD.gn +++ b/chrome/browser/apps/almanac_api_client/BUILD.gn
@@ -10,6 +10,8 @@ sources = [ "almanac_api_util.cc", "almanac_api_util.h", + "almanac_icon_cache.cc", + "almanac_icon_cache.h", "device_info_manager.cc", "device_info_manager.h", "proto_file_manager.cc", @@ -26,7 +28,12 @@ "//chrome/common:channel_info", "//chromeos/ash/components/system", "//chromeos/version", + "//components/image_fetcher/core", "//components/language/core/browser", + + # TODO(elitsa@google.com): This is needed because of profile_key. + # Split the target out of //chrome/browser. + "//components/leveldb_proto", "//components/prefs", "//components/version_info", "//google_apis", @@ -40,6 +47,7 @@ sources = [ "almanac_api_util_unittest.cc", + "almanac_icon_cache_unittest.cc", "device_info_manager_unittest.cc", "proto_file_manager_unittest.cc", ] @@ -51,6 +59,8 @@ "//chrome/browser/apps/app_deduplication_service/proto", "//chrome/common:channel_info", "//chrome/test:test_support", + "//components/image_fetcher/core", + "//components/image_fetcher/core:test_support", "//components/language/core/browser", "//components/prefs", "//testing/gtest",
diff --git a/chrome/browser/apps/almanac_api_client/almanac_icon_cache.cc b/chrome/browser/apps/almanac_api_client/almanac_icon_cache.cc new file mode 100644 index 0000000..4c580e2 --- /dev/null +++ b/chrome/browser/apps/almanac_api_client/almanac_icon_cache.cc
@@ -0,0 +1,94 @@ +// 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/apps/almanac_api_client/almanac_icon_cache.h" + +#include "chrome/browser/image_fetcher/image_fetcher_service_factory.h" +#include "chrome/browser/profiles/profile_key.h" +#include "components/image_fetcher/core/image_fetcher.h" +#include "components/image_fetcher/core/image_fetcher_service.h" +#include "components/image_fetcher/core/request_metadata.h" +#include "net/traffic_annotation/network_traffic_annotation.h" +#include "ui/gfx/image/image.h" +#include "url/gurl.h" + +namespace apps { +namespace { +// The UMA name for the Almanac Icon Cache client of the Image Fetcher service. +constexpr char kUmaClientName[] = "AlmanacIcons"; + +// Description of the network request. +constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = + net::DefineNetworkTrafficAnnotation("almanac_icon_cache", R"( + semantics { + sender: "Almanac Apps Icon Cache" + description: + "Sends a request to either a website or a Google-owned server to " + "retrieve an app icon. The data is used by clients of the service " + "for displaying app results." + trigger: + "A request is sent when an app is to be displayed e.g. installing " + "or searching for an app." + internal { + contacts { + email: "cros-apps-foundation-system@google.com" + } + } + user_data: { + type: NONE + } + data: "Icon URL" + destination: WEBSITE + last_reviewed: "2023-10-09" + } + policy { + cookies_allowed: NO + setting: "This feature cannot be disabled by settings." + policy_exception_justification: + "This feature is required to deliver core user experiences and " + "cannot be disabled by policy." + } + )"); + +void OnIconDownloaded(base::OnceCallback<void(const gfx::Image&)> callback, + const gfx::Image& icon, + const image_fetcher::RequestMetadata& metadata) { + std::move(callback).Run(icon); +} +} // namespace + +AlmanacIconCache::AlmanacIconCache(ProfileKey* key) { + image_fetcher::ImageFetcherService* image_fetcher_service = + ImageFetcherServiceFactory::GetForKey(key); + if (!image_fetcher_service) { + return; + } + + // TODO(b/296157719): Verify kDiskCacheOnly works. Otherwise use + // kNetworkOnly. + image_fetcher_ = image_fetcher_service->GetImageFetcher( + image_fetcher::ImageFetcherConfig::kDiskCacheOnly); +} + +AlmanacIconCache::AlmanacIconCache() = default; +AlmanacIconCache::~AlmanacIconCache() = default; + +image_fetcher::ImageFetcher* AlmanacIconCache::GetImageFetcher() { + return image_fetcher_.get(); +} + +void AlmanacIconCache::GetIcon( + const GURL& icon_url, + base::OnceCallback<void(const gfx::Image&)> callback) { + if (!GetImageFetcher()) { + std::move(callback).Run(gfx::Image()); + return; + } + image_fetcher::ImageFetcherParams params(kTrafficAnnotation, kUmaClientName); + GetImageFetcher()->FetchImage( + icon_url, base::BindOnce(&OnIconDownloaded, std::move(callback)), + std::move(params)); +} + +} // namespace apps
diff --git a/chrome/browser/apps/almanac_api_client/almanac_icon_cache.h b/chrome/browser/apps/almanac_api_client/almanac_icon_cache.h new file mode 100644 index 0000000..ab2dcb25 --- /dev/null +++ b/chrome/browser/apps/almanac_api_client/almanac_icon_cache.h
@@ -0,0 +1,46 @@ +// 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_APPS_ALMANAC_API_CLIENT_ALMANAC_ICON_CACHE_H_ +#define CHROME_BROWSER_APPS_ALMANAC_API_CLIENT_ALMANAC_ICON_CACHE_H_ + +#include "base/functional/callback.h" + +class GURL; +class ProfileKey; + +namespace image_fetcher { +class ImageFetcher; +} // namespace image_fetcher + +namespace gfx { +class Image; +} // namespace gfx + +namespace apps { + +// Generic icon cache for the different use cases of the Almanac server. +class AlmanacIconCache { + public: + explicit AlmanacIconCache(ProfileKey* key); + virtual ~AlmanacIconCache(); + + // Downloads the icon for the specified GURL. + void GetIcon(const GURL& icon_url, + base::OnceCallback<void(const gfx::Image&)> callback); + + protected: + AlmanacIconCache(); + + // Method is overridden for the mock version of the image fetcher to + // propagate. + virtual image_fetcher::ImageFetcher* GetImageFetcher(); + + private: + raw_ptr<image_fetcher::ImageFetcher> image_fetcher_ = nullptr; +}; + +} // namespace apps + +#endif // CHROME_BROWSER_APPS_ALMANAC_API_CLIENT_ALMANAC_ICON_CACHE_H_
diff --git a/chrome/browser/apps/almanac_api_client/almanac_icon_cache_unittest.cc b/chrome/browser/apps/almanac_api_client/almanac_icon_cache_unittest.cc new file mode 100644 index 0000000..b72d0ee --- /dev/null +++ b/chrome/browser/apps/almanac_api_client/almanac_icon_cache_unittest.cc
@@ -0,0 +1,98 @@ +// 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/apps/almanac_api_client/almanac_icon_cache.h" + +#include <memory> + +#include "base/memory/weak_ptr.h" +#include "base/task/single_thread_task_runner.h" +#include "base/test/task_environment.h" +#include "base/test/test_future.h" +#include "components/image_fetcher/core/mock_image_fetcher.h" +#include "components/image_fetcher/core/request_metadata.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/image/image.h" +#include "ui/gfx/image/image_unittest_util.h" +#include "ui/resources/grit/ui_resources.h" + +namespace apps { +namespace { + +using testing::_; + +ACTION_P(PostFetchReply, p0) { + base::SingleThreadTaskRunner::GetCurrentDefault()->PostTask( + FROM_HERE, + base::BindOnce(std::move(*arg2), p0, image_fetcher::RequestMetadata())); +} + +class TestAlmanacIconCache : public AlmanacIconCache { + public: + TestAlmanacIconCache() + : mock_image_fetcher_( + std::make_unique<image_fetcher::MockImageFetcher>()) {} + ~TestAlmanacIconCache() override = default; + + image_fetcher::MockImageFetcher* mock_image_fetcher() const { + return mock_image_fetcher_.get(); + } + + private: + image_fetcher::ImageFetcher* GetImageFetcher() override { + return mock_image_fetcher_.get(); + } + gfx::Image image_override_; + + std::unique_ptr<image_fetcher::MockImageFetcher> mock_image_fetcher_; +}; + +class AlmanacIconCacheTest : public testing::Test { + public: + AlmanacIconCacheTest() + : almanac_image_fetcher_(std::make_unique<TestAlmanacIconCache>()) {} + + gfx::Image& GetTestImage(int resource_id) { + return ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed( + resource_id); + } + + image_fetcher::MockImageFetcher* mock_image_fetcher() { + return almanac_image_fetcher_->mock_image_fetcher(); + } + + TestAlmanacIconCache* almanac_image_fetcher() { + return almanac_image_fetcher_.get(); + } + + private: + base::test::TaskEnvironment task_environment_; + std::unique_ptr<TestAlmanacIconCache> almanac_image_fetcher_; +}; + +TEST_F(AlmanacIconCacheTest, DownloadIconSuccess) { + GURL fake_url = GURL("https://www.example.com/fake_image"); + gfx::Image expected_image = GetTestImage(IDR_DEFAULT_FAVICON); + base::test::TestFuture<const gfx::Image&> received_image; + + EXPECT_CALL(*mock_image_fetcher(), FetchImageAndData_(fake_url, _, _, _)) + .WillOnce(PostFetchReply(expected_image)); + almanac_image_fetcher()->GetIcon(fake_url, received_image.GetCallback()); + + EXPECT_TRUE(gfx::test::AreImagesEqual(expected_image, received_image.Get())); +} + +TEST_F(AlmanacIconCacheTest, DownloadIconServerFailure) { + GURL fake_url = GURL("https://www.example.com/fake_image"); + gfx::Image expected_image = gfx::Image(); + base::test::TestFuture<const gfx::Image&> received_image; + + EXPECT_CALL(*mock_image_fetcher(), FetchImageAndData_(fake_url, _, _, _)) + .WillOnce(PostFetchReply(gfx::Image())); + almanac_image_fetcher()->GetIcon(fake_url, received_image.GetCallback()); + + EXPECT_TRUE(gfx::test::AreImagesEqual(expected_image, received_image.Get())); +} +} // namespace +} // namespace apps
diff --git a/chrome/browser/apps/app_discovery_service/almanac_api/launcher_app.proto b/chrome/browser/apps/app_discovery_service/almanac_api/launcher_app.proto index c91a698..cc6eb87 100644 --- a/chrome/browser/apps/app_discovery_service/almanac_api/launcher_app.proto +++ b/chrome/browser/apps/app_discovery_service/almanac_api/launcher_app.proto
@@ -36,33 +36,8 @@ // A set of icons for the app group in the requested language. repeated Icon icons = 3; - // One or more app instances belonging to the app group. - repeated AppInstance app_instances = 4; - } - - message AppInstance { - // PackageId for the installable app that the information is being requested - // for. This is always "platform:primary_key", for example - // "android:com.spotify.music" or "web:http://manifest/id" - optional string package_id = 1; - - // The name of the app in the requested language. - optional string name = 2; - - // A set of icons for this app instance. - repeated Icon icons = 3; - - // TODO(b/296157719): verify whether we need the fields and whether to move - // them to extras. - - // The deeplink of the app. - optional string deeplink = 4; - - // The app identifier for the given platform. - optional string app_id_for_platform = 5; - - // Codes of countries where the app is available. - repeated string available_country_codes = 6; + // An action link for the app. This is typically a deeplink. + optional string action_link = 4; } message Icon { @@ -72,10 +47,7 @@ // Width of the icon in pixels. optional int32 width_in_pixels = 2; - // Mime type of the icon. - optional string mime_type = 3; - // Whether or not we have permission from the platform to mask the icon. - optional bool is_masking_allowed = 4; + optional bool is_masking_allowed = 3; } }
diff --git a/chrome/browser/apps/app_discovery_service/almanac_fetcher.cc b/chrome/browser/apps/app_discovery_service/almanac_fetcher.cc index ea6dcd2..ec7aaae1 100644 --- a/chrome/browser/apps/app_discovery_service/almanac_fetcher.cc +++ b/chrome/browser/apps/app_discovery_service/almanac_fetcher.cc
@@ -28,26 +28,24 @@ "app_discovery_service.last_launcher_app_almanac_call_timestamp"; // Maps the Almanac Launcher App proto response to an app result. The icon -// information is not needed here as this is all handled by the icon cache. +// url is passed and later handled by the icon cache. std::vector<Result> MapToApps(const proto::LauncherAppResponse& proto) { std::vector<Result> apps; for (proto::LauncherAppResponse::AppGroup app_group : proto.app_groups()) { - if (app_group.app_instances().empty()) { + // Skip apps we cannot display. + if (app_group.icons().empty() || app_group.name().empty() || + app_group.action_link().empty()) { continue; } - // There should be just a single GFN instance. We want to handle more - // platforms in the future but for now just read the first one. - const proto::LauncherAppResponse::AppInstance& instance = - app_group.app_instances(0); + // There should be just a single GFN app with a single icon. We want to + // handle more in the future but for now just read the first icon. + const proto::LauncherAppResponse::Icon& icon = app_group.icons(0); auto extras = std::make_unique<GameExtras>( - // TODO(b/296157719): construct this from the package id platform - // instead of hardcoding. u"GeForce NOW", - /*relative_icon_path_=*/base::FilePath(""), - /*is_icon_masking_allowed_=*/false, GURL(instance.deeplink())); + /*relative_icon_path_=*/base::FilePath(""), icon.is_masking_allowed(), + GURL(app_group.action_link())); - // TODO(b/296157719): use the package id instead. - apps.emplace_back(AppSource::kGames, instance.app_id_for_platform(), + apps.emplace_back(AppSource::kGames, icon.url(), base::UTF8ToUTF16(app_group.name()), std::move(extras)); } return apps;
diff --git a/chrome/browser/apps/app_discovery_service/almanac_fetcher_unittest.cc b/chrome/browser/apps/app_discovery_service/almanac_fetcher_unittest.cc index f2c9649..50f2016 100644 --- a/chrome/browser/apps/app_discovery_service/almanac_fetcher_unittest.cc +++ b/chrome/browser/apps/app_discovery_service/almanac_fetcher_unittest.cc
@@ -32,52 +32,60 @@ constexpr char kOneApp[] = R"pb(app_groups: { uuid: "cf2890ac-486f-11ee-be56-0242ac120002" - name: "group_name" - app_instances: { - name: "app_name" - package_id: "gfn:cf2be56486f11ee" - app_id_for_platform: "cf2be56486f11ee" - deeplink: "https://game-deeplink.com/cf2be56486f11ee" - icons: { - url: "http://icon/" - width_in_pixels: 20 - mime_type: "image/png" - is_masking_allowed: true - } + name: "app_name" + action_link: "https://game-deeplink.com/cf2be56486f11ee" + icons: { + url: "http://icon/" + width_in_pixels: 20 + is_masking_allowed: true } })pb"; -constexpr char kTwoApps[] = +constexpr char kTwoValidApps[] = R"pb(app_groups: { uuid: "e42c6c70-7732-437f-b2e7-0d17036b8cc1" - name: "group_name1" - app_instances: { - name: "app_name1" - package_id: "gfn:jrioj324j2095245234320o" - app_id_for_platform: "jrioj324j2095245234320o" - deeplink: "https://game-deeplink.com/jrioj324j2095245234320o" - icons: { - url: "http://icon/" - width_in_pixels: 20 - mime_type: "image/png" - is_masking_allowed: true - } + name: "app_name1" + action_link: "https://game-deeplink.com/jrioj324j2095245234320o" + icons: { + url: "http://icon1/" + width_in_pixels: 20 + is_masking_allowed: true } } app_groups: { uuid: "d8eb7470-9d43-472c-aa49-125f5c3111d4" - name: "group_name2" - app_instances: { - name: "app_name2" - package_id: "gfn:reijarowaiore131983u12jkljs893" - app_id_for_platform: "reijarowaiore131983u12jkljs893" - deeplink: "https://game-deeplink.com/reijarowaiore131983u12jkljs893" - icons: { - url: "http://icon2/" - width_in_pixels: 30 - mime_type: "image/png" - is_masking_allowed: false - } + name: "app_name2" + action_link: "https://game-deeplink.com/reijarowaiore131983u12jkljs893" + icons: { + url: "http://icon2/" + width_in_pixels: 30 + is_masking_allowed: false } + } + # The invalid games below are filtered out. + app_groups: { + uuid: "invalid-game1-id" + name: "" + action_link: "https://invalid-game1-deeplink.com/" + icons: { + url: "http://icon3/" + width_in_pixels: 30 + is_masking_allowed: false + } + } + app_groups: { + uuid: "invalid-game2-id" + name: "invalid-game2" + action_link: "" + icons: { + url: "http://icon3/" + width_in_pixels: 30 + is_masking_allowed: false + } + } + app_groups: { + uuid: "invalid-game3-id" + name: "invalid-game3" + action_link: "https://invalid-game3-deeplink.com/" })pb"; // The path is equivalent to $root_gen_dir, where the protos are generated. @@ -118,7 +126,7 @@ proto_loader_ = std::make_unique<base::TestProtoLoader>( launcher_app_descriptor_, "apps.proto.LauncherAppResponse"); - SetServerResponse(url_loader_factory_, proto_loader(), kTwoApps); + SetServerResponse(url_loader_factory_, proto_loader(), kTwoValidApps); } TestingProfile* profile() { return profile_.get(); } @@ -148,18 +156,19 @@ std::vector<Result> results = waiter.Take(); ASSERT_EQ(results.size(), 2u); EXPECT_EQ(results[0].GetAppSource(), AppSource::kGames); - EXPECT_EQ(results[0].GetAppId(), "jrioj324j2095245234320o"); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name1"); + EXPECT_EQ(results[0].GetAppId(), "http://icon1/"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name1"); ASSERT_TRUE(results[0].GetSourceExtras()); auto* game_extras = results[0].GetSourceExtras()->AsGameExtras(); ASSERT_TRUE(game_extras); EXPECT_EQ(game_extras->GetSource(), u"GeForce NOW"); EXPECT_EQ(game_extras->GetDeeplinkUrl(), GURL("https://game-deeplink.com/jrioj324j2095245234320o")); + EXPECT_TRUE(game_extras->GetIsIconMaskingAllowed()); EXPECT_EQ(results[1].GetAppSource(), AppSource::kGames); - EXPECT_EQ(results[1].GetAppId(), "reijarowaiore131983u12jkljs893"); - EXPECT_EQ(results[1].GetAppTitle(), u"group_name2"); + EXPECT_EQ(results[1].GetAppId(), "http://icon2/"); + EXPECT_EQ(results[1].GetAppTitle(), u"app_name2"); EXPECT_TRUE(results[1].GetSourceExtras()); game_extras = results[1].GetSourceExtras()->AsGameExtras(); ASSERT_TRUE(game_extras); @@ -167,6 +176,7 @@ EXPECT_EQ(game_extras->GetDeeplinkUrl(), GURL("https://game-deeplink.com/" "reijarowaiore131983u12jkljs893")); + EXPECT_FALSE(game_extras->GetIsIconMaskingAllowed()); EXPECT_GT(almanac_fetcher()->GetLastAppsUpdateTime(), before_download); } @@ -189,8 +199,8 @@ almanac_fetcher()->RegisterForAppUpdates(waiter.GetRepeatingCallback()); std::vector<Result> results = waiter.Take(); ASSERT_EQ(results.size(), 2u); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name1"); - EXPECT_EQ(results[1].GetAppTitle(), u"group_name2"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name1"); + EXPECT_EQ(results[1].GetAppTitle(), u"app_name2"); // Confirm a new subscriber also gets notified as the apps are available. base::test::TestFuture<const std::vector<Result>&> waiter2; @@ -206,8 +216,8 @@ almanac_fetcher()->RegisterForAppUpdates(waiter.GetRepeatingCallback()); std::vector<Result> results = waiter.Take(); ASSERT_EQ(results.size(), 2u); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name1"); - EXPECT_EQ(results[1].GetAppTitle(), u"group_name2"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name1"); + EXPECT_EQ(results[1].GetAppTitle(), u"app_name2"); base::Time after_download = almanac_fetcher()->GetLastAppsUpdateTime(); EXPECT_GT(after_download, before_download); @@ -228,8 +238,8 @@ almanac_fetcher()->RegisterForAppUpdates(waiter.GetRepeatingCallback()); std::vector<Result> results = waiter.Take(); ASSERT_EQ(results.size(), 2u); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name1"); - EXPECT_EQ(results[1].GetAppTitle(), u"group_name2"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name1"); + EXPECT_EQ(results[1].GetAppTitle(), u"app_name2"); EXPECT_GT(almanac_fetcher()->GetLastAppsUpdateTime(), before_download); // Re-set to initiate a new login. @@ -265,18 +275,19 @@ EXPECT_EQ(error, DiscoveryError::kSuccess); ASSERT_EQ(results.size(), 2u); EXPECT_EQ(results[0].GetAppSource(), AppSource::kGames); - EXPECT_EQ(results[0].GetAppId(), "jrioj324j2095245234320o"); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name1"); + EXPECT_EQ(results[0].GetAppId(), "http://icon1/"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name1"); ASSERT_TRUE(results[0].GetSourceExtras()); auto* game_extras = results[0].GetSourceExtras()->AsGameExtras(); ASSERT_TRUE(game_extras); EXPECT_EQ(game_extras->GetSource(), u"GeForce NOW"); EXPECT_EQ(game_extras->GetDeeplinkUrl(), GURL("https://game-deeplink.com/jrioj324j2095245234320o")); + EXPECT_TRUE(game_extras->GetIsIconMaskingAllowed()); EXPECT_EQ(results[1].GetAppSource(), AppSource::kGames); - EXPECT_EQ(results[1].GetAppId(), "reijarowaiore131983u12jkljs893"); - EXPECT_EQ(results[1].GetAppTitle(), u"group_name2"); + EXPECT_EQ(results[1].GetAppId(), "http://icon2/"); + EXPECT_EQ(results[1].GetAppTitle(), u"app_name2"); EXPECT_TRUE(results[1].GetSourceExtras()); game_extras = results[1].GetSourceExtras()->AsGameExtras(); ASSERT_TRUE(game_extras); @@ -284,6 +295,7 @@ EXPECT_EQ(game_extras->GetDeeplinkUrl(), GURL("https://game-deeplink.com/" "reijarowaiore131983u12jkljs893")); + EXPECT_FALSE(game_extras->GetIsIconMaskingAllowed()); })); // Re-set to initiate a new login. @@ -301,14 +313,15 @@ EXPECT_EQ(error, DiscoveryError::kSuccess); ASSERT_EQ(results.size(), 1u); EXPECT_EQ(results[0].GetAppSource(), AppSource::kGames); - EXPECT_EQ(results[0].GetAppId(), "cf2be56486f11ee"); - EXPECT_EQ(results[0].GetAppTitle(), u"group_name"); + EXPECT_EQ(results[0].GetAppId(), "http://icon/"); + EXPECT_EQ(results[0].GetAppTitle(), u"app_name"); ASSERT_TRUE(results[0].GetSourceExtras()); auto* game_extras = results[0].GetSourceExtras()->AsGameExtras(); ASSERT_TRUE(game_extras); EXPECT_EQ(game_extras->GetSource(), u"GeForce NOW"); EXPECT_EQ(game_extras->GetDeeplinkUrl(), GURL("https://game-deeplink.com/cf2be56486f11ee")); + EXPECT_TRUE(game_extras->GetIsIconMaskingAllowed()); })); } } // namespace
diff --git a/chrome/browser/apps/app_discovery_service/result.h b/chrome/browser/apps/app_discovery_service/result.h index 4fc3720..a21f6c2 100644 --- a/chrome/browser/apps/app_discovery_service/result.h +++ b/chrome/browser/apps/app_discovery_service/result.h
@@ -45,7 +45,10 @@ // The endpoint from which the app was fetched from. AppSource GetAppSource() const; - // The identifier used by the AppSource to identify the app. + // The identifier used by the AppSource to identify an app icon. + // Note this is NOT the same as ChromeOS app id. + // For the Almanac fetcher this is an icon url. After the migration is + // complete, we can further refactor and rename this. const std::string& GetAppId() const; // The title of the app to display to users.
diff --git a/chrome/browser/apps/link_capturing/enable_link_capturing_infobar_delegate.cc b/chrome/browser/apps/link_capturing/enable_link_capturing_infobar_delegate.cc index 32302d9..3dccf36e 100644 --- a/chrome/browser/apps/link_capturing/enable_link_capturing_infobar_delegate.cc +++ b/chrome/browser/apps/link_capturing/enable_link_capturing_infobar_delegate.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/functional/callback_helpers.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "base/numerics/clamped_math.h" @@ -70,24 +71,6 @@ debug_result.Set("supported_links_offer_dismiss_count", new_count); return base::Value(std::move(debug_result)); } - -base::Value EnableUserLinkCapturing(webapps::AppId app_id, - web_app::AppLock& app_lock) { - web_app::ScopedRegistryUpdate update = app_lock.sync_bridge().BeginUpdate(); - web_app::WebApp* app = update->UpdateApp(app_id); - - base::Value::Dict debug_result; - debug_result.Set("app_id", app_id); - if (!app) { - debug_result.Set("error", "AppId does not exist."); - debug_result.Set("user_link_capturing_set", false); - return base::Value(std::move(debug_result)); - } - app->SetIsUserSelectedAppForSupportedLinks(true); - - debug_result.Set("user_link_capturing_set", true); - return base::Value(std::move(debug_result)); -} } // namespace // Searches the toolbar on this web contents for this infobar, and returns it @@ -222,10 +205,8 @@ action_taken_ = true; base::RecordAction( base::UserMetricsAction("LinkCapturingAcceptedFromInfoBar")); - provider_->scheduler().ScheduleCallbackWithLock( - "EnableUserLinkCapturing", - std::make_unique<web_app::AppLockDescription>(app_id_), - base::BindOnce(&EnableUserLinkCapturing, app_id_)); + provider_->scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app_id_, true, base::DoNothing()); return true; }
diff --git a/chrome/browser/ash/accessibility/accessibility_manager.cc b/chrome/browser/ash/accessibility/accessibility_manager.cc index 90afa9e0..89c0f1c 100644 --- a/chrome/browser/ash/accessibility/accessibility_manager.cc +++ b/chrome/browser/ash/accessibility/accessibility_manager.cc
@@ -991,6 +991,10 @@ void AccessibilityManager::SetDarkenScreen(bool darken) { AccessibilityController::Get()->SetDarkenScreen(darken); + + if (screen_darken_observer_for_test_) { + screen_darken_observer_for_test_.Run(); + } } void AccessibilityManager::SetCaretHighlightEnabled(bool enabled) { @@ -2206,6 +2210,11 @@ g_braille_controller_for_test = controller; } +void AccessibilityManager::SetScreenDarkenObserverForTest( + base::RepeatingCallback<void()> observer) { + screen_darken_observer_for_test_ = observer; +} + void AccessibilityManager::SetFocusRingObserverForTest( base::RepeatingCallback<void()> observer) { AccessibilityFocusRingController::Get()->SetFocusRingObserverForTesting(
diff --git a/chrome/browser/ash/accessibility/accessibility_manager.h b/chrome/browser/ash/accessibility/accessibility_manager.h index 717f0f7..a08d584 100644 --- a/chrome/browser/ash/accessibility/accessibility_manager.h +++ b/chrome/browser/ash/accessibility/accessibility_manager.h
@@ -407,6 +407,7 @@ void SetProfileForTest(Profile* profile); static void SetBrailleControllerForTest( extensions::api::braille_display_private::BrailleController* controller); + void SetScreenDarkenObserverForTest(base::RepeatingCallback<void()> observer); void SetFocusRingObserverForTest(base::RepeatingCallback<void()> observer); // Runs when highlights are set or updated, but not when they are removed. void SetHighlightsObserverForTest(base::RepeatingCallback<void()> observer); @@ -650,6 +651,7 @@ bool dictation_triggered_by_user_ = false; bool ignore_dictation_locale_pref_change_ = false; + base::RepeatingCallback<void()> screen_darken_observer_for_test_; base::RepeatingCallback<void()> highlights_observer_for_test_; base::RepeatingCallback<void()> select_to_speak_state_observer_for_test_; base::RepeatingCallback<void(const gfx::Rect&)>
diff --git a/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc b/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc index 8f3a498..58ee28fc 100644 --- a/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc +++ b/chrome/browser/ash/accessibility/service/accessibility_service_client_browsertest.cc
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "ash/accessibility/accessibility_controller_impl.h" #include "ash/accessibility/ui/accessibility_focus_ring_controller_impl.h" #include "ash/accessibility/ui/accessibility_highlight_layer.h" #include "ash/public/cpp/accessibility_focus_ring_info.h" @@ -20,6 +21,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/test/base/in_process_browser_test.h" +#include "chromeos/dbus/power/fake_power_manager_client.h" #include "components/keyed_service/core/keyed_service.h" #include "content/public/browser/tts_utterance.h" #include "content/public/test/browser_test.h" @@ -867,6 +869,24 @@ waiter.Run(); } +IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest, DarkenScreen) { + auto client = TurnOnAccessibilityService(AssistiveTechnologyType::kChromeVox); + fake_service_->BindAnotherUserInterface(); + + base::RunLoop waiter; + AccessibilityManager::Get()->SetScreenDarkenObserverForTest( + base::BindLambdaForTesting([&waiter] { + waiter.Quit(); + + EXPECT_TRUE( + chromeos::FakePowerManagerClient::Get()->backlights_forced_off()); + })); + + fake_service_->RequestDarkenScreen(true); + + waiter.Run(); +} + IN_PROC_BROWSER_TEST_F(AccessibilityServiceClientTest, SetFocusRings) { auto client = TurnOnAccessibilityService(AssistiveTechnologyType::kSwitchAccess);
diff --git a/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc b/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc index d5e3f647..fcd3aa0 100644 --- a/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc +++ b/chrome/browser/ash/accessibility/service/fake_accessibility_service.cc
@@ -200,6 +200,12 @@ } } +void FakeAccessibilityService::RequestDarkenScreen(bool darken) { + for (auto& ux_client : ux_remotes_) { + ux_client->DarkenScreen(darken); + } +} + void FakeAccessibilityService::RequestSetFocusRings( std::vector<ax::mojom::FocusRingInfoPtr> focus_rings, ax::mojom::AssistiveTechnologyType at_type) {
diff --git a/chrome/browser/ash/accessibility/service/fake_accessibility_service.h b/chrome/browser/ash/accessibility/service/fake_accessibility_service.h index d01de2d..2cb1af0 100644 --- a/chrome/browser/ash/accessibility/service/fake_accessibility_service.h +++ b/chrome/browser/ash/accessibility/service/fake_accessibility_service.h
@@ -138,6 +138,8 @@ // Methods to pretend a UserInterface request came from the service. // + void RequestDarkenScreen(bool darken); + void RequestSetFocusRings( std::vector<ax::mojom::FocusRingInfoPtr> focus_rings, ax::mojom::AssistiveTechnologyType at_type);
diff --git a/chrome/browser/ash/accessibility/service/user_interface_impl.cc b/chrome/browser/ash/accessibility/service/user_interface_impl.cc index 26e25292..1ec3ff4 100644 --- a/chrome/browser/ash/accessibility/service/user_interface_impl.cc +++ b/chrome/browser/ash/accessibility/service/user_interface_impl.cc
@@ -22,6 +22,10 @@ ui_receivers_.Add(this, std::move(ui_receiver)); } +void UserInterfaceImpl::DarkenScreen(bool darken) { + AccessibilityManager::Get()->SetDarkenScreen(darken); +} + void UserInterfaceImpl::SetFocusRings( std::vector<ax::mojom::FocusRingInfoPtr> focus_rings, ax::mojom::AssistiveTechnologyType at_type) {
diff --git a/chrome/browser/ash/accessibility/service/user_interface_impl.h b/chrome/browser/ash/accessibility/service/user_interface_impl.h index 95d09e9..169ad26 100644 --- a/chrome/browser/ash/accessibility/service/user_interface_impl.h +++ b/chrome/browser/ash/accessibility/service/user_interface_impl.h
@@ -25,6 +25,7 @@ void Bind(mojo::PendingReceiver<ax::mojom::UserInterface> ui_receiver); // ax::mojom::UserInterface: + void DarkenScreen(bool enabled) override; void SetFocusRings(std::vector<ax::mojom::FocusRingInfoPtr> focus_rings, ax::mojom::AssistiveTechnologyType at_type) override; void SetHighlights(const std::vector<gfx::Rect>& rects,
diff --git a/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc b/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc index 2928b97..fef2165 100644 --- a/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc +++ b/chrome/browser/ash/arc/arc_demo_mode_delegate_impl_unittest.cc
@@ -20,12 +20,7 @@ class ArcDemoModeDelegateImplTest : public testing::Test { public: - ArcDemoModeDelegateImplTest() - : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) { - stub_install_attributes_ = - std::make_unique<ash::ScopedStubInstallAttributes>( - ash::StubInstallAttributes::CreateDemoMode()); - } + ArcDemoModeDelegateImplTest() = default; ~ArcDemoModeDelegateImplTest() override = default; ArcDemoModeDelegateImplTest(const ArcDemoModeDelegateImplTest&) = delete; ArcDemoModeDelegateImplTest& operator=(const ArcDemoModeDelegateImplTest&) = @@ -35,11 +30,14 @@ ash::DemoModeTestHelper* demo_helper() { return &demo_helper_; } ArcDemoModeDelegateImpl* delegate() { return &delegate_; } - std::unique_ptr<ash::ScopedStubInstallAttributes> stub_install_attributes_; + std::unique_ptr<ash::ScopedStubInstallAttributes> stub_install_attributes_{ + std::make_unique<ash::ScopedStubInstallAttributes>( + ash::StubInstallAttributes::CreateDemoMode())}; private: content::BrowserTaskEnvironment browser_task_environment_; - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_{std::make_unique<ash::FakeChromeUserManager>()}; ash::DemoModeTestHelper demo_helper_; ArcDemoModeDelegateImpl delegate_; };
diff --git a/chrome/browser/ash/arc/arc_support_host_unittest.cc b/chrome/browser/ash/arc/arc_support_host_unittest.cc index 17b3feb..ed0e7a3 100644 --- a/chrome/browser/ash/arc/arc_support_host_unittest.cc +++ b/chrome/browser/ash/arc/arc_support_host_unittest.cc
@@ -66,8 +66,7 @@ void SetUp() override { BrowserWithTestWindowTest::SetUp(); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); identity_test_env_adaptor_ = std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile()); // The code under test should not be tied to browser sync consent. @@ -86,7 +85,7 @@ fake_arc_support_.reset(); support_host_.reset(); identity_test_env_adaptor_.reset(); - user_manager_enabler_.reset(); + fake_user_manager_.Reset(); BrowserWithTestWindowTest::TearDown(); } @@ -122,9 +121,10 @@ } private: + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<ArcSupportHost> support_host_; std::unique_ptr<FakeArcSupport> fake_arc_support_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; std::unique_ptr<IdentityTestEnvironmentProfileAdaptor> identity_test_env_adaptor_;
diff --git a/chrome/browser/ash/arc/arc_util.cc b/chrome/browser/ash/arc/arc_util.cc index acec38f..4d94a1f 100644 --- a/chrome/browser/ash/arc/arc_util.cc +++ b/chrome/browser/ash/arc/arc_util.cc
@@ -209,6 +209,16 @@ return false; } + if (base::FeatureList::IsEnabled(kUnaffiliatedDeviceArcRestriction)) { + if (policy_util::IsAccountManaged(profile) && !user->IsAffiliated() && + !(profile->GetPrefs()->GetBoolean( + prefs::kUnaffiliatedDeviceArcAllowed))) { + VLOG_IF(1, should_report_reason) + << "ARC disallowed for unaffiliated users"; + return false; + } + } + return true; }
diff --git a/chrome/browser/ash/arc/arc_util_unittest.cc b/chrome/browser/ash/arc/arc_util_unittest.cc index 60ddf65..bc0f933 100644 --- a/chrome/browser/ash/arc/arc_util_unittest.cc +++ b/chrome/browser/ash/arc/arc_util_unittest.cc
@@ -77,6 +77,12 @@ ash::FakeChromeUserManager* fake_user_manager, const AccountId& account_id, user_manager::UserType user_type = user_manager::USER_TYPE_REGULAR) + : ScopedLogIn(false, fake_user_manager, account_id, user_type) {} + ScopedLogIn( + bool isAffiliated, + ash::FakeChromeUserManager* fake_user_manager, + const AccountId& account_id, + user_manager::UserType user_type = user_manager::USER_TYPE_REGULAR) : fake_user_manager_(fake_user_manager), account_id_(account_id) { // Prevent access to DBus. This switch is reset in case set from test SetUp // due massive usage of InitFromArgv. @@ -86,7 +92,10 @@ switch (user_type) { case user_manager::USER_TYPE_REGULAR: - LogIn(); + if (!isAffiliated) + LogIn(); + else + LogInWithAffiliatedAccount(); break; case user_manager::USER_TYPE_PUBLIC_ACCOUNT: LogInAsPublicAccount(); @@ -120,6 +129,11 @@ fake_user_manager_->LoginUser(account_id_); } + void LogInWithAffiliatedAccount() { + fake_user_manager_->AddUserWithAffiliation(account_id_, true); + fake_user_manager_->LoginUser(account_id_); + } + raw_ptr<ash::FakeChromeUserManager, ExperimentalAsh> fake_user_manager_; const AccountId account_id_; }; @@ -143,14 +157,13 @@ void SetUp() override { command_line_ = std::make_unique<base::test::ScopedCommandLine>(); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); + ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(profile_manager_->SetUp()); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); - profile_ = profile_manager_->CreateTestingProfile(kTestProfileName); } @@ -159,23 +172,22 @@ ResetArcAllowedCheckForTesting(profile_); profile_manager_->DeleteTestingProfile(kTestProfileName); profile_ = nullptr; - user_manager_enabler_.reset(); profile_manager_.reset(); + fake_user_manager_.Reset(); command_line_.reset(); } TestingProfile* profile() { return profile_; } ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); + return fake_user_manager_.Get(); } void LogIn() { const auto account_id = AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), kTestGaiaId); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); } protected: @@ -186,8 +198,9 @@ base::test::ScopedFeatureList feature_list_; content::BrowserTaskEnvironment task_environment_; base::ScopedTempDir data_dir_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<TestingProfileManager> profile_manager_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; // Owned by |profile_manager_| raw_ptr<TestingProfile, DanglingUntriaged | ExperimentalAsh> profile_ = nullptr; @@ -848,5 +861,107 @@ EXPECT_FALSE(IsArcTermsOfServiceOobeNegotiationNeeded()); } +using ChromeUnaffiliatedDevicesArcRestrictionTest = ChromeArcUtilTest; + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcAllowedForAffiliatedUser_WhenPolicyValueTrue) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(true, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + SetProfileIsManagedForTesting(profile()); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + true); + + EXPECT_TRUE(IsArcAllowedForProfileOnFirstCall(profile())); +} + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcAllowedForUnAffiliatedUser_WhenPolicyValueTrue) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(false, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + SetProfileIsManagedForTesting(profile()); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + true); + + EXPECT_TRUE(IsArcAllowedForProfileOnFirstCall(profile())); +} + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcAllowedForNonEnterpriseAccount_WhenPolicyValueTrue) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(false, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + true); + + EXPECT_TRUE(IsArcAllowedForProfileOnFirstCall(profile())); +} + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcAllowedForAffiliatedUser_WhenPolicyValueFalse) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(true, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + SetProfileIsManagedForTesting(profile()); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + false); + + EXPECT_TRUE(IsArcAllowedForProfileOnFirstCall(profile())); +} + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcNotAllowedForUnAffiliatedUser_WhenPolicyValueFalse) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(false, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + SetProfileIsManagedForTesting(profile()); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + false); + + EXPECT_FALSE(IsArcAllowedForProfileOnFirstCall(profile())); +} + +TEST_F(ChromeUnaffiliatedDevicesArcRestrictionTest, + ArcAllowedForNonEnterpriseAccount_WhenPolicyValueFalse) { + base::test::ScopedFeatureList feature_list; + feature_list.InitAndEnableFeature( + arc::kUnaffiliatedDeviceArcRestriction); + base::CommandLine::ForCurrentProcess()->InitFromArgv( + {"", "--arc-availability=officially-supported"}); + ScopedLogIn login(false, GetFakeUserManager(), + AccountId::FromUserEmailGaiaId( + profile()->GetProfileUserName(), kTestGaiaId)); + profile()->GetPrefs()->SetBoolean(prefs::kUnaffiliatedDeviceArcAllowed, + false); + + EXPECT_TRUE(IsArcAllowedForProfileOnFirstCall(profile())); +} + } // namespace util } // namespace arc
diff --git a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc index b74d21f..8c0c626b 100644 --- a/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_auth_service_browsertest.cc
@@ -296,8 +296,8 @@ void SetUpOnMainThread() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); + // Init ArcSessionManager for testing. ArcServiceLauncher::Get()->ResetForTesting(); ArcSessionManager::SetUiEnabledForTesting(false); @@ -317,10 +317,10 @@ // a dangling pointer to the User. // TODO(nya): Consider removing all users from ProfileHelper in the // destructor of ash::FakeChromeUserManager. - auto* user = GetFakeUserManager()->GetActiveUser(); + auto* user = fake_user_manager_->GetActiveUser(); if (user) { - GetFakeUserManager()->RemoveUserFromList( - GetFakeUserManager()->GetActiveUser()->GetAccountId()); + fake_user_manager_->RemoveUserFromList( + fake_user_manager_->GetActiveUser()->GetAccountId()); } // Since ArcServiceLauncher is (re-)set up with profile() in // SetUpOnMainThread() it is necessary to Shutdown() before the profile() @@ -334,12 +334,7 @@ } identity_test_environment_adaptor_.reset(); profile_.reset(); - user_manager_enabler_.reset(); - } - - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); + fake_user_manager_.Reset(); } void EnableRemovalOfExtendedAccountInfo() { @@ -353,16 +348,16 @@ const user_manager::User* user = nullptr; switch (user_type) { case user_manager::USER_TYPE_CHILD: - user = GetFakeUserManager()->AddChildUser(account_id); + user = fake_user_manager_->AddChildUser(account_id); break; case user_manager::USER_TYPE_REGULAR: - user = GetFakeUserManager()->AddUser(account_id); + user = fake_user_manager_->AddUser(account_id); break; case user_manager::USER_TYPE_PUBLIC_ACCOUNT: - user = GetFakeUserManager()->AddPublicAccountUser(account_id); + user = fake_user_manager_->AddPublicAccountUser(account_id); break; case user_manager::USER_TYPE_ARC_KIOSK_APP: - user = GetFakeUserManager()->AddUserWithAffiliationAndTypeAndProfile( + user = fake_user_manager_->AddUserWithAffiliationAndTypeAndProfile( account_id, false /*is_affiliated*/, user_manager::USER_TYPE_ARC_KIOSK_APP, nullptr /*profile*/); break; @@ -371,7 +366,7 @@ return; } - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->LoginUser(account_id); // Create test profile. TestingProfile::Builder profile_builder; @@ -558,7 +553,8 @@ } private: - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; base::ScopedTempDir temp_dir_; std::unique_ptr<TestingProfile> profile_; network::TestURLLoaderFactory test_url_loader_factory_;
diff --git a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc index bfee3498..c1b7dcb 100644 --- a/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc +++ b/chrome/browser/ash/arc/auth/arc_robot_auth_code_fetcher_browsertest.cc
@@ -87,12 +87,11 @@ } void SetUpOnMainThread() override { - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id(AccountId::FromUserEmail(kFakeUserName)); - GetFakeUserManager()->AddArcKioskAppUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddArcKioskAppUser(account_id); + fake_user_manager_->LoginUser(account_id); if (cloud_policy_client_setup_ == CloudPolicyClientSetup::kSkip) return; @@ -113,12 +112,7 @@ cloud_policy_client->client_id_ = "client-id"; } - void TearDownOnMainThread() override { user_manager_enabler_.reset(); } - - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } + void TearDownOnMainThread() override { fake_user_manager_.Reset(); } void FetchAuthCode(ArcRobotAuthCodeFetcher* fetcher, bool* output_fetch_success, @@ -150,7 +144,8 @@ CloudPolicyClientSetup cloud_policy_client_setup_; network::TestURLLoaderFactory test_url_loader_factory_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; }; IN_PROC_BROWSER_TEST_F(ArcRobotAuthCodeFetcherBrowserTest,
diff --git a/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc b/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc index d81788a..00bab42 100644 --- a/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc +++ b/chrome/browser/ash/arc/boot_phase_monitor/arc_boot_phase_monitor_bridge_unittest.cc
@@ -33,7 +33,7 @@ class ArcBootPhaseMonitorBridgeTest : public testing::Test { public: ArcBootPhaseMonitorBridgeTest() - : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); ash::SessionManagerClient::InitializeFakeInMemory(); @@ -48,8 +48,8 @@ const AccountId account_id(AccountId::FromUserEmailGaiaId( testing_profile_->GetProfileUserName(), "1234567890")); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); } ArcBootPhaseMonitorBridgeTest(const ArcBootPhaseMonitorBridgeTest&) = delete; @@ -139,13 +139,9 @@ const raw_ptr<ArcBootPhaseMonitorBridgeTest, ExperimentalAsh> test_; }; - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } - content::BrowserTaskEnvironment task_environment_; - user_manager::ScopedUserManager scoped_user_manager_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<ArcServiceManager> arc_service_manager_; std::unique_ptr<ArcSessionManager> arc_session_manager_; std::unique_ptr<TestingProfile> testing_profile_;
diff --git a/chrome/browser/ash/arc/enterprise/arc_enterprise_reporting_service_unittest.cc b/chrome/browser/ash/arc/enterprise/arc_enterprise_reporting_service_unittest.cc index a58d72b..5d82e11 100644 --- a/chrome/browser/ash/arc/enterprise/arc_enterprise_reporting_service_unittest.cc +++ b/chrome/browser/ash/arc/enterprise/arc_enterprise_reporting_service_unittest.cc
@@ -41,20 +41,19 @@ ~ArcEnterpriseReportingServiceTest() override = default; void SetUp() override { - // Set up profile and user manager for ReportCloudDpcOperationTime tests + // Set up user manager and profile and for ReportCloudDpcOperationTime tests + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); + profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(profile_manager_->SetUp()); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); - profile_ = profile_manager_->CreateTestingProfile(kTestProfileName); const auto account_id = AccountId::FromUserEmailGaiaId( profile_->GetProfileUserName(), kTestGaiaId); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); // Set up ArcSessionManager for ReportManagementState tests ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); @@ -75,8 +74,8 @@ arc_session_manager_->Shutdown(); profile_manager_->DeleteTestingProfile(kTestProfileName); profile_ = nullptr; - user_manager_enabler_.reset(); profile_manager_.reset(); + fake_user_manager_.Reset(); arc_session_manager_.reset(); arc_service_manager_.reset(); } @@ -85,11 +84,6 @@ return arc_session_manager_.get(); } - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } - TestingProfile* profile() { return profile_; } ArcEnterpriseReportingService* service() { return service_; } @@ -98,11 +92,12 @@ raw_ptr<ArcEnterpriseReportingService, DanglingUntriaged | ExperimentalAsh> service_ = nullptr; content::BrowserTaskEnvironment task_environment_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; raw_ptr<TestingProfile, DanglingUntriaged | ExperimentalAsh> profile_; std::unique_ptr<ArcServiceManager> arc_service_manager_; std::unique_ptr<arc::ArcSessionManager> arc_session_manager_; std::unique_ptr<TestingProfileManager> profile_manager_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; }; TEST_F(ArcEnterpriseReportingServiceTest, ReportCloudDpcOperationTime_Success) {
diff --git a/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc b/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc index 32495ec..a7da207 100644 --- a/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc +++ b/chrome/browser/ash/arc/instance_throttle/arc_boot_phase_throttle_observer_unittest.cc
@@ -37,7 +37,7 @@ class ArcBootPhaseThrottleObserverTest : public testing::Test { public: ArcBootPhaseThrottleObserverTest() - : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); arc_session_manager_ = CreateTestArcSessionManager(std::make_unique<ArcSessionRunner>( @@ -49,10 +49,8 @@ base::CommandLine::ForCurrentProcess()); const AccountId account_id(AccountId::FromUserEmailGaiaId( testing_profile_->GetProfileUserName(), "")); - auto* user_manager = static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - user_manager->AddUser(account_id); - user_manager->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); // By default, ARC is not started for opt-in. arc_session_manager()->set_skipped_terms_of_service_negotiation_for_testing( @@ -123,7 +121,8 @@ private: content::BrowserTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; - user_manager::ScopedUserManager scoped_user_manager_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; ArcServiceManager arc_service_manager_; std::unique_ptr<ArcSessionManager> arc_session_manager_; ArcBootPhaseThrottleObserver observer_;
diff --git a/chrome/browser/ash/arc/instance_throttle/arc_kiosk_mode_throttle_observer_unittest.cc b/chrome/browser/ash/arc/instance_throttle/arc_kiosk_mode_throttle_observer_unittest.cc index 86b82ae..e3eeb4e 100644 --- a/chrome/browser/ash/arc/instance_throttle/arc_kiosk_mode_throttle_observer_unittest.cc +++ b/chrome/browser/ash/arc/instance_throttle/arc_kiosk_mode_throttle_observer_unittest.cc
@@ -34,32 +34,28 @@ // due massive usage of InitFromArgv. base::CommandLine::ForCurrentProcess()->AppendSwitch(switches::kTestType); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id(AccountId::FromUserEmail(kTestProfileName)); - if (kiosk_user) - GetFakeUserManager()->AddArcKioskAppUser(account_id); - else - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + if (kiosk_user) { + fake_user_manager_->AddArcKioskAppUser(account_id); + } else { + fake_user_manager_->AddUser(account_id); + } + fake_user_manager_->LoginUser(account_id); } ScopedKioskModeLogIn(const ScopedKioskModeLogIn&) = delete; ScopedKioskModeLogIn& operator=(const ScopedKioskModeLogIn&) = delete; ~ScopedKioskModeLogIn() { - GetFakeUserManager()->RemoveUserFromList( + fake_user_manager_->RemoveUserFromList( AccountId::FromUserEmail(kTestProfileName)); - user_manager_enabler_.reset(); + fake_user_manager_.Reset(); } private: - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } - - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; }; } // namespace
diff --git a/chrome/browser/ash/arc/instance_throttle/arc_provisioning_throttle_observer_unittest.cc b/chrome/browser/ash/arc/instance_throttle/arc_provisioning_throttle_observer_unittest.cc index b786386..41c3cad 100644 --- a/chrome/browser/ash/arc/instance_throttle/arc_provisioning_throttle_observer_unittest.cc +++ b/chrome/browser/ash/arc/instance_throttle/arc_provisioning_throttle_observer_unittest.cc
@@ -28,7 +28,7 @@ class ArcProvisioningThrottleObserverTest : public testing::Test { public: ArcProvisioningThrottleObserverTest() - : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); SetArcAvailableCommandLineForTesting( base::CommandLine::ForCurrentProcess()); @@ -101,7 +101,8 @@ private: content::BrowserTaskEnvironment task_environment_; - user_manager::ScopedUserManager scoped_user_manager_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; ArcServiceManager service_manager_; std::unique_ptr<ArcSessionManager> session_manager_; ArcProvisioningThrottleObserver observer_;
diff --git a/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc b/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc index e2c2edb..f8eda90 100644 --- a/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc +++ b/chrome/browser/ash/arc/intent_helper/arc_settings_service_unittest.cc
@@ -64,7 +64,7 @@ class ArcSettingsServiceTest : public BrowserWithTestWindowTest { public: ArcSettingsServiceTest() - : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ArcSettingsServiceTest(const ArcSettingsServiceTest&) = delete; ArcSettingsServiceTest& operator=(const ArcSettingsServiceTest&) = delete; ~ArcSettingsServiceTest() override = default; @@ -103,8 +103,8 @@ const AccountId account_id(AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), "1234567890")); - user_manager()->AddUser(account_id); - user_manager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); arc_session_manager()->SetProfile(profile()); arc_session_manager()->Initialize(); @@ -159,10 +159,6 @@ WaitForInstanceReady(arc_bridge_service()->app()); } - ash::FakeChromeUserManager* user_manager() { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } ArcBridgeService* arc_bridge_service() { return arc_service_manager_->arc_bridge_service(); } @@ -181,7 +177,8 @@ std::unique_ptr<ash::network_config::CrosNetworkConfigTestHelper> network_config_helper_; TestingPrefServiceSimple local_state_; - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<FakeIntentHelperHost> intent_helper_host_; std::unique_ptr<ArcSessionManager> arc_session_manager_; std::unique_ptr<ArcServiceManager> arc_service_manager_;
diff --git a/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc b/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc index d9fa36e..b65e7788 100644 --- a/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc +++ b/chrome/browser/ash/arc/notification/arc_provision_notification_service_unittest.cc
@@ -44,7 +44,7 @@ class ArcProvisionNotificationServiceTest : public BrowserWithTestWindowTest { protected: ArcProvisionNotificationServiceTest() - : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ArcProvisionNotificationServiceTest( const ArcProvisionNotificationServiceTest&) = delete; @@ -87,8 +87,8 @@ const AccountId account_id(AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), "1234567890")); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); } void TearDown() override { @@ -106,18 +106,14 @@ ash::ConciergeClient::Shutdown(); } - ash::FakeChromeUserManager* GetFakeUserManager() { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } - std::unique_ptr<ArcServiceManager> arc_service_manager_; std::unique_ptr<ArcSessionManager> arc_session_manager_; std::unique_ptr<NotificationDisplayServiceTester> display_service_; raw_ptr<session_manager::SessionManager, ExperimentalAsh> session_manager_; private: - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; TestingPrefServiceSimple local_state_; };
diff --git a/chrome/browser/ash/arc/notification/arc_vm_data_migration_notifier_unittest.cc b/chrome/browser/ash/arc/notification/arc_vm_data_migration_notifier_unittest.cc index 3e201b66..7f7c1d2a 100644 --- a/chrome/browser/ash/arc/notification/arc_vm_data_migration_notifier_unittest.cc +++ b/chrome/browser/ash/arc/notification/arc_vm_data_migration_notifier_unittest.cc
@@ -61,17 +61,15 @@ CreateTestArcSessionManager(std::make_unique<ArcSessionRunner>( base::BindRepeating(FakeArcSession::Create))); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(profile_manager_->SetUp()); testing_profile_ = profile_manager_->CreateTestingProfile(kProfileName); const AccountId account_id = AccountId::FromUserEmailGaiaId( testing_profile_->GetProfileUserName(), kGaiaId); - auto fake_user_manager = std::make_unique<ash::FakeChromeUserManager>(); - fake_user_manager->AddUser(account_id); - fake_user_manager->LoginUser(account_id); - user_manager_ = std::make_unique<user_manager::ScopedUserManager>( - std::move(fake_user_manager)); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); DCHECK(ash::ProfileHelper::IsPrimaryProfile(testing_profile_)); notification_tester_ = @@ -86,10 +84,10 @@ void TearDown() override { arc_session_manager_->Shutdown(); notification_tester_.reset(); - user_manager_.reset(); profile_manager_->DeleteTestingProfile(kProfileName); testing_profile_ = nullptr; profile_manager_.reset(); + fake_user_manager_.Reset(); arc_vm_data_migration_notifier_.reset(); arc_session_manager_.reset(); ash::ConciergeClient::Shutdown(); @@ -109,10 +107,11 @@ private: std::unique_ptr<ArcSessionManager> arc_session_manager_; std::unique_ptr<ArcVmDataMigrationNotifier> arc_vm_data_migration_notifier_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<TestingProfileManager> profile_manager_; raw_ptr<TestingProfile, DanglingUntriaged | ExperimentalAsh> testing_profile_ = nullptr; // Owned by |profile_manager_|. - std::unique_ptr<user_manager::ScopedUserManager> user_manager_; std::unique_ptr<NotificationDisplayServiceTester> notification_tester_; };
diff --git a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc index 63087d9..ceeff79 100644 --- a/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc +++ b/chrome/browser/ash/arc/optin/arc_terms_of_service_default_negotiator_unittest.cc
@@ -135,8 +135,6 @@ base::SetRecordActionTaskRunner( task_environment()->GetMainThreadTaskRunner()); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); signin::MakePrimaryAccountAvailable( IdentityManagerFactory::GetForProfile(profile()), "testing@account.com", signin::ConsentLevel::kSync); @@ -155,7 +153,7 @@ negotiator_.reset(); fake_arc_support_.reset(); support_host_.reset(); - user_manager_enabler_.reset(); + fake_user_manager_.Reset(); owner_key_util_->Clear(); test_metrics_service_.reset(); @@ -183,8 +181,7 @@ } ash::FakeChromeUserManager* user_manager() { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); + return fake_user_manager_.Get(); } consent_auditor::FakeConsentAuditor* consent_auditor() { @@ -222,7 +219,8 @@ test_enabled_state_provider_; std::unique_ptr<metrics::MetricsService> test_metrics_service_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_{std::make_unique<ash::FakeChromeUserManager>()}; std::unique_ptr<ArcSupportHost> support_host_; std::unique_ptr<FakeArcSupport> fake_arc_support_; std::unique_ptr<ArcTermsOfServiceDefaultNegotiator> negotiator_;
diff --git a/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc b/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc index 85b7d2a..05388032 100644 --- a/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc +++ b/chrome/browser/ash/arc/policy/arc_policy_bridge_unittest.cc
@@ -219,13 +219,11 @@ .Times(1); // Set up user profile for ReportCompliance() tests. - auto* const fake_user_manager = new ash::FakeChromeUserManager(); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - base::WrapUnique(fake_user_manager)); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id( AccountId::FromUserEmailGaiaId(kTestUserEmail, "1111111111")); - fake_user_manager->AddUserWithAffiliation(account_id, is_affiliated); - fake_user_manager->LoginUser(account_id); + fake_user_manager_->AddUserWithAffiliation(account_id, is_affiliated); + fake_user_manager_->LoginUser(account_id); testing_profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(testing_profile_manager_->SetUp()); @@ -348,7 +346,8 @@ private: content::BrowserTaskEnvironment task_environment_; data_decoder::test::InProcessDataDecoder in_process_data_decoder_; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<TestingProfileManager> testing_profile_manager_; base::RunLoop run_loop_; raw_ptr<TestingProfile, DanglingUntriaged | ExperimentalAsh> profile_;
diff --git a/chrome/browser/ash/arc/policy/managed_configuration_variables_unittest.cc b/chrome/browser/ash/arc/policy/managed_configuration_variables_unittest.cc index 014b2d1..0c183a4 100644 --- a/chrome/browser/ash/arc/policy/managed_configuration_variables_unittest.cc +++ b/chrome/browser/ash/arc/policy/managed_configuration_variables_unittest.cc
@@ -203,12 +203,10 @@ ash::system::StatisticsProvider::SetTestProvider(&statistics_provider_); // Set up a fake user and capture its profile. - auto* const user_manager = new ash::FakeChromeUserManager(); - scoped_user_manager_ = std::make_unique<user_manager::ScopedUserManager>( - base::WrapUnique(user_manager)); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); const AccountId account_id( AccountId::FromUserEmailGaiaId(kTestEmail, kTestGaiaId)); - user_manager->AddUserWithAffiliation(account_id, is_affiliated); + fake_user_manager_->AddUserWithAffiliation(account_id, is_affiliated); profile_manager_ = std::make_unique<TestingProfileManager>( TestingBrowserProcess::GetGlobal()); ASSERT_TRUE(profile_manager_->SetUp()); @@ -233,7 +231,7 @@ void DoTearDown() { fake_device_attributes_.reset(); profile_manager_.reset(); - scoped_user_manager_.reset(); + fake_user_manager_.Reset(); } const Profile* profile() { return profile_; } @@ -245,7 +243,8 @@ private: content::BrowserTaskEnvironment task_environment_; - std::unique_ptr<user_manager::ScopedUserManager> scoped_user_manager_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<TestingProfileManager> profile_manager_;
diff --git a/chrome/browser/ash/arc/session/arc_activation_necessity_checker_unittest.cc b/chrome/browser/ash/arc/session/arc_activation_necessity_checker_unittest.cc index 0872a42..2a0907a 100644 --- a/chrome/browser/ash/arc/session/arc_activation_necessity_checker_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_activation_necessity_checker_unittest.cc
@@ -55,7 +55,7 @@ class ArcActivationNecessityCheckerTest : public testing::Test { public: ArcActivationNecessityCheckerTest() - : scoped_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ~ArcActivationNecessityCheckerTest() override = default; void SetUp() override { @@ -113,7 +113,8 @@ protected: content::BrowserTaskEnvironment task_environment_; - user_manager::ScopedUserManager scoped_user_manager_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; base::test::ScopedFeatureList feature_list_; std::unique_ptr<TestingProfile> profile_; std::unique_ptr<ArcServiceManager> arc_service_manager_;
diff --git a/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc b/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc index 666da50..4db572b0 100644 --- a/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_play_store_enabled_preference_handler_unittest.cc
@@ -55,7 +55,7 @@ class ArcPlayStoreEnabledPreferenceHandlerTest : public testing::Test { public: ArcPlayStoreEnabledPreferenceHandlerTest() - : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) {} + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ArcPlayStoreEnabledPreferenceHandlerTest( const ArcPlayStoreEnabledPreferenceHandlerTest&) = delete; @@ -91,8 +91,8 @@ profile_.get(), arc_session_manager_.get()); const AccountId account_id(AccountId::FromUserEmailGaiaId( profile()->GetProfileUserName(), kTestGaiaId)); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); identity_test_env_profile_adaptor_->identity_test_env() ->MakePrimaryAccountAvailable(kTestEmail, @@ -120,10 +120,6 @@ ArcPlayStoreEnabledPreferenceHandler* preference_handler() const { return preference_handler_.get(); } - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } consent_auditor::FakeConsentAuditor* consent_auditor() const { return static_cast<consent_auditor::FakeConsentAuditor*>( @@ -146,7 +142,8 @@ private: content::BrowserTaskEnvironment task_environment_; - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; base::ScopedTempDir temp_dir_; std::unique_ptr<IdentityTestEnvironmentProfileAdaptor> identity_test_env_profile_adaptor_;
diff --git a/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc b/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc index 0bddef36..2311ed2 100644 --- a/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc +++ b/chrome/browser/ash/arc/session/arc_session_manager_browsertest.cc
@@ -126,8 +126,7 @@ void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); - user_manager_enabler_ = std::make_unique<user_manager::ScopedUserManager>( - std::make_unique<ash::FakeChromeUserManager>()); + fake_user_manager_.Reset(std::make_unique<ash::FakeChromeUserManager>()); // Init ArcSessionManager for testing. ArcServiceLauncher::Get()->ResetForTesting(); ArcSessionManager::SetUiEnabledForTesting(false); @@ -143,8 +142,8 @@ const AccountId account_id( AccountId::FromUserEmailGaiaId(kFakeUserName, kFakeGaiaId)); - GetFakeUserManager()->AddUser(account_id); - GetFakeUserManager()->LoginUser(account_id); + fake_user_manager_->AddUser(account_id); + fake_user_manager_->LoginUser(account_id); // Create test profile. TestingProfile::Builder profile_builder; @@ -156,7 +155,7 @@ identity_test_environment_adaptor_ = std::make_unique<IdentityTestEnvironmentProfileAdaptor>(profile_.get()); ash::ProfileHelper::Get()->SetUserToProfileMappingForTesting( - GetFakeUserManager()->GetPrimaryUser(), profile_.get()); + fake_user_manager_->GetPrimaryUser(), profile_.get()); // Seed account info properly. identity_test_env()->MakePrimaryAccountAvailable( @@ -189,7 +188,7 @@ // destructor of ash::FakeChromeUserManager. const AccountId account_id( AccountId::FromUserEmailGaiaId(kFakeUserName, kFakeGaiaId)); - GetFakeUserManager()->RemoveUserFromList(account_id); + fake_user_manager_->RemoveUserFromList(account_id); // Since ArcServiceLauncher is (re-)set up with profile() in // SetUpOnMainThread() it is necessary to Shutdown() before the profile() // is destroyed. ArcServiceLauncher::Shutdown() will be called again on @@ -200,16 +199,11 @@ identity_test_environment_adaptor_.reset(); profile_.reset(); base::RunLoop().RunUntilIdle(); - user_manager_enabler_.reset(); ash::ProfileHelper::SetAlwaysReturnPrimaryUserForTesting(false); + fake_user_manager_.Reset(); MixinBasedInProcessBrowserTest::TearDownOnMainThread(); } - ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); - } - void EnableArc() { PrefService* const prefs = profile()->GetPrefs(); prefs->SetBoolean(prefs::kArcEnabled, true); @@ -232,7 +226,8 @@ private: ash::EmbeddedPolicyTestServerMixin policy_test_server_mixin_{&mixin_host_}; - std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<IdentityTestEnvironmentProfileAdaptor> identity_test_environment_adaptor_; base::ScopedTempDir temp_dir_;
diff --git a/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc b/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc index 5b6c21a..713e98c 100644 --- a/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc +++ b/chrome/browser/ash/arc/session/arc_session_manager_unittest.cc
@@ -167,7 +167,7 @@ class ArcSessionManagerInLoginScreenTest : public testing::Test { public: ArcSessionManagerInLoginScreenTest() - : user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) { + : fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); ash::SessionManagerClient::InitializeFakeInMemory(); @@ -208,7 +208,8 @@ content::BrowserTaskEnvironment task_environment_; std::unique_ptr<ArcServiceManager> arc_service_manager_; std::unique_ptr<ArcSessionManager> arc_session_manager_; - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; }; // We expect mini instance starts to run if EmitLoginPromptVisible signal is @@ -269,7 +270,7 @@ ArcSessionManagerTestBase() : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP, base::test::TaskEnvironment::TimeSource::MOCK_TIME), - user_manager_enabler_(std::make_unique<ash::FakeChromeUserManager>()) { + fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) { TestingBrowserProcess::GetGlobal()->SetLocalState(&test_local_state_); arc::prefs::RegisterLocalStatePrefs(test_local_state_.registry()); ash::DemoSetupController::RegisterLocalStatePrefs( @@ -328,8 +329,7 @@ } ash::FakeChromeUserManager* GetFakeUserManager() const { - return static_cast<ash::FakeChromeUserManager*>( - user_manager::UserManager::Get()); + return fake_user_manager_.Get(); } protected: @@ -367,10 +367,11 @@ } content::BrowserTaskEnvironment task_environment_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; std::unique_ptr<TestingProfile> profile_; std::unique_ptr<ArcServiceManager> arc_service_manager_; std::unique_ptr<ArcSessionManager> arc_session_manager_; - user_manager::ScopedUserManager user_manager_enabler_; base::ScopedTempDir temp_dir_; TestingPrefServiceSimple test_local_state_; std::unique_ptr<ash::AuthEventsRecorder> auth_events_recorder_;
diff --git a/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc b/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc index 48bd8ea7..4a05f63c 100644 --- a/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc +++ b/chrome/browser/ash/arc/wallpaper/arc_wallpaper_service_unittest.cc
@@ -63,8 +63,7 @@ public: ArcWallpaperServiceTest() : task_environment_(std::make_unique<content::BrowserTaskEnvironment>()), - user_manager_(new ash::FakeChromeUserManager()), - user_manager_enabler_(base::WrapUnique(user_manager_.get())) {} + fake_user_manager_(std::make_unique<ash::FakeChromeUserManager>()) {} ArcWallpaperServiceTest(const ArcWallpaperServiceTest&) = delete; ArcWallpaperServiceTest& operator=(const ArcWallpaperServiceTest&) = delete; @@ -82,9 +81,9 @@ prefs::kDeviceWallpaperImageFilePath, std::string()); // User - user_manager_->AddUser(user_manager::StubAccountId()); - user_manager_->LoginUser(user_manager::StubAccountId()); - ASSERT_TRUE(user_manager_->GetPrimaryUser()); + fake_user_manager_->AddUser(user_manager::StubAccountId()); + fake_user_manager_->LoginUser(user_manager::StubAccountId()); + ASSERT_TRUE(fake_user_manager_->GetPrimaryUser()); // Wallpaper wallpaper_controller_client_ = std::make_unique< @@ -127,9 +126,8 @@ private: std::unique_ptr<content::BrowserTaskEnvironment> task_environment_; - const raw_ptr<ash::FakeChromeUserManager, DanglingUntriaged | ExperimentalAsh> - user_manager_ = nullptr; - user_manager::ScopedUserManager user_manager_enabler_; + user_manager::TypedScopedUserManager<ash::FakeChromeUserManager> + fake_user_manager_; arc::ArcServiceManager arc_service_manager_; // testing_profile_ needs to be deleted before arc_service_manager_. TestingProfile testing_profile_;
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 098185e5..c01c1a9 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -2373,16 +2373,8 @@ disabled_features.push_back(ash::features::kFilesDriveShortcuts); } - if (options.enable_jellybean) { - enabled_features.push_back(chromeos::features::kJelly); - } else { - disabled_features.push_back(chromeos::features::kJelly); - } - if (options.enable_cros_components) { enabled_features.push_back(chromeos::features::kCrosComponents); - DCHECK(options.enable_jellybean) - << "Cannot enable cros-components without jellybean"; } else { disabled_features.push_back(chromeos::features::kCrosComponents); } @@ -3926,11 +3918,6 @@ return; } - if (name == "isJellybean") { - *output = options.enable_jellybean ? "true" : "false"; - return; - } - if (name == "isCrosComponents") { *output = options.enable_cros_components ? "true" : "false"; return;
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h index a963e88..aae3b96 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.h +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.h
@@ -198,9 +198,6 @@ // Whether to enable Drive shortcuts showing a badge or not. bool enable_drive_shortcuts = false; - // Whether to enable jellybean styles. - bool enable_jellybean = false; - // Whether to enable jellybean UI elements. bool enable_cros_components = false;
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc index 64337521..c267a87 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_utils.cc
@@ -207,7 +207,6 @@ TestCase& TestCase::EnableCrosComponents() { options.enable_cros_components = true; - options.enable_jellybean = true; return *this; }
diff --git a/chrome/browser/ash/file_manager/office_file_tasks.cc b/chrome/browser/ash/file_manager/office_file_tasks.cc index 09f6e36..669c622 100644 --- a/chrome/browser/ash/file_manager/office_file_tasks.cc +++ b/chrome/browser/ash/file_manager/office_file_tasks.cc
@@ -99,33 +99,28 @@ std::unique_ptr<ash::cloud_upload::CloudOpenMetrics> cloud_open_metrics) { switch (fallback_reason) { case ash::office_fallback::FallbackReason::kOffline: - UMA_HISTOGRAM_ENUMERATION( - ash::cloud_upload::kDriveErrorMetricName, + cloud_open_metrics->LogGoogleDriveOpenError( ash::cloud_upload::OfficeDriveOpenErrors::kOffline); break; case ash::office_fallback::FallbackReason::kDriveDisabled: - UMA_HISTOGRAM_ENUMERATION( - ash::cloud_upload::kDriveErrorMetricName, + cloud_open_metrics->LogGoogleDriveOpenError( ash::cloud_upload::OfficeDriveOpenErrors::kDriveDisabled); break; case ash::office_fallback::FallbackReason::kNoDriveService: - UMA_HISTOGRAM_ENUMERATION( - ash::cloud_upload::kDriveErrorMetricName, + cloud_open_metrics->LogGoogleDriveOpenError( ash::cloud_upload::OfficeDriveOpenErrors::kNoDriveService); break; case ash::office_fallback::FallbackReason::kDriveAuthenticationNotReady: - UMA_HISTOGRAM_ENUMERATION(ash::cloud_upload::kDriveErrorMetricName, - ash::cloud_upload::OfficeDriveOpenErrors:: - kDriveAuthenticationNotReady); + cloud_open_metrics->LogGoogleDriveOpenError( + ash::cloud_upload::OfficeDriveOpenErrors:: + kDriveAuthenticationNotReady); break; case ash::office_fallback::FallbackReason::kDriveFsInterfaceError: - UMA_HISTOGRAM_ENUMERATION( - ash::cloud_upload::kDriveErrorMetricName, + cloud_open_metrics->LogGoogleDriveOpenError( ash::cloud_upload::OfficeDriveOpenErrors::kDriveFsInterface); break; case ash::office_fallback::FallbackReason::kMeteredConnection: - UMA_HISTOGRAM_ENUMERATION( - ash::cloud_upload::kDriveErrorMetricName, + cloud_open_metrics->LogGoogleDriveOpenError( ash::cloud_upload::OfficeDriveOpenErrors::kMeteredConnection); break; }
diff --git a/chrome/browser/browsing_data/counters/browsing_data_counter_utils_browsertest.cc b/chrome/browser/browsing_data/counters/browsing_data_counter_utils_browsertest.cc index af3faf2..c558113 100644 --- a/chrome/browser/browsing_data/counters/browsing_data_counter_utils_browsertest.cc +++ b/chrome/browser/browsing_data/counters/browsing_data_counter_utils_browsertest.cc
@@ -36,8 +36,14 @@ ~BrowsingDataCounterUtilsBrowserTest() override = default; }; +// TODO(https://crbug.com/1491584): Test is flaky on ChromeOS. +#if BUILDFLAG(IS_CHROMEOS) +#define MAYBE_ShouldShowCookieException DISABLED_ShouldShowCookieException +#else +#define MAYBE_ShouldShowCookieException ShouldShowCookieException +#endif IN_PROC_BROWSER_TEST_F(BrowsingDataCounterUtilsBrowserTest, - ShouldShowCookieException) { + MAYBE_ShouldShowCookieException) { ASSERT_TRUE(SetupClients()); // By default, a fresh profile is not signed in, nor syncing, so no cookie
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc index 2129f56c..8d64370 100644 --- a/chrome/browser/download/download_item_model.cc +++ b/chrome/browser/download/download_item_model.cc
@@ -925,7 +925,7 @@ TailoredVerdict::SUSPICIOUS_ARCHIVE) { return DownloadUIModel::BubbleUIInfo::SuspiciousUiPattern( l10n_util::GetStringUTF16( - IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_MALWARE), + IDS_DOWNLOAD_BUBBLE_SUBPAGE_SUMMARY_WARNING_ARCHIVE_MALWARE), l10n_util::GetStringUTF16( IDS_DOWNLOAD_BUBBLE_CONTINUE_SUSPICIOUS_FILE)); }
diff --git a/chrome/browser/download/download_item_model_unittest.cc b/chrome/browser/download/download_item_model_unittest.cc index ebf7a6d..4791025 100644 --- a/chrome/browser/download/download_item_model_unittest.cc +++ b/chrome/browser/download/download_item_model_unittest.cc
@@ -1517,7 +1517,8 @@ EXPECT_EQ(DownloadCommands::Command::KEEP, bubble_ui_info.subpage_buttons[1].command); EXPECT_FALSE(bubble_ui_info.subpage_buttons[1].is_prominent); - EXPECT_EQ(u"This file may hide malware", bubble_ui_info.warning_summary); + EXPECT_EQ(u"This archive file includes other files that may hide malware", + bubble_ui_info.warning_summary); } TEST_F(DownloadItemModelTailoredWarningTest,
diff --git a/chrome/browser/extensions/api/printing/printing_apitest.cc b/chrome/browser/extensions/api/printing/printing_apitest.cc index e644fce..d152771 100644 --- a/chrome/browser/extensions/api/printing/printing_apitest.cc +++ b/chrome/browser/extensions/api/printing/printing_apitest.cc
@@ -204,6 +204,8 @@ scoped_refptr<printing::TestPrintBackend> test_print_backend_; }; +using PrintingPromiseApiTest = PrintingApiTest; + IN_PROC_BROWSER_TEST_P(PrintingApiTest, GetPrinters) { chromeos::Printer printer = chromeos::Printer(kId); printer.set_display_name("name"); @@ -240,6 +242,21 @@ RunTest("submit_job.html"); } +// As above, but tests using promise based API calls. +IN_PROC_BROWSER_TEST_P(PrintingPromiseApiTest, SubmitJob) { + ASSERT_TRUE(StartEmbeddedTestServer()); + + AddAvailablePrinter(kId, ConstructPrinterCapabilities()); + PrintingAPIHandler* handler = PrintingAPIHandler::Get(browser()->profile()); + handler->SetPrintJobControllerForTesting( + std::make_unique<FakePrintJobControllerAsh>(GetPrintJobManager(), + GetPrintersManager())); + base::AutoReset<bool> skip_confirmation_dialog_reset( + PrintJobSubmitter::SkipConfirmationDialogForTesting()); + + RunTest("submit_job_promise.html"); +} + // Verifies that: // a) Cancel job request works smoothly. // b) OnJobStatusChanged() events are dispatched correctly. @@ -263,4 +280,10 @@ ExtensionType::kExtensionMV2, ExtensionType::kExtensionMV3)); +// We only run the promise based tests for MV3 extensions as promise based API +// calls are only exposed to MV3. +INSTANTIATE_TEST_SUITE_P(/**/, + PrintingPromiseApiTest, + testing::Values(ExtensionType::kExtensionMV3)); + } // namespace extensions
diff --git a/chrome/browser/extensions/api/scripting/scripting_apitest.cc b/chrome/browser/extensions/api/scripting/scripting_apitest.cc index 2f86e91..da9d914 100644 --- a/chrome/browser/extensions/api/scripting/scripting_apitest.cc +++ b/chrome/browser/extensions/api/scripting/scripting_apitest.cc
@@ -138,7 +138,8 @@ ASSERT_TRUE(RunExtensionTest("scripting/remove_css")) << message_; } -IN_PROC_BROWSER_TEST_F(ScriptingAPITest, DynamicContentScripts) { +// TODO(crbug.com/1491650): Re-enable this test +IN_PROC_BROWSER_TEST_F(ScriptingAPITest, DISABLED_DynamicContentScripts) { ASSERT_TRUE(RunExtensionTest("scripting/dynamic_scripts")) << message_; }
diff --git a/chrome/browser/extensions/back_forward_cache_browsertest.cc b/chrome/browser/extensions/back_forward_cache_browsertest.cc index d660fb9..fd823b3 100644 --- a/chrome/browser/extensions/back_forward_cache_browsertest.cc +++ b/chrome/browser/extensions/back_forward_cache_browsertest.cc
@@ -435,7 +435,7 @@ // cross document navigation for a document with an active channel, allowing // the frame to be bfcached subsequently. IN_PROC_BROWSER_TEST_F(ExtensionBackForwardCacheBrowserTest, - ChromeRuntimeConnectUsageInIframe) { + ChromeRuntimeConnectUsageInIframeWithIframeNavigation) { const Extension* extension = LoadExtension(test_data_dir_.AppendASCII("back_forward_cache") .AppendASCII("content_script")); @@ -484,6 +484,108 @@ content::RenderFrameHost::LifecycleState::kInBackForwardCache); } +// Test that the page can enter BFCache with an active channel created from the +// iframe. +IN_PROC_BROWSER_TEST_F( + ExtensionBackForwardCacheBrowserTest, + ChromeRuntimeConnectUsageInIframeWithoutIframeNavigation) { + const Extension* extension = + LoadExtension(test_data_dir_.AppendASCII("back_forward_cache") + .AppendASCII("content_script")); + ASSERT_TRUE(extension); + + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url_a = embedded_test_server()->GetURL("a.com", "/iframe.html"); + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html")); + + // 1) Navigate to A. + content::RenderFrameHostWrapper primary_render_frame_host( + ui_test_utils::NavigateToURL(browser(), url_a)); + std::u16string expected_title = u"connected"; + content::TitleWatcher title_watcher( + browser()->tab_strip_model()->GetActiveWebContents(), expected_title); + + content::RenderFrameHost* child = + ChildFrameAt(primary_render_frame_host.get(), 0); + + std::string action = base::StringPrintf( + R"JS( + var p = chrome.runtime.connect('%s'); + p.onMessage.addListener((m) => {window.top.document.title = m; }); + )JS", + extension->id().c_str()); + ASSERT_TRUE(ExecJs(child, action)); + + // 2) Wait for the message port to be connected. + EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); + + // Expect that a channel is open. + EXPECT_EQ(1u, MessageService::Get(profile())->GetChannelCountForTest()); + + // 3) Navigate to B, and the channel is still open. + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url_b)); + EXPECT_EQ(1u, MessageService::Get(profile())->GetChannelCountForTest()); + + // 4) Expect that A is in the back forward cache. + EXPECT_FALSE(primary_render_frame_host.IsDestroyed()); + EXPECT_EQ(primary_render_frame_host->GetLifecycleState(), + content::RenderFrameHost::LifecycleState::kInBackForwardCache); +} + +// Test that the page can enter BFCache with an active channel that's created +// from the extension background with two receivers from different frames. +IN_PROC_BROWSER_TEST_F(ExtensionBackForwardCacheBrowserTest, + ChromeTabsConnectWithMultipleReceivers) { + const Extension* extension = + LoadExtension(test_data_dir_.AppendASCII("back_forward_cache") + .AppendASCII("content_script_all_frames")); + ASSERT_TRUE(extension); + + ASSERT_TRUE(embedded_test_server()->Start()); + GURL url_a(embedded_test_server()->GetURL("a.com", "/iframe.html")); + GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html")); + + // 1) Navigate to A. + content::RenderFrameHostWrapper primary_render_frame_host( + ui_test_utils::NavigateToURL(browser(), url_a)); + + // 2) Create channel from the extension background. + static constexpr char kScript[] = + R"JS( + var p; + var countConnected = 0; + chrome.tabs.query({}, (t) => { + p = chrome.tabs.connect(t[0].id); + p.onMessage.addListener( + (m) => { + if (m == 'connected') { + countConnected++; + if (countConnected == 2) { + chrome.test.sendScriptResult('connected twice'); + } + } + }); + }); + )JS"; + + // The background should receives two "connected" messages from different + // frames. + EXPECT_EQ("connected twice", + ExecuteScriptInBackgroundPage(extension->id(), kScript)); + // Even though there are two ports from the receiver end, there is still one + // channel. + EXPECT_EQ(1u, MessageService::Get(profile())->GetChannelCountForTest()); + + // 3) Navigate to B. + ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url_b)); + + // 4) Expect that A is in the back forward cache. + EXPECT_EQ(primary_render_frame_host->GetLifecycleState(), + content::RenderFrameHost::LifecycleState::kInBackForwardCache); + // The channel should still be active. + EXPECT_EQ(1u, MessageService::Get(profile())->GetChannelCountForTest()); +} + // Test if the chrome.runtime.sendMessage API is called, the page is allowed // to enter the bfcache. IN_PROC_BROWSER_TEST_F(ExtensionBackForwardCacheBrowserTest,
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 7d07286..286e3da73 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -3791,6 +3791,11 @@ "expiry_milestone": 119 }, { + "name": "enable-user-link-capturing-pwa", + "owners": [ "dibyapal", "desktop-pwas-team@google.com" ], + "expiry_milestone": 125 + }, + { "name": "enable-user-policy-for-signin-and-nosync-consent-level", "owners": [ "vincb" ], "expiry_milestone": 130 @@ -5476,7 +5481,7 @@ { "name": "media-remoting-without-fullscreen", "owners": [ "muyaoxu@google.com", "openscreen-eng@google.com" ], - "expiry_milestone": 120 + "expiry_milestone": 140 }, { "name": "media-route-dial-provider",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index ffa71c8..1978af0 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -7657,6 +7657,10 @@ const char kUnoDesktopDescription[] = "Enables the UNO model on Desktop. This is currently an experiment in a " "prototype stage in order to validate the model."; + +const char kDesktopPWAsUserLinkCapturingName[] = "Desktop PWA Link Capturing"; +const char kDesktopPWAsUserLinkCapturingDescription[] = + "Enables opening links from Chrome in an installed PWA"; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) #if BUILDFLAG(ENABLE_HLS_DEMUXER)
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index b2057f4b..5e136711 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -4435,6 +4435,9 @@ extern const char kUnoDesktopName[]; extern const char kUnoDesktopDescription[]; + +extern const char kDesktopPWAsUserLinkCapturingName[]; +extern const char kDesktopPWAsUserLinkCapturingDescription[]; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) #if BUILDFLAG(ENABLE_HLS_DEMUXER)
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc index 1d4bdee8..dc9fc17b 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl.cc
@@ -76,6 +76,7 @@ return priority; } +#if BUILDFLAG(IS_CHROMEOS) // Returns true if `generation_guid` is required and missing. // Returns false otherwise. static bool IsMissingGenerationGuid(const std::string* generation_guid) { @@ -88,6 +89,7 @@ } return !generation_guid || generation_guid->empty(); } +#endif // BUILDFLAG(IS_CHROMEOS) // Returns true if any required sequence info is missing. Returns // false otherwise. @@ -97,11 +99,14 @@ const absl::optional<Priority> priority_result, const std::string* generation_guid) { return !sequencing_id || !generation_id || generation_id->empty() || +#if BUILDFLAG(IS_CHROMEOS) + IsMissingGenerationGuid(generation_guid) || +#endif // BUILDFLAG(IS_CHROMEOS) !priority_result.has_value() || - !Priority_IsValid(priority_result.value()) || - IsMissingGenerationGuid(generation_guid); + !Priority_IsValid(priority_result.value()); } +#if BUILDFLAG(IS_CHROMEOS) // Returns true if `generation_guid` can be parsed as a GUID or if // `generation_guid` does not need to be parsed based on the type of device. // Returns false otherwise. @@ -116,6 +121,7 @@ } return base::Uuid::ParseCaseInsensitive(generation_guid).is_valid(); } +#endif // BUILDFLAG(IS_CHROMEOS) // Processes LOG_UPLOAD event. void ProcessFileUpload(base::WeakPtr<FileUploadJob::Delegate> delegate, @@ -331,6 +337,12 @@ } const auto [seq_id, gen_id] = parse_seq_id_gen_id_result.ValueOrDie(); + SequenceInformation proto; + proto.set_sequencing_id(seq_id); + proto.set_generation_id(gen_id); + proto.set_priority(Priority(priority_result.value())); + +#if BUILDFLAG(IS_CHROMEOS) // If `generation_guid` does not exist, set it to be an empty string. const std::string gen_guid = generation_guid ? *generation_guid : ""; if (!GenerationGuidIsValid(gen_guid)) { @@ -340,12 +352,8 @@ "SequenceInformation proto. Invalid generation guid : ", value.DebugString()})); } - - SequenceInformation proto; - proto.set_sequencing_id(seq_id); - proto.set_generation_id(gen_id); - proto.set_priority(Priority(priority_result.value())); proto.set_generation_guid(gen_guid); +#endif // BUILDFLAG(IS_CHROMEOS) return proto; } @@ -474,6 +482,7 @@ void RecordHandlerImpl::ReportUploader::LogNumRecordsInUpload( size_t num_records) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +#if BUILDFLAG(IS_CHROMEOS) if (policy::ManagementServiceFactory::GetForPlatform() ->HasManagementAuthority( policy::EnterpriseManagementAuthority::CLOUD_DOMAIN)) { @@ -484,6 +493,8 @@ base::UmaHistogramCounts1000( "Browser.ERP.RecordsPerUploadFromUnmanagedDevice", num_records); } +// TODO(b/304623373): Add separate UMA for non-ChromeOS devices. +#endif // BUILDFLAG(IS_CHROMEOS) } void RecordHandlerImpl::ReportUploader::ResumeUpload(size_t next_record) {
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc index f73515a..cf4aa95 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_handler_impl_unittest.cc
@@ -15,6 +15,7 @@ #include "base/strings/string_number_conversions.h" #include "base/uuid.h" #include "base/values.h" +#include "build/build_config.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "chrome/browser/policy/messaging_layer/public/report_client.h" #include "chrome/browser/policy/messaging_layer/public/report_client_test_util.h" @@ -173,7 +174,9 @@ auto* sequence_information = encrypted_record.mutable_sequence_information(); sequence_information->set_generation_id(generation_id); +#if BUILDFLAG(IS_CHROMEOS) sequence_information->set_generation_guid(generation_guid); +#endif // BUILDFLAG(IS_CHROMEOS) sequence_information->set_sequencing_id(i); sequence_information->set_priority(Priority::IMMEDIATE); ScopedReservation record_reservation(encrypted_record.ByteSizeLong(), @@ -307,6 +310,7 @@ .Build(); ASSERT_TRUE(response.has_value()); +#if BUILDFLAG(IS_CHROMEOS) // Verify generation guid exists and equals kGenerationGuid. ASSERT_THAT(response->FindStringByDottedPath( "lastSucceedUploadedRecord.generationGuid"), @@ -314,6 +318,7 @@ EXPECT_THAT(*(response->FindStringByDottedPath( "lastSucceedUploadedRecord.generationGuid")), StrEq(kGenerationGuid)); +#endif // BUILDFLAG(IS_CHROMEOS) test_env_.SimulateCustomResponseForRequest(0, std::move(response.value())); @@ -355,6 +360,7 @@ EXPECT_OK(result) << result.status(); } +#if BUILDFLAG(IS_CHROMEOS) TEST_P(RecordHandlerImplTest, InvalidGenerationGuid) { auto test_records = BuildTestRecordsVector(kNumTestRecords, kGenerationId, kGenerationGuid, memory_resource_); @@ -387,6 +393,7 @@ EXPECT_THAT(result.status(), Property(&Status::error_code, Eq(error::INTERNAL))); } +#endif // BUILDFLAG(IS_CHROMEOS) TEST_P(RecordHandlerImplTest, MissingGenerationGuidFromManagedDeviceIsOk) { // Set device as managed @@ -427,6 +434,7 @@ EXPECT_OK(result) << result.status(); } +#if BUILDFLAG(IS_CHROMEOS) TEST_P(RecordHandlerImplTest, MissingGenerationGuidFromUnmanagedDeviceReturnError) { // Set device as unmanaged @@ -467,6 +475,7 @@ EXPECT_THAT(result.status(), Property(&Status::error_code, Eq(error::INTERNAL))); } +#endif // BUILDFLAG(IS_CHROMEOS) TEST_P(RecordHandlerImplTest, MissingSequenceInformation) { // test records that has one record with missing sequence information.
diff --git a/chrome/browser/policy/messaging_layer/upload/record_handler_upload_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_handler_upload_unittest.cc index 8b048a26..8171b0d 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_handler_upload_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_handler_upload_unittest.cc
@@ -10,7 +10,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/test/task_environment.h" #include "base/time/time.h" - +#include "build/build_config.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "chrome/browser/policy/messaging_layer/proto/synced/log_upload_event.pb.h" #include "chrome/browser/policy/messaging_layer/public/report_client_test_util.h" @@ -221,13 +221,15 @@ UploadSettings upload_settings, absl::optional<UploadTracker> upload_tracker) { static constexpr int64_t kGenerationId = 1234; - static const std::string kGenerationGuid = - base::Uuid::GenerateRandomV4().AsLowercaseString(); EncryptedRecord encrypted_record; encrypted_record.set_encrypted_wrapped_record(data.data(), data.size()); auto* sequence_information = encrypted_record.mutable_sequence_information(); sequence_information->set_generation_id(kGenerationId); +#if BUILDFLAG(IS_CHROMEOS) + static const std::string kGenerationGuid = + base::Uuid::GenerateRandomV4().AsLowercaseString(); sequence_information->set_generation_guid(kGenerationGuid); +#endif // BUILDFLAG(IS_CHROMEOS) sequence_information->set_sequencing_id(0); sequence_information->set_priority(Priority::SECURITY); {
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc index ddb99d91..f889150 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.cc
@@ -13,6 +13,7 @@ #include "base/strings/string_number_conversions.h" #include "base/token.h" #include "base/values.h" +#include "build/build_config.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "components/reporting/proto/synced/record.pb.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -267,12 +268,16 @@ // required only for unmanaged devices. if (!sequence_information.has_sequencing_id() || !sequence_information.has_generation_id() || - !sequence_information.has_priority() || - // Require generation guid for non ChromeOS-managed devices. + !sequence_information.has_priority() +#if BUILDFLAG(IS_CHROMEOS) + || + // Require generation guid for unmanaged ChromeOS devices. (!policy::ManagementServiceFactory::GetForPlatform() ->HasManagementAuthority( policy::EnterpriseManagementAuthority::CLOUD_DOMAIN) && - !sequence_information.has_generation_guid())) { + !sequence_information.has_generation_guid()) +#endif // BUILDFLAG(IS_CHROMEOS) + ) { return; } @@ -282,7 +287,9 @@ result_->Set(GetGenerationIdPath(), base::NumberToString(sequence_information.generation_id())); result_->Set(GetPriorityPath(), sequence_information.priority()); +#if BUILDFLAG(IS_CHROMEOS) result_->Set(GetGenerationGuidPath(), sequence_information.generation_guid()); +#endif // BUILDFLAG(IS_CHROMEOS) } SequenceInformationDictionaryBuilder::~SequenceInformationDictionaryBuilder() = @@ -309,9 +316,11 @@ } // static +#if BUILDFLAG(IS_CHROMEOS) std::string_view SequenceInformationDictionaryBuilder::GetGenerationGuidPath() { return UploadEncryptedReportingRequestBuilder::kGenerationGuid; } +#endif // BUILDFLAG(IS_CHROMEOS) EncryptionInfoDictionaryBuilder::EncryptionInfoDictionaryBuilder( const EncryptionInfo& encryption_info) {
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h index b40d603..0289fb3 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder.h
@@ -9,7 +9,7 @@ #include "base/feature_list.h" #include "base/values.h" - +#include "build/build_config.h" #include "components/reporting/proto/synced/record.pb.h" #include "components/reporting/resources/resource_manager.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -34,9 +34,10 @@ // "generationId": 123456789, // "priority": 1 // // The string value of the `generation_guid` may be empty for managed -// // devices, but will always have a value for unmanaged devices. It's -// // value, if present, must be a string of base::Uuid. See base/uuid.h -// // for format information. +// // ChromeOS devices or any non-ChromeOS devices, but will always have +// // a value for unmanaged ChromeOS devices. Its value, if present, +// // must be a string of base::Uuid. See base/uuid.h for format +// // information. // "generation_guid": "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" // }, // "compressionInformation": { @@ -167,7 +168,9 @@ static std::string_view GetSequencingIdPath(); static std::string_view GetGenerationIdPath(); static std::string_view GetPriorityPath(); +#if BUILDFLAG(IS_CHROMEOS) static std::string_view GetGenerationGuidPath(); +#endif // BUILDFLAG(IS_CHROMEOS) private: absl::optional<base::Value::Dict> result_;
diff --git a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc index 0fbb69f..dfd9651 100644 --- a/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/record_upload_request_builder_unittest.cc
@@ -14,6 +14,7 @@ #include "base/test/task_environment.h" #include "base/token.h" #include "base/uuid.h" +#include "build/build_config.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "chrome/browser/policy/messaging_layer/upload/record_handler_impl.h" #include "chrome/browser/policy/messaging_layer/util/test_request_payload.h" @@ -236,6 +237,7 @@ EXPECT_THAT(record_dict.value(), IsRecordValid<>()); EXPECT_TRUE(record_reservation.reserved()); +#if BUILDFLAG(IS_CHROMEOS) // Now, verify that generation guid is required when the device is in an // unmanaged state. The generation guid is not set, so we just need to ensure // the device is unmanaged. @@ -255,6 +257,8 @@ // Set the generation id - expect complete call. sequence_information->set_generation_guid(kGenerationGuid); +#endif // BUILDFLAG(IS_CHROMEOS) + record_dict = EncryptedRecordDictionaryBuilder(record, record_reservation).Build();
diff --git a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc index 3ddbf7e..2d293de3 100644 --- a/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc +++ b/chrome/browser/policy/messaging_layer/upload/upload_client_unittest.cc
@@ -116,8 +116,10 @@ TEST_P(UploadClientTest, CreateUploadClientAndUploadRecords) { static constexpr int64_t kExpectedCallTimes = 10; static constexpr int64_t kGenerationId = 1234; +#if BUILDFLAG(IS_CHROMEOS) static constexpr char kGenerationGuid[] = "c947e7e9-b87d-4592-9fe7-407792544e53"; +#endif // BUILDFLAG(IS_CHROMEOS) base::Value::Dict data; data.Set("TEST_KEY", "TEST_VALUE"); @@ -141,7 +143,9 @@ encrypted_record.mutable_sequence_information(); sequence_information->set_sequencing_id(static_cast<int64_t>(i)); sequence_information->set_generation_id(kGenerationId); +#if BUILDFLAG(IS_CHROMEOS) sequence_information->set_generation_guid(kGenerationGuid); +#endif // BUILDFLAG(IS_CHROMEOS) sequence_information->set_priority(Priority::IMMEDIATE); ScopedReservation record_reservation(encrypted_record.ByteSizeLong(), memory_resource_); @@ -165,6 +169,7 @@ ReportingServerConnector::TestEnvironment test_env; static constexpr char matched_record_template[] = +#if BUILDFLAG(IS_CHROMEOS) R"JSON( { "sequenceInformation": { @@ -174,7 +179,19 @@ "sequencingId": "%d" } } -)JSON"; +)JSON" +#else // BUILDFLAG(IS_CHROMEOS) + R"JSON( +{ + "sequenceInformation": { + "generationId": "1234", + "priority": 1, + "sequencingId": "%d" + } +} +)JSON" +#endif // BUILDFLAG(IS_CHROMEOS) + ; test::TestMultiEvent<SequenceInformation, bool> upload_success_event;
diff --git a/chrome/browser/printing/system_access_process_print_browsertest.cc b/chrome/browser/printing/system_access_process_print_browsertest.cc index 3c0c83a..1b0f73e 100644 --- a/chrome/browser/printing/system_access_process_print_browsertest.cc +++ b/chrome/browser/printing/system_access_process_print_browsertest.cc
@@ -1334,7 +1334,8 @@ #if BUILDFLAG(IS_WIN) IN_PROC_BROWSER_TEST_P(SystemAccessProcessPrintBrowserTest, - StartPrintingPdfConversionFails) { + // TODO(crbug.com/1491616): Re-enable this test + DISABLED_StartPrintingPdfConversionFails) { AddPrinter("printer1"); SetPrinterNameForSubsequentContexts("printer1"); PrimeForPdfConversionErrorOnPageIndex(/*page_index=*/1);
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index d97c401..b7f3bdf8 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -6,7 +6,6 @@ import("//build/config/chromeos/ui_mode.gni") import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") -import("//chrome/test/base/js2gtest.gni") import("//components/compose/features.gni") import("//components/signin/features.gni") import("//pdf/features.gni")
diff --git a/chrome/browser/resources/gaia_auth_host/BUILD.gn b/chrome/browser/resources/gaia_auth_host/BUILD.gn index b5374d6..4da2758 100644 --- a/chrome/browser/resources/gaia_auth_host/BUILD.gn +++ b/chrome/browser/resources/gaia_auth_host/BUILD.gn
@@ -4,7 +4,6 @@ import("//build/config/chromeos/ui_mode.gni") import("//chrome/common/features.gni") -import("//chrome/test/base/js2gtest.gni") import("//third_party/closure_compiler/compile_js.gni") import("//tools/grit/grit_rule.gni") import("//tools/grit/preprocess_if_expr.gni")
diff --git a/chrome/browser/safe_browsing/download_protection/download_request_maker.cc b/chrome/browser/safe_browsing/download_protection/download_request_maker.cc index b0c82be..7d5e34c 100644 --- a/chrome/browser/safe_browsing/download_protection/download_request_maker.cc +++ b/chrome/browser/safe_browsing/download_protection/download_request_maker.cc
@@ -38,7 +38,7 @@ // Note: The name of this variable is checked by PRESUBMIT. Please update the // PRESUBMIT script before renaming this variable. constexpr int kTailoredWarningVersion = 1; -constexpr int kTailoredWarningVersionWithImprovedDownloadBubbleWarnings = 2; +constexpr int kTailoredWarningVersionWithImprovedDownloadBubbleWarnings = 3; DownloadRequestMaker::TabUrls TabUrlsFromWebContents( content::WebContents* web_contents) {
diff --git a/chrome/browser/safe_browsing/download_protection/download_request_maker_unittest.cc b/chrome/browser/safe_browsing/download_protection/download_request_maker_unittest.cc index 304ae5b6..979ff62fa 100644 --- a/chrome/browser/safe_browsing/download_protection/download_request_maker_unittest.cc +++ b/chrome/browser/safe_browsing/download_protection/download_request_maker_unittest.cc
@@ -431,7 +431,7 @@ run_loop.Run(); ASSERT_NE(request, nullptr); - EXPECT_EQ(request->tailored_info().version(), 2); + EXPECT_EQ(request->tailored_info().version(), 3); } TEST_F(DownloadRequestMakerTest, PopulatesFileBasename) {
diff --git a/chrome/browser/ui/global_media_controls/cast_device_list_host.cc b/chrome/browser/ui/global_media_controls/cast_device_list_host.cc index 2f0f3b3..9520b49 100644 --- a/chrome/browser/ui/global_media_controls/cast_device_list_host.cc +++ b/chrome/browser/ui/global_media_controls/cast_device_list_host.cc
@@ -83,12 +83,14 @@ CastDeviceListHost::CastDeviceListHost( std::unique_ptr<media_router::CastDialogController> dialog_controller, mojo::PendingRemote<global_media_controls::mojom::DeviceListClient> client, - MediaRemotingCallback media_remoting_callback, - base::RepeatingClosure hide_dialog_callback) + base::RepeatingClosure media_remoting_callback, + base::RepeatingClosure hide_dialog_callback, + base::RepeatingClosure on_sinks_discovered_callback) : cast_controller_(std::move(dialog_controller)), client_(std::move(client)), media_remoting_callback_(std::move(media_remoting_callback)), hide_dialog_callback_(std::move(hide_dialog_callback)), + on_sinks_discovered_callback_(std::move(on_sinks_discovered_callback)), id_(next_id_++) { cast_controller_->AddObserver(this); cast_controller_->RegisterDestructor( @@ -155,6 +157,10 @@ devices.push_back(CreateDevice(sink)); } } + + if (!devices.empty()) { + on_sinks_discovered_callback_.Run(); + } client_->OnDevicesUpdated(std::move(devices)); }
diff --git a/chrome/browser/ui/global_media_controls/cast_device_list_host.h b/chrome/browser/ui/global_media_controls/cast_device_list_host.h index 6b1f1e5..2bd691b 100644 --- a/chrome/browser/ui/global_media_controls/cast_device_list_host.h +++ b/chrome/browser/ui/global_media_controls/cast_device_list_host.h
@@ -19,14 +19,13 @@ class CastDeviceListHost : public global_media_controls::mojom::DeviceListHost, media_router::CastDialogController::Observer { public: - using MediaRemotingCallback = base::RepeatingCallback<void()>; - CastDeviceListHost( std::unique_ptr<media_router::CastDialogController> dialog_controller, mojo::PendingRemote<global_media_controls::mojom::DeviceListClient> observer, - MediaRemotingCallback media_remoting_callback, - base::RepeatingClosure hide_dialog_callback); + base::RepeatingClosure media_remoting_callback, + base::RepeatingClosure hide_dialog_callback, + base::RepeatingClosure on_sinks_discovered_callback); ~CastDeviceListHost() override; // mojom::DeviceListHost: @@ -49,9 +48,11 @@ mojo::Remote<global_media_controls::mojom::DeviceListClient> client_; std::vector<media_router::UIMediaSink> sinks_; // Called whenever a Media Remoting session is starting. - MediaRemotingCallback media_remoting_callback_; + base::RepeatingClosure media_remoting_callback_; // Called whenever a tab mirroring session starts. base::RepeatingClosure hide_dialog_callback_; + // Called whenever the sink is discovered. + base::RepeatingClosure on_sinks_discovered_callback_; const int id_; };
diff --git a/chrome/browser/ui/global_media_controls/cast_device_list_host_unittest.cc b/chrome/browser/ui/global_media_controls/cast_device_list_host_unittest.cc index 816fb04..5274dca 100644 --- a/chrome/browser/ui/global_media_controls/cast_device_list_host_unittest.cc +++ b/chrome/browser/ui/global_media_controls/cast_device_list_host_unittest.cc
@@ -80,6 +80,7 @@ MOCK_METHOD(void, OnMediaRemotingRequested, ()); MOCK_METHOD(void, HideMediaDialog, ()); + MOCK_METHOD(void, OnSinksDiscoveredCallback, ()); protected: std::unique_ptr<CastDeviceListHost> CreateHost( @@ -91,6 +92,8 @@ base::BindRepeating(&CastDeviceListHostTest::OnMediaRemotingRequested, base::Unretained(this)), base::BindRepeating(&CastDeviceListHostTest::HideMediaDialog, + base::Unretained(this)), + base::BindRepeating(&CastDeviceListHostTest::OnSinksDiscoveredCallback, base::Unretained(this))); } @@ -137,7 +140,6 @@ UIMediaSink sink = CreateMediaSink(); sink.cast_modes = {media_router::MediaCastMode::REMOTE_PLAYBACK}; host_->OnModelUpdated({CreateModelWithSinks({sink})}); - EXPECT_CALL( *dialog_controller_, StartCasting(sink.id, media_router::MediaCastMode::REMOTE_PLAYBACK)); @@ -160,6 +162,16 @@ } #endif // !BUILDFLAG(IS_CHROMEOS) +TEST_F(CastDeviceListHostTest, OnSinksDiscovered) { + EXPECT_CALL(*this, OnSinksDiscoveredCallback()); + UIMediaSink sink = CreateMediaSink(); + sink.cast_modes = {media_router::MediaCastMode::REMOTE_PLAYBACK}; + host_->OnModelUpdated({CreateModelWithSinks({sink})}); + + EXPECT_CALL(*this, OnSinksDiscoveredCallback()).Times(0); + host_->OnModelUpdated({CreateModelWithSinks({})}); +} + TEST_F(CastDeviceListHostTest, HideMediaDialogCallback) { EXPECT_CALL(*this, HideMediaDialog()); host_->OnCastingStarted();
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.cc b/chrome/browser/ui/global_media_controls/media_notification_service.cc index b2894800..a7dc22c 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_service.cc +++ b/chrome/browser/ui/global_media_controls/media_notification_service.cc
@@ -10,6 +10,7 @@ #include "base/metrics/histogram_functions.h" #include "base/ranges/algorithm.h" #include "base/unguessable_token.h" +#include "chrome/browser/feature_engagement/tracker_factory.h" #include "chrome/browser/media/router/media_router_feature.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" @@ -21,6 +22,7 @@ #include "chrome/browser/ui/media_router/cast_dialog_controller.h" #include "chrome/browser/ui/media_router/media_router_ui.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "components/feature_engagement/public/tracker.h" #include "components/global_media_controls/public/media_dialog_delegate.h" #include "components/global_media_controls/public/media_item_manager.h" #include "components/global_media_controls/public/media_item_producer.h" @@ -285,8 +287,27 @@ void MediaNotificationService::OnMediaRemotingRequested( const std::string& item_id) { auto item = media_session_item_producer_->GetMediaItem(item_id); - if (item) { - item->RequestMediaRemoting(); + if (!item) { + return; + } + + item->RequestMediaRemoting(); + auto* web_contents = + content::MediaSession::GetWebContentsFromRequestId(item_id); + if (web_contents && web_contents->GetLastCommittedURL().SchemeIsFile()) { + feature_engagement::TrackerFactory::GetForBrowserContext(profile_) + ->NotifyEvent("media_route_started_from_gmc"); + } +} + +void MediaNotificationService::OnSinksDiscovered(const std::string& item_id) { + auto item = media_session_item_producer_->GetMediaItem(item_id); + auto* web_contents = + content::MediaSession::GetWebContentsFromRequestId(item_id); + + if (web_contents) { + should_show_cast_local_media_iph_ = + web_contents->GetLastCommittedURL().SchemeIsFile(); } } @@ -515,11 +536,18 @@ &MediaNotificationService::OnMediaRemotingRequested, weak_ptr_factory_.GetWeakPtr(), remoting_session_id.value()) : base::DoNothing(); + auto on_sinks_discovered_callback = + remoting_session_id.has_value() + ? base::BindRepeating(&MediaNotificationService::OnSinksDiscovered, + weak_ptr_factory_.GetWeakPtr(), + remoting_session_id.value()) + : base::DoNothing(); auto host = std::make_unique<CastDeviceListHost>( std::move(dialog_controller), std::move(client_remote), std::move(media_remoting_callback_), base::BindRepeating(&global_media_controls::MediaItemManager::HideDialog, - item_manager_->GetWeakPtr())); + item_manager_->GetWeakPtr()), + std::move(on_sinks_discovered_callback)); int host_id = host->id(); mojo::SelfOwnedReceiverRef<global_media_controls::mojom::DeviceListHost> host_receiver = mojo::MakeSelfOwnedReceiver(
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service.h b/chrome/browser/ui/global_media_controls/media_notification_service.h index 9ac096de..24a5b353 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_service.h +++ b/chrome/browser/ui/global_media_controls/media_notification_service.h
@@ -72,6 +72,8 @@ base::RepeatingCallback<void(bool)> callback) override; void OnMediaRemotingRequested(const std::string& item_id) override; + void OnSinksDiscovered(const std::string& item_id); + // global_media_controls::MediaSessionItemProducerObserver: void OnMediaSessionActionButtonPressed( const std::string& id, @@ -114,6 +116,9 @@ std::unique_ptr<media_router::StartPresentationContext> context); #endif // BUILDFLAG(IS_CHROMEOS) + bool should_show_cast_local_media_iph() const { + return should_show_cast_local_media_iph_; + } void set_device_provider_for_testing( std::unique_ptr<MediaNotificationDeviceProvider> device_provider); @@ -192,6 +197,10 @@ bool shutdown_has_started_ = false; + // It's set to true when MediaNotificationService receives sink updates for a + // local media. + bool should_show_cast_local_media_iph_ = false; + base::WeakPtrFactory<MediaNotificationService> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc index f99bd29..a8499e1 100644 --- a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc +++ b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
@@ -17,9 +17,10 @@ #include "build/build_config.h" #include "chrome/browser/media/router/chrome_media_router_factory.h" #include "chrome/browser/media/router/media_router_feature.h" +#include "chrome/browser/ui/global_media_controls/cast_device_list_host.h" #include "chrome/browser/ui/global_media_controls/cast_media_notification_producer.h" #include "chrome/browser/ui/global_media_controls/test_helper.h" -#include "chrome/browser/ui/media_router/cast_dialog_controller.h" +#include "chrome/browser/ui/media_router/cast_dialog_model.h" #include "chrome/browser/ui/media_router/media_route_starter.h" #include "chrome/browser/ui/media_router/query_result_manager.h" #include "chrome/test/base/chrome_render_view_host_test_harness.h" @@ -652,3 +653,23 @@ // TODO(takumif): Confirm that this calls the MediaNotificationItem. service()->OnMediaRemotingRequested(id.ToString()); } + +TEST_F(MediaNotificationServiceCastTest, OnSinksDiscoveredForLocalMedia) { + // Playing the media. + auto id = SimulatePlayingControllableMediaForWebContents(web_contents()); + + NiceMock<global_media_controls::test::MockMediaDialogDelegate> + dialog_delegate; + + // Opening the dialog. + SimulateDialogOpened(&dialog_delegate); + + service()->OnSinksDiscovered(id.ToString()); + EXPECT_FALSE(service()->should_show_cast_local_media_iph()); + + // Navigating to a page with local media. + NavigateAndCommit(GURL("file:///example.mp4")); + + service()->OnSinksDiscovered(id.ToString()); + EXPECT_TRUE(service()->should_show_cast_local_media_iph()); +}
diff --git a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller.cc b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller.cc index b349993..b8663d86 100644 --- a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller.cc +++ b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller.cc
@@ -30,7 +30,12 @@ void MediaToolbarButtonController::OnMediaDialogClosed() { UpdateToolbarButtonState(); + // Triggered when media playback is active and a casting session is initiated, + // prompting the user to manage their casting session. delegate_->MaybeShowStopCastingPromo(); + // Triggered exclusively for local media content, encourages the user to begin + // casting if a compatible sink is available. + delegate_->MaybeShowLocalMediaCastingPromo(); } void MediaToolbarButtonController::ShowToolbarButton() {
diff --git a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_delegate.h b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_delegate.h index ef093c57..ba6f830 100644 --- a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_delegate.h +++ b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_delegate.h
@@ -13,6 +13,7 @@ virtual void Hide() = 0; virtual void Enable() = 0; virtual void Disable() = 0; + virtual void MaybeShowLocalMediaCastingPromo() = 0; virtual void MaybeShowStopCastingPromo() = 0; protected:
diff --git a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_unittest.cc b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_unittest.cc index 5ed843c..6cdbb3e0 100644 --- a/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_unittest.cc +++ b/chrome/browser/ui/global_media_controls/media_toolbar_button_controller_unittest.cc
@@ -26,6 +26,7 @@ MOCK_METHOD(void, Hide, ()); MOCK_METHOD(void, Enable, ()); MOCK_METHOD(void, Disable, ()); + MOCK_METHOD(void, MaybeShowLocalMediaCastingPromo, ()); MOCK_METHOD(void, MaybeShowStopCastingPromo, ()); };
diff --git a/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller.cc index bcf571b..6708311 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller.cc
@@ -30,8 +30,7 @@ if (!delegate_) { return; } - delegate_->SavePassword(GetPendingPassword().username_value, - GetPendingPassword().password_value); + delegate_->OnAddUsernameSaveClicked(pending_password().username_value); } std::u16string AddUsernameBubbleController::GetTitle() const {
diff --git a/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller_unittest.cc b/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller_unittest.cc index 81d7a69..b084274 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller_unittest.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/add_username_bubble_controller_unittest.cc
@@ -10,6 +10,7 @@ #include "testing/gtest/include/gtest/gtest.h" using ::testing::_; +using ::testing::Eq; using ::testing::Return; using ::testing::ReturnRef; @@ -56,8 +57,8 @@ } private: - std::unique_ptr<PasswordsModelDelegateMock> mock_delegate_; std::unique_ptr<AddUsernameBubbleController> controller_; + std::unique_ptr<PasswordsModelDelegateMock> mock_delegate_; password_manager::PasswordForm pending_password_; }; @@ -76,8 +77,7 @@ base::HistogramTester histogram_tester; CreateController(); - EXPECT_CALL(*delegate(), SavePassword(pending_password().username_value, - pending_password().password_value)); + EXPECT_CALL(*delegate(), OnAddUsernameSaveClicked(Eq(kUsername))); controller()->OnSaveClicked(); EXPECT_CALL(*delegate(), OnBubbleHidden());
diff --git a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc index 25f2dd056..afc7269 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/manage_passwords_bubble_controller.cc
@@ -74,9 +74,11 @@ } std::u16string ManagePasswordsBubbleController::GetTitle() const { - return GetManagePasswordsDialogTitleText( - GetWebContents()->GetVisibleURL(), delegate_->GetOrigin(), - !delegate_->GetCurrentForms().empty()); + return delegate_->GetState() == password_manager::ui::CONFIRMATION_STATE + ? GetConfirmationManagePasswordsDialogTitleText() + : GetManagePasswordsDialogTitleText( + GetWebContents()->GetVisibleURL(), delegate_->GetOrigin(), + !delegate_->GetCurrentForms().empty()); } void ManagePasswordsBubbleController::OnManageClicked(
diff --git a/chrome/browser/ui/passwords/manage_passwords_state.cc b/chrome/browser/ui/passwords/manage_passwords_state.cc index e7c740d9..b573018 100644 --- a/chrome/browser/ui/passwords/manage_passwords_state.cc +++ b/chrome/browser/ui/passwords/manage_passwords_state.cc
@@ -134,6 +134,29 @@ SetState(password_manager::ui::CONFIRMATION_STATE); } +void ManagePasswordsState::OnSubmittedGeneratedPassword( + password_manager::ui::State state, + std::unique_ptr<password_manager::PasswordFormManagerForUI> form_manager) { + CHECK(state == password_manager::ui::CONFIRMATION_STATE || + state == password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE); + if (form_manager) { + ClearData(); + form_manager_ = std::move(form_manager); + } + + local_credentials_forms_ = + DeepCopyNonPSLVector(form_manager_->GetBestMatches()); + AppendDeepCopyVector(form_manager_->GetFederatedMatches(), + &local_credentials_forms_); + // In the confirmation state, a list of saved passwords is displayed, and that + // list should contain the just added one. + local_credentials_forms_.push_back( + std::make_unique<PasswordForm>(form_manager_->GetPendingCredentials())); + + origin_ = url::Origin::Create(form_manager_->GetURL()); + SetState(state); +} + void ManagePasswordsState::OnPasswordAutofilled( const std::vector<const PasswordForm*>& password_forms, url::Origin origin,
diff --git a/chrome/browser/ui/passwords/manage_passwords_state.h b/chrome/browser/ui/passwords/manage_passwords_state.h index 81042ddf..c139493 100644 --- a/chrome/browser/ui/passwords/manage_passwords_state.h +++ b/chrome/browser/ui/passwords/manage_passwords_state.h
@@ -68,6 +68,12 @@ void OnAutomaticPasswordSave( std::unique_ptr<password_manager::PasswordFormManagerForUI> form_manager); + // Move to |state|. Updates local_credentials_forms_ to contain pending + // credentials. + void OnSubmittedGeneratedPassword( + password_manager::ui::State state, + std::unique_ptr<password_manager::PasswordFormManagerForUI> form_manager); + // Move to MANAGE_STATE or INACTIVE_STATE for PSL matched passwords. // |password_forms| contains best matches from the password store for the // form which was autofilled, |origin| is an origin of the form which was
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc index ed5e3046..01ccd48 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.cc
@@ -257,7 +257,18 @@ std::unique_ptr<PasswordFormManagerForUI> form_manager) { DestroyPopups(); save_fallback_timer_.Stop(); - passwords_data_.OnAutomaticPasswordSave(std::move(form_manager)); + if (base::FeatureList::IsEnabled( + password_manager::features:: + kNewConfirmationBubbleForGeneratedPasswords)) { + passwords_data_.OnSubmittedGeneratedPassword( + form_manager->GetPendingCredentials().username_value.empty() + ? password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE + : password_manager::ui::CONFIRMATION_STATE, + std::move(form_manager)); + } else { + passwords_data_.OnAutomaticPasswordSave(std::move(form_manager)); + } + bubble_status_ = BubbleStatus::SHOULD_POP_UP; UpdateBubbleAndIconVisibility(); } @@ -416,6 +427,20 @@ UpdateBubbleAndIconVisibility(); } +void ManagePasswordsUIController::OnAddUsernameSaveClicked( + const std::u16string& username) { + CHECK(!dialog_controller_); + passwords_data_.form_manager()->OnUpdateUsernameFromPrompt(username); + save_fallback_timer_.Stop(); + + passwords_data_.form_manager()->Save(); + passwords_data_.OnSubmittedGeneratedPassword( + password_manager::ui::CONFIRMATION_STATE, nullptr); + // After adding a new username, confirmation helium bubble should appear. + bubble_status_ = BubbleStatus::SHOULD_POP_UP; + UpdateBubbleAndIconVisibility(); +} + void ManagePasswordsUIController::NotifyUnsyncedCredentialsWillBeDeleted( std::vector<password_manager::PasswordForm> unsynced_credentials) { passwords_data_.ProcessUnsyncedCredentialsWillBeDeleted( @@ -501,10 +526,12 @@ if (GetState() == password_manager::ui::AUTO_SIGNIN_STATE) return *GetCurrentForms()[0]; - DCHECK(GetState() == password_manager::ui::PENDING_PASSWORD_STATE || - GetState() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || - GetState() == password_manager::ui::CONFIRMATION_STATE || - GetState() == password_manager::ui::CAN_MOVE_PASSWORD_TO_ACCOUNT_STATE) + CHECK( + GetState() == password_manager::ui::PENDING_PASSWORD_STATE || + GetState() == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || + GetState() == password_manager::ui::CONFIRMATION_STATE || + GetState() == password_manager::ui::CAN_MOVE_PASSWORD_TO_ACCOUNT_STATE || + GetState() == password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE) << GetState(); password_manager::PasswordFormManagerForUI* form_manager = passwords_data_.form_manager();
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h index 2df98db..00d34fc 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller.h +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller.h
@@ -111,6 +111,7 @@ void OnBiometricAuthenticationForFilling(PrefService* prefs) override; void ShowBiometricActivationConfirmation() override; void OnBiometricAuthBeforeFillingDeclined() override; + void OnAddUsernameSaveClicked(const std::u16string& username) override; virtual void NotifyUnsyncedCredentialsWillBeDeleted( std::vector<password_manager::PasswordForm> unsynced_credentials);
diff --git a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc index 4664fe9..2c45548 100644 --- a/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc +++ b/chrome/browser/ui/passwords/manage_passwords_ui_controller_unittest.cc
@@ -68,6 +68,7 @@ using ::testing::Contains; using ::testing::DoAll; using ::testing::ElementsAre; +using ::testing::Eq; using ::testing::IsEmpty; using ::testing::Not; using ::testing::Pointee; @@ -322,14 +323,15 @@ auto form_manager = std::make_unique<testing::StrictMock<MockPasswordFormManagerForUI>>(); EXPECT_CALL(*form_manager, GetBestMatches()) - .Times(AtMost(1)) - .WillOnce(ReturnRef(*best_matches)); + .Times(AtMost(2)) + .WillRepeatedly(ReturnRef(*best_matches)); EXPECT_CALL(*form_manager, GetFederatedMatches()) - .Times(AtMost(1)) - .WillOnce(Return(std::vector<const password_manager::PasswordForm*>())); + .Times(AtMost(2)) + .WillRepeatedly( + Return(std::vector<const password_manager::PasswordForm*>())); EXPECT_CALL(*form_manager, GetURL()) - .Times(AtMost(1)) - .WillOnce(ReturnRef(test_local_form_.url)); + .Times(AtMost(2)) + .WillRepeatedly(ReturnRef(test_local_form_.url)); EXPECT_CALL(*form_manager, IsBlocklisted()) .Times(AtMost(1)) .WillOnce(Return(is_blocklisted)); @@ -1765,6 +1767,22 @@ password_manager::ui::CAN_MOVE_PASSWORD_TO_ACCOUNT_STATE); } +TEST_F(ManagePasswordsUIControllerTest, UsernameAdded) { + std::vector<const PasswordForm*> best_matches; + auto test_form_manager = CreateFormManagerWithBestMatches(&best_matches); + MockPasswordFormManagerForUI* test_form_manager_raw = test_form_manager.get(); + controller()->OnAutomaticPasswordSave(std::move(test_form_manager)); + + EXPECT_CALL(*test_form_manager_raw, Save()); + EXPECT_CALL(*test_form_manager_raw, + OnUpdateUsernameFromPrompt(Eq(kExampleUsername))); + EXPECT_CALL(*controller(), OnUpdateBubbleAndIconVisibility()); + controller()->OnAddUsernameSaveClicked(kExampleUsername); + + EXPECT_TRUE(controller()->opened_automatic_bubble()); + EXPECT_EQ(password_manager::ui::CONFIRMATION_STATE, controller()->GetState()); +} + TEST_F(ManagePasswordsUIControllerTest, IsDeviceAuthenticatorObtained) { base::MockCallback<base::OnceCallback<void(bool)>> result_callback; #if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/passwords/passwords_model_delegate.h b/chrome/browser/ui/passwords/passwords_model_delegate.h index 4259aea..3feb96b 100644 --- a/chrome/browser/ui/passwords/passwords_model_delegate.h +++ b/chrome/browser/ui/passwords/passwords_model_delegate.h
@@ -188,6 +188,9 @@ // before filling promo dialog. virtual void OnBiometricAuthBeforeFillingDeclined() = 0; + // Called when user clicked "Add username" button in AddUsername bubble. + virtual void OnAddUsernameSaveClicked(const std::u16string& username) = 0; + // Called from the Save/Update bubble controller to decide whether or not we // should show the user the Chrome for iOS promo. virtual void MaybeShowIOSPasswordPromo() = 0;
diff --git a/chrome/browser/ui/passwords/passwords_model_delegate_mock.h b/chrome/browser/ui/passwords/passwords_model_delegate_mock.h index d6656ac3..d311a65 100644 --- a/chrome/browser/ui/passwords/passwords_model_delegate_mock.h +++ b/chrome/browser/ui/passwords/passwords_model_delegate_mock.h
@@ -111,6 +111,10 @@ (override)); MOCK_METHOD(void, ShowBiometricActivationConfirmation, (), (override)); MOCK_METHOD(void, OnBiometricAuthBeforeFillingDeclined, (), (override)); + MOCK_METHOD(void, + OnAddUsernameSaveClicked, + (const std::u16string&), + (override)); MOCK_METHOD(void, MaybeShowIOSPasswordPromo, (), (override)); };
diff --git a/chrome/browser/ui/passwords/ui_utils.cc b/chrome/browser/ui/passwords/ui_utils.cc index b7cceb6e..b0b040d 100644 --- a/chrome/browser/ui/passwords/ui_utils.cc +++ b/chrome/browser/ui/passwords/ui_utils.cc
@@ -151,6 +151,10 @@ : IDS_MANAGE_PASSWORDS_NO_PASSWORDS_TITLE); } +std::u16string GetConfirmationManagePasswordsDialogTitleText() { + return l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_CONFIRM_SAVED_TITLE); +} + std::u16string GetDisplayUsername(const password_manager::PasswordForm& form) { return form.username_value.empty() ? l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_EMPTY_LOGIN)
diff --git a/chrome/browser/ui/passwords/ui_utils.h b/chrome/browser/ui/passwords/ui_utils.h index a4d9b4d..98648eb 100644 --- a/chrome/browser/ui/passwords/ui_utils.h +++ b/chrome/browser/ui/passwords/ui_utils.h
@@ -78,6 +78,10 @@ const url::Origin& password_origin_url, bool has_credentials); +// Returns text that is used when manage passwords bubble is used as a +// confirmation. +std::u16string GetConfirmationManagePasswordsDialogTitleText(); + // Returns an username in the form that should be shown in the bubble. std::u16string GetDisplayUsername(const password_manager::PasswordForm& form);
diff --git a/chrome/browser/ui/passwords/ui_utils_unittest.cc b/chrome/browser/ui/passwords/ui_utils_unittest.cc index 758d6ea..4a6dcd8 100644 --- a/chrome/browser/ui/passwords/ui_utils_unittest.cc +++ b/chrome/browser/ui/passwords/ui_utils_unittest.cc
@@ -202,3 +202,8 @@ EXPECT_TRUE(title.find(domain) != std::u16string::npos); } } + +TEST(ManagePasswordsViewUtilTest, + GetConfirmationManagePasswordsDialogTitleText) { + EXPECT_NE(std::u16string(), GetConfirmationManagePasswordsDialogTitleText()); +}
diff --git a/chrome/browser/ui/views/controls/md_text_button_with_down_arrow.cc b/chrome/browser/ui/views/controls/md_text_button_with_down_arrow.cc index 91106fa..09765e9 100644 --- a/chrome/browser/ui/views/controls/md_text_button_with_down_arrow.cc +++ b/chrome/browser/ui/views/controls/md_text_button_with_down_arrow.cc
@@ -6,6 +6,7 @@ #include "chrome/browser/ui/views/chrome_layout_provider.h" #include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/base/ui_base_features.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/border.h" @@ -49,9 +50,12 @@ } void MdTextButtonWithDownArrow::SetDropArrowImage() { - auto drop_arrow_image = ui::ImageModel::FromVectorIcon( - kMenuDropArrowIcon, - color_utils::DeriveDefaultIconColor(label()->GetEnabledColor())); + SkColor drop_arrow_color = + features::IsChromeRefresh2023() + ? label()->GetEnabledColor() + : color_utils::DeriveDefaultIconColor(label()->GetEnabledColor()); + auto drop_arrow_image = + ui::ImageModel::FromVectorIcon(kMenuDropArrowIcon, drop_arrow_color); SetImageModel(Button::STATE_NORMAL, drop_arrow_image); }
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc index 71aea4a..0f01d5b0 100644 --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos.cc
@@ -16,6 +16,8 @@ #include "chrome/browser/themes/theme_properties.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/color/chrome_color_id.h" +#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h" +#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h" #include "chrome/browser/ui/sad_tab_helper.h" #include "chrome/browser/ui/views/frame/browser_frame.h" #include "chrome/browser/ui/views/frame/browser_view.h" @@ -646,11 +648,23 @@ ImmersiveModeController* immersive_mode_controller = browser_view()->immersive_mode_controller(); const bool was_enabled = immersive_mode_controller->IsEnabled(); - immersive_mode_controller->SetEnabled(ShouldEnableImmersiveModeController()); + + // If the current immersive mode state is not what it should be after the + // tablet mode has been toggled, toggle fullscreen mode to update the + // immersive mode. Note that it should not call + // ImmersiveModeController::SetEnabled since it won't update fullscreen mode. + if (ShouldEnableImmersiveModeController() != was_enabled) { + browser_view() + ->browser() + ->exclusive_access_manager() + ->fullscreen_controller() + ->ToggleBrowserFullscreenMode(); + } // Do not relayout if immersive mode has not changed. - if (was_enabled == immersive_mode_controller->IsEnabled()) + if (was_enabled == immersive_mode_controller->IsEnabled()) { return; + } InvalidateLayout(); // Can be null in tests.
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc index 839aef9..fb96d800 100644 --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_chromeos_browsertest.cc
@@ -1293,6 +1293,28 @@ EXPECT_EQ(inset_normal, inset_in_overview_mode); } +IN_PROC_BROWSER_TEST_P(BrowserNonClientFrameViewChromeOSTest, + ToggleTabletModeWhileImmersiveModeEnabled) { + BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser()); + ImmersiveModeController* immersive_mode_controller = + browser_view->immersive_mode_controller(); + ASSERT_FALSE(immersive_mode_controller->IsEnabled()); + ASSERT_FALSE(browser_view->IsFullscreen()); + + // Enter immersive mode. + ToggleFullscreenModeAndWait(browser()); + ASSERT_TRUE(immersive_mode_controller->IsEnabled()); + ASSERT_TRUE(browser_view->IsFullscreen()); + + // Enable tablet mode. + ASSERT_NO_FATAL_FAILURE( + ash::ShellTestApi().SetTabletModeEnabledForTest(true)); + + // Should exit immersive mode + fullscreen when tablet mode is enabled. + EXPECT_FALSE(immersive_mode_controller->IsEnabled()); + EXPECT_FALSE(browser_view->IsFullscreen()); +} + // TODO(b/270175923): Consider using WebUiTabStripOverrideTest, since it // makes sense for it to always be enabled. class FloatBrowserNonClientFrameViewChromeOSTest
diff --git a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc index f6a6aef..7ecc69c 100644 --- a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc +++ b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.cc
@@ -133,6 +133,15 @@ observer.OnMediaButtonDisabled(); } +void MediaToolbarButtonView::MaybeShowLocalMediaCastingPromo() { + if (media_router::GlobalMediaControlsCastStartStopEnabled( + browser_->profile()) && + service_->should_show_cast_local_media_iph()) { + browser_->window()->MaybeShowFeaturePromo( + feature_engagement::kIPHGMCLocalMediaCastingFeature); + } +} + void MediaToolbarButtonView::MaybeShowStopCastingPromo() { if (media_router::GlobalMediaControlsCastStartStopEnabled( browser_->profile()) &&
diff --git a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h index d9deab0..965fca6 100644 --- a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h +++ b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_view.h
@@ -40,6 +40,7 @@ void Hide() override; void Enable() override; void Disable() override; + void MaybeShowLocalMediaCastingPromo() override; void MaybeShowStopCastingPromo() override; MediaToolbarButtonController* media_toolbar_button_controller() {
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_metrics.cc b/chrome/browser/ui/views/media_router/cast_dialog_metrics.cc index 141a779..de7bc097 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_metrics.cc +++ b/chrome/browser/ui/views/media_router/cast_dialog_metrics.cc
@@ -142,41 +142,12 @@ sinks_load_time_ = sinks_load_time; } -void CastDialogMetrics::OnPaint(const base::Time& paint_time) { - if (!paint_time_.is_null()) - return; - MediaRouterMetrics::RecordMediaRouterDialogPaint(paint_time - - initialization_time_); - paint_time_ = paint_time; -} - -void CastDialogMetrics::OnStartCasting(const base::Time& start_time, - int selected_sink_index, - MediaCastMode cast_mode, +void CastDialogMetrics::OnStartCasting(MediaCastMode cast_mode, SinkIconType icon_type) { - DCHECK(!sinks_load_time_.is_null()); - MediaRouterMetrics::RecordStartRouteDeviceIndex(selected_sink_index); - if (!first_action_recorded_) { - MediaRouterMetrics::RecordStartLocalSessionLatency(start_time - - sinks_load_time_); - } MaybeRecordActivationLocationAndCastMode(cast_mode); MediaRouterMetrics::RecordMediaSinkTypeForCastDialog(icon_type); } -void CastDialogMetrics::OnStopCasting(bool is_local_route) { - if (is_local_route) { - MediaRouterMetrics::RecordStopLocalRoute(); - } else { - MediaRouterMetrics::RecordStopRemoteRoute(); - } -} - -void CastDialogMetrics::OnCloseDialog(const base::Time& close_time) { - if (!first_action_recorded_ && !paint_time_.is_null()) - MediaRouterMetrics::RecordCloseDialogLatency(close_time - paint_time_); -} - void CastDialogMetrics::OnRecordSinkCount( const std::vector<CastDialogSinkButton*>& sink_buttons) { media_router::MediaRouterMetrics::RecordDeviceCount(sink_buttons.size());
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_metrics.h b/chrome/browser/ui/views/media_router/cast_dialog_metrics.h index b886160..46ecb674 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_metrics.h +++ b/chrome/browser/ui/views/media_router/cast_dialog_metrics.h
@@ -40,22 +40,8 @@ // is called when the list of sinks becomes non-empty. void OnSinksLoaded(const base::Time& sinks_load_time); - // Records the time it took to paint when called for the first time. - void OnPaint(const base::Time& paint_time); - - // Records the index of the selected sink in the sink list. Also records how - // long it took to start casting if no other action (aside from selecting a - // sink) was taken prior to that. - void OnStartCasting(const base::Time& start_time, - int selected_sink_index, - MediaCastMode cast_mode, - SinkIconType icon_type); - - void OnStopCasting(bool is_local_route); - - // Records the time it took to close the dialog, if no other action was taken - // prior to that after opening the dialog. - void OnCloseDialog(const base::Time& close_time); + // Records the cast mode and the sink type for a session that was started. + void OnStartCasting(MediaCastMode cast_mode, SinkIconType icon_type); // Records the number of sinks, which may be 0. void OnRecordSinkCount( @@ -70,9 +56,6 @@ // The time when the dialog UI started initializing. base::Time initialization_time_; - // The time when the dialog was painted. - base::Time paint_time_; - // The time when a non-empty list of sinks was loaded. base::Time sinks_load_time_; @@ -80,10 +63,6 @@ bool const is_icon_pinned_; - // Whether we have already recorded the first user action taken in this dialog - // instance. - bool first_action_recorded_ = false; - bool activation_location_and_cast_mode_recorded_ = false; };
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_metrics_unittest.cc b/chrome/browser/ui/views/media_router/cast_dialog_metrics_unittest.cc index 16aa780a0..1b6026f 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_metrics_unittest.cc +++ b/chrome/browser/ui/views/media_router/cast_dialog_metrics_unittest.cc
@@ -52,38 +52,13 @@ (sink_load_time - init_time).InMilliseconds(), 1); } -TEST_F(CastDialogMetricsTest, OnPaint) { - metrics_.OnPaint(paint_time); - tester_.ExpectUniqueSample(MediaRouterMetrics::kHistogramUiDialogPaint, - (paint_time - init_time).InMilliseconds(), 1); -} - TEST_F(CastDialogMetricsTest, OnStartCasting) { - constexpr int kSinkIndex = 4; metrics_.OnSinksLoaded(sink_load_time); - metrics_.OnStartCasting(start_casting_time, kSinkIndex, TAB_MIRROR, - SinkIconType::CAST); - tester_.ExpectUniqueSample( - MediaRouterMetrics::kHistogramStartLocalLatency, - (start_casting_time - sink_load_time).InMilliseconds(), 1); + metrics_.OnStartCasting(TAB_MIRROR, SinkIconType::CAST); tester_.ExpectUniqueSample("MediaRouter.Sink.SelectedType.CastHarmony", SinkIconType::CAST, 1); } -TEST_F(CastDialogMetricsTest, OnStopCasting) { - metrics_.OnStopCasting(/* is_local_route*/ false); - tester_.ExpectUniqueSample(MediaRouterMetrics::kHistogramStopRoute, - /* Remote route */ 1, 1); -} - -TEST_F(CastDialogMetricsTest, OnCloseDialog) { - metrics_.OnPaint(paint_time); - metrics_.OnCloseDialog(close_dialog_time); - tester_.ExpectUniqueSample(MediaRouterMetrics::kHistogramCloseLatency, - (close_dialog_time - paint_time).InMilliseconds(), - 1); -} - TEST_F(CastDialogMetricsTest, OnRecordSinkCount) { UIMediaSink sink1{mojom::MediaRouteProviderId::CAST}; UIMediaSink sink2{mojom::MediaRouteProviderId::CAST}; @@ -133,10 +108,8 @@ } TEST_F(CastDialogMetricsTest, RecordDialogActivationLocationAndCastMode) { - constexpr int kSinkIndex = 4; metrics_.OnSinksLoaded(sink_load_time); - metrics_.OnStartCasting(start_casting_time, kSinkIndex, TAB_MIRROR, - SinkIconType::CAST); + metrics_.OnStartCasting(TAB_MIRROR, SinkIconType::CAST); tester_.ExpectUniqueSample( "MediaRouter.Ui.Dialog.ActivationLocationAndCastMode", DialogActivationLocationAndCastMode::kEphemeralIconAndTabMirror, 1); @@ -144,8 +117,7 @@ CastDialogMetrics metrics_opened_from_page{ init_time, MediaRouterDialogActivationLocation::PAGE, &profile_}; metrics_opened_from_page.OnSinksLoaded(sink_load_time); - metrics_opened_from_page.OnStartCasting(start_casting_time, kSinkIndex, - PRESENTATION, SinkIconType::GENERIC); + metrics_opened_from_page.OnStartCasting(PRESENTATION, SinkIconType::GENERIC); tester_.ExpectBucketCount( "MediaRouter.Ui.Dialog.ActivationLocationAndCastMode", DialogActivationLocationAndCastMode::kPageAndPresentation, 1); @@ -154,8 +126,7 @@ CastDialogMetrics metrics_with_pinned_icon{ init_time, MediaRouterDialogActivationLocation::TOOLBAR, &profile_}; metrics_with_pinned_icon.OnSinksLoaded(sink_load_time); - metrics_with_pinned_icon.OnStartCasting(start_casting_time, kSinkIndex, - DESKTOP_MIRROR, SinkIconType::CAST); + metrics_with_pinned_icon.OnStartCasting(DESKTOP_MIRROR, SinkIconType::CAST); tester_.ExpectBucketCount( "MediaRouter.Ui.Dialog.ActivationLocationAndCastMode", DialogActivationLocationAndCastMode::kPinnedIconAndDesktopMirror, 1);
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view.cc b/chrome/browser/ui/views/media_router/cast_dialog_view.cc index 42d8bc3..3c9e56d 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_view.cc +++ b/chrome/browser/ui/views/media_router/cast_dialog_view.cc
@@ -124,11 +124,6 @@ // cause the dialog to immediately open again. } -void CastDialogView::OnPaint(gfx::Canvas* canvas) { - views::BubbleDialogDelegateView::OnPaint(canvas); - metrics_.OnPaint(base::Time::Now()); -} - bool CastDialogView::IsCommandIdChecked(int command_id) const { return command_id == selected_source_; } @@ -170,9 +165,9 @@ } void CastDialogView::WindowClosing() { - for (Observer& observer : observers_) + for (Observer& observer : observers_) { observer.OnDialogWillClose(this); - metrics_.OnCloseDialog(base::Time::Now()); + } } void CastDialogView::ShowAccessCodeCastDialog() { @@ -292,8 +287,7 @@ l10n_util::GetStringUTF16( IDS_MEDIA_ROUTER_ALTERNATIVE_SOURCES_BUTTON))); sources_button_->SetEnabled(false); - // TODO(crbug.com/1467969): Set the button style to `ui::ButtonStyle::kTonal` - // once crbug.com/1486965 is fixed. + sources_button_->SetStyle(ui::ButtonStyle::kTonal); } void CastDialogView::ShowSourcesMenu() { @@ -329,7 +323,6 @@ // due to a model update, so make a copy here. const UIMediaSink sink = sink_views_.at(index)->sink(); if (sink.route) { - metrics_.OnStopCasting(sink.route->is_local()); // StopCasting() may trigger a model update and invalidate |sink|. controller_->StopCasting(sink.route->media_route_id()); } else if (sink.issue) { @@ -338,8 +331,6 @@ absl::optional<MediaCastMode> cast_mode = GetCastModeToUse(sink); if (cast_mode) { controller_->StartCasting(sink.id, cast_mode.value()); - metrics_.OnStartCasting(base::Time::Now(), index, cast_mode.value(), - sink.icon_type); } } } @@ -353,7 +344,6 @@ if (!sink.route) { return; } - metrics_.OnStopCasting(sink.route->is_local()); // StopCasting() may trigger a model update and invalidate |sink|. controller_->StopCasting(sink.route->media_route_id()); }
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view.h b/chrome/browser/ui/views/media_router/cast_dialog_view.h index 8a8fe52..59b08e7 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_view.h +++ b/chrome/browser/ui/views/media_router/cast_dialog_view.h
@@ -25,10 +25,6 @@ class Profile; -namespace gfx { -class Canvas; -} // namespace gfx - namespace media_router { class CastDialogSinkView; @@ -69,9 +65,6 @@ void OnModelUpdated(const CastDialogModel& model) override; void OnControllerDestroying() override; - // views::BubbleDialogDelegateView: - void OnPaint(gfx::Canvas* canvas) override; - // ui::SimpleMenuModel::Delegate: bool IsCommandIdChecked(int command_id) const override; bool IsCommandIdEnabled(int command_id) const override;
diff --git a/chrome/browser/ui/views/passwords/password_add_username_view.cc b/chrome/browser/ui/views/passwords/password_add_username_view.cc index 3fe26b6..7756d83 100644 --- a/chrome/browser/ui/views/passwords/password_add_username_view.cc +++ b/chrome/browser/ui/views/passwords/password_add_username_view.cc
@@ -114,6 +114,8 @@ std::unique_ptr<views::EditableCombobox> username_dropdown = CreateUsernameEditableCombobox(password_form); + username_dropdown->SetCallback(base::BindRepeating( + &PasswordAddUsernameView::OnUsernameChanged, base::Unretained(this))); username_dropdown_ = username_dropdown.get(); std::unique_ptr<views::Label> password_label = @@ -140,6 +142,7 @@ SetFootnoteView(CreateFooterView()); SetButtons((ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL)); + SetButtonEnabled(ui::DIALOG_BUTTON_OK, false); SetButtonLabel(ui::DIALOG_BUTTON_OK, l10n_util::GetStringUTF16(IDS_ADD_USERNAME)); SetButtonLabel(ui::DIALOG_BUTTON_CANCEL, @@ -199,3 +202,8 @@ IDS_PASSWORD_BUBBLES_PASSWORD_MANAGER_LINK_TEXT_SYNCED_TO_ACCOUNT, controller_.GetPrimaryAccountEmail(), open_password_manager_closure); } + +void PasswordAddUsernameView::OnUsernameChanged() { + SetButtonEnabled(ui::DIALOG_BUTTON_OK, + !username_dropdown_->GetText().empty()); +}
diff --git a/chrome/browser/ui/views/passwords/password_add_username_view.h b/chrome/browser/ui/views/passwords/password_add_username_view.h index df9e322a..2cd28dc 100644 --- a/chrome/browser/ui/views/passwords/password_add_username_view.h +++ b/chrome/browser/ui/views/passwords/password_add_username_view.h
@@ -37,6 +37,7 @@ void UpdateUsernameInModel(); std::unique_ptr<views::View> CreateFooterView(); + void OnUsernameChanged(); AddUsernameBubbleController controller_; raw_ptr<views::EditableCombobox> username_dropdown_ = nullptr;
diff --git a/chrome/browser/ui/views/passwords/password_bubble_view_base.cc b/chrome/browser/ui/views/passwords/password_bubble_view_base.cc index 3785c17..45046432 100644 --- a/chrome/browser/ui/views/passwords/password_bubble_view_base.cc +++ b/chrome/browser/ui/views/passwords/password_bubble_view_base.cc
@@ -18,6 +18,7 @@ #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h" #include "chrome/browser/ui/views/passwords/manage_passwords_view.h" #include "chrome/browser/ui/views/passwords/move_to_account_store_bubble_view.h" +#include "chrome/browser/ui/views/passwords/password_add_username_view.h" #include "chrome/browser/ui/views/passwords/password_auto_sign_in_view.h" #include "chrome/browser/ui/views/passwords/password_generation_confirmation_view.h" #include "chrome/browser/ui/views/passwords/password_save_unsynced_credentials_locally_view.h" @@ -26,6 +27,7 @@ #include "chrome/browser/ui/views/passwords/shared_passwords_notification_view.h" #include "chrome/browser/ui/views/toolbar/toolbar_view.h" #include "chrome/grit/generated_resources.h" +#include "components/password_manager/core/browser/features/password_features.h" #include "components/password_manager/core/browser/password_form.h" #include "components/password_manager/core/common/password_manager_ui.h" #include "ui/views/controls/button/button.h" @@ -86,8 +88,14 @@ } else if (model_state == password_manager::ui::AUTO_SIGNIN_STATE) { view = new PasswordAutoSignInView(web_contents, anchor_view); } else if (model_state == password_manager::ui::CONFIRMATION_STATE) { - view = new PasswordGenerationConfirmationView(web_contents, anchor_view, - reason); + if (base::FeatureList::IsEnabled( + password_manager::features:: + kNewConfirmationBubbleForGeneratedPasswords)) { + view = new ManagePasswordsView(web_contents, anchor_view); + } else { + view = new PasswordGenerationConfirmationView(web_contents, anchor_view, + reason); + } } else if (model_state == password_manager::ui::PENDING_PASSWORD_UPDATE_STATE || model_state == password_manager::ui::PENDING_PASSWORD_STATE) { @@ -103,6 +111,9 @@ model_state == password_manager::ui::PASSWORD_UPDATED_MORE_TO_FIX) { view = new PostSaveCompromisedBubbleView(web_contents, anchor_view); + } else if (model_state == + password_manager::ui::GENERATED_PASSWORD_CONFIRMATION_STATE) { + view = new PasswordAddUsernameView(web_contents, anchor_view, reason); #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) } else if (model_state == password_manager::ui::BIOMETRIC_AUTHENTICATION_FOR_FILLING_STATE) {
diff --git a/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc b/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc index 3a4024f..c7aed8b 100644 --- a/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc +++ b/chrome/browser/ui/views/side_panel/side_panel_interactive_uitest.cc
@@ -196,12 +196,6 @@ EnsureNotPresent(kReadLaterSidePanelWebViewElementId)); } -namespace { -DEFINE_LOCAL_STATE_IDENTIFIER_VALUE( - ui::test::PollingStateObserver<absl::optional<SidePanelEntryId>>, - kCurrentSidePanelState); -} - // Test case for menus that only appear with the kSidePanelPinning feature // enabled. class PinnedSidePanelInteractiveTest : public InteractiveBrowserTest { @@ -215,17 +209,6 @@ InteractiveBrowserTest::SetUp(); } - auto WatchSidePanelSelection() { - return PollState(kCurrentSidePanelState, [&]() { - auto* const side_panel = SidePanelUI::GetSidePanelUIForBrowser(browser()); - return side_panel ? side_panel->GetCurrentEntryId() : absl::nullopt; - }); - } - - auto WaitForSidePanelSelection(SidePanelEntryId entry_id) { - return WaitForState(kCurrentSidePanelState, entry_id); - } - private: base::test::ScopedFeatureList scoped_feature_list_; }; @@ -234,17 +217,12 @@ // tools context menu. IN_PROC_BROWSER_TEST_F(PinnedSidePanelInteractiveTest, OpenReadingModeSidePanel) { - SidePanelUtil::GetSidePanelCoordinatorForBrowser(browser()) - ->SetNoDelaysForTesting(true); + SidePanelCoordinator* const coordinator = + SidePanelUtil::GetSidePanelCoordinatorForBrowser(browser()); + coordinator->SetNoDelaysForTesting(true); - RunTestSequence(EnsureNotPresent(kSidePanelElementId), - PressButton(kToolbarAppMenuButtonElementId), - SelectMenuItem(AppMenuModel::kMoreToolsMenuItem), - SelectMenuItem(ToolsMenuModel::kReadingModeMenuItem), - WatchSidePanelSelection(), WaitForShow(kSidePanelElementId), - FlushEvents(), - WaitForSidePanelSelection(SidePanelEntryId::kReadAnything), - // Click on the close button to dismiss the side panel. - PressButton(kSidePanelCloseButtonElementId), - WaitForHide(kSidePanelElementId)); + chrome::ExecuteCommand(browser(), IDC_SHOW_READING_MODE_SIDE_PANEL); + + EXPECT_EQ(SidePanelEntryKey(SidePanelEntryId::kReadAnything), + coordinator->GetCurrentSidePanelEntryForTesting()->key()); }
diff --git a/chrome/browser/ui/views/user_education/browser_user_education_service.cc b/chrome/browser/ui/views/user_education/browser_user_education_service.cc index 768e9f8..488a311 100644 --- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc +++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
@@ -402,6 +402,13 @@ kToolbarMediaButtonElementId, IDS_GLOBAL_MEDIA_CONTROLS_CONTROL_CAST_SESSIONS_PROMO)); + // kIPHGMCLocalMediaCastingFeature: + registry.RegisterFeature(FeaturePromoSpecification::CreateForToastPromo( + feature_engagement::kIPHGMCLocalMediaCastingFeature, + kToolbarMediaButtonElementId, IDS_GMC_LOCAL_MEDIA_CAST_SESSIONS_PROMO, + IDS_GMC_LOCAL_MEDIA_CAST_START_PROMO, + FeaturePromoSpecification::AcceleratorInfo())); + // kIPHPasswordsAccountStorageFeature: registry.RegisterFeature(std::move( FeaturePromoSpecification::CreateForLegacyPromo(
diff --git a/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc b/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc index 7cd5c739..c308a9b 100644 --- a/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc +++ b/chrome/browser/ui/web_applications/web_app_link_capturing_browsertest.cc
@@ -200,10 +200,10 @@ #if BUILDFLAG(IS_CHROMEOS) apps_util::SetSupportedLinksPreferenceAndWait(profile(), app_id); #else - ScopedRegistryUpdate update = provider().sync_bridge_unsafe().BeginUpdate(); - WebApp* app = update->UpdateApp(app_id); - CHECK(app); - app->SetIsUserSelectedAppForSupportedLinks(true); + base::test::TestFuture<void> preference_set; + provider().scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app_id, true, preference_set.GetCallback()); + ASSERT_TRUE(preference_set.Wait()); #endif // BUILDFLAG(IS_CHROMEOS) }
diff --git a/chrome/browser/ui/webui/app_management/app_management_page_handler.cc b/chrome/browser/ui/webui/app_management/app_management_page_handler.cc index 8e113bd..6b56ea2 100644 --- a/chrome/browser/ui/webui/app_management/app_management_page_handler.cc +++ b/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
@@ -14,6 +14,7 @@ #include "base/containers/flat_map.h" #include "base/containers/flat_set.h" #include "base/debug/dump_without_crashing.h" +#include "base/functional/callback_helpers.h" #include "base/i18n/message_formatter.h" #include "base/logging.h" #include "base/strings/strcat.h" @@ -407,11 +408,9 @@ #else web_app::WebAppProvider* provider = web_app::WebAppProvider::GetForWebApps(profile_); - provider->scheduler().ScheduleCallbackWithLock<web_app::AllAppsLock>( - "AppManagementPageHandler::MakeAppPreferredAndResetOthers", - std::make_unique<web_app::AllAppsLockDescription>(), - base::BindOnce(&AppManagementPageHandler::MakeAppPreferredAndResetOthers, - weak_ptr_factory_.GetWeakPtr(), app_id, is_preferred_app)); + + provider->scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app_id, is_preferred_app, base::DoNothing()); #endif // BUILDFLAG(IS_CHROMEOS) } @@ -769,52 +768,3 @@ apps::PreferredAppsListHandle* handle) { preferred_apps_list_handle_observer_.Reset(); } - -#if !BUILDFLAG(IS_CHROMEOS) -void AppManagementPageHandler::MakeAppPreferredAndResetOthers( - const webapps::AppId& app_id, - bool set_to_preferred, - web_app::AllAppsLock& lock) { - bool is_already_preferred = lock.registrar().CapturesLinksInScope(app_id); - - // Only update in web_app DB if the user selected choice does not match the - // one in the DB currently. - bool requires_update = (set_to_preferred && !is_already_preferred) || - (!set_to_preferred && is_already_preferred); - - if (!requires_update) { - return; - } - - // TODO(b/273830801): Automatically call observers when changes are committed - // to the web_app DB. - for (const webapps::AppId& id : lock.registrar().GetAppIds()) { - if (id == app_id) { - { - web_app::ScopedRegistryUpdate update = lock.sync_bridge().BeginUpdate(); - web_app::WebApp* app_to_update = update->UpdateApp(app_id); - app_to_update->SetIsUserSelectedAppForSupportedLinks(set_to_preferred); - } - lock.registrar().NotifyWebAppUserLinkCapturingPreferencesChanged( - app_id, set_to_preferred); - } else { - // For all other app_ids, if one is already set as the preferred, reset - // all other apps in the registry if they were previously set to be a - // preferred app to capture similar type of links according to scope - // prefixes. - if (set_to_preferred && lock.registrar().CapturesLinksInScope(id) && - lock.registrar().AppScopesMatchForUserLinkCapturing(app_id, id)) { - { - web_app::ScopedRegistryUpdate update = - lock.sync_bridge().BeginUpdate(); - web_app::WebApp* app_to_update = update->UpdateApp(id); - app_to_update->SetIsUserSelectedAppForSupportedLinks( - /*is_user_selected_app_for_capturing_links=*/false); - } - lock.registrar().NotifyWebAppUserLinkCapturingPreferencesChanged( - id, /*is_preferred=*/false); - } - } - } -} -#endif // !BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/webui/app_management/app_management_page_handler.h b/chrome/browser/ui/webui/app_management/app_management_page_handler.h index b226813..85caa65 100644 --- a/chrome/browser/ui/webui/app_management/app_management_page_handler.h +++ b/chrome/browser/ui/webui/app_management/app_management_page_handler.h
@@ -118,12 +118,6 @@ void OnPreferredAppsListWillBeDestroyed( apps::PreferredAppsListHandle* handle) override; -#if !BUILDFLAG(IS_CHROMEOS) - void MakeAppPreferredAndResetOthers(const webapps::AppId& app_id, - bool set_to_preferred, - web_app::AllAppsLock& lock); -#endif // !BUILDFLAG(IS_CHROMEOS) - mojo::Receiver<app_management::mojom::PageHandler> receiver_; mojo::Remote<app_management::mojom::Page> page_;
diff --git a/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.cc b/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.cc index d5dd1f0..1c152601 100644 --- a/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.cc +++ b/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.cc
@@ -11,7 +11,17 @@ CloudOpenMetrics::CloudOpenMetrics(CloudProvider cloud_provider) : cloud_provider_(cloud_provider), + copy_error_(cloud_provider_ == CloudProvider::kGoogleDrive + ? kGoogleDriveCopyErrorMetricName + : kOneDriveCopyErrorMetricName), + move_error_(cloud_provider_ == CloudProvider::kGoogleDrive + ? kGoogleDriveMoveErrorMetricName + : kOneDriveMoveErrorMetricName), + drive_open_error_(kDriveErrorMetricName), one_drive_open_error_(kOneDriveErrorMetricName), + source_volume_(cloud_provider_ == CloudProvider::kGoogleDrive + ? kDriveOpenSourceVolumeMetric + : kOneDriveOpenSourceVolumeMetric), task_result_(cloud_provider_ == CloudProvider::kGoogleDrive ? kGoogleDriveTaskResultMetricName : kOneDriveTaskResultMetricName), @@ -24,10 +34,26 @@ CloudOpenMetrics::~CloudOpenMetrics() = default; +void CloudOpenMetrics::LogCopyError(base::File::Error value) { + copy_error_.Log(value); +} + +void CloudOpenMetrics::LogMoveError(base::File::Error value) { + move_error_.Log(value); +} + +void CloudOpenMetrics::LogGoogleDriveOpenError(OfficeDriveOpenErrors value) { + drive_open_error_.Log(value); +} + void CloudOpenMetrics::LogOneDriveOpenError(OfficeOneDriveOpenErrors value) { one_drive_open_error_.Log(value); } +void CloudOpenMetrics::LogSourceVolume(OfficeFilesSourceVolume value) { + source_volume_.Log(value); +} + void CloudOpenMetrics::LogTaskResult(OfficeTaskResult value) { task_result_.Log(value); } @@ -55,7 +81,7 @@ template <class MetricType> void CloudOpenMetrics::Metric<MetricType>::Log(MetricType value) { - base::UmaHistogramEnumeration(metric_name_, value); + LogMetric(value); if (state_ == MetricState::kCorrectlyNotLogged) { state_ = MetricState::kCorrectlyLogged; } else { @@ -68,4 +94,17 @@ value_ = value; } +template <class MetricType> +void CloudOpenMetrics::Metric<MetricType>::LogMetric(MetricType value) { + base::UmaHistogramEnumeration(metric_name_, value); +} + +// Handle a value of type base::File::Error differently. +template <> +void CloudOpenMetrics::Metric<base::File::Error>::LogMetric( + base::File::Error value) { + base::UmaHistogramExactLinear(metric_name_, -value, + -base::File::FILE_ERROR_MAX); +} + } // namespace ash::cloud_upload
diff --git a/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.h b/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.h index 989b124..bd8efda 100644 --- a/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.h +++ b/chrome/browser/ui/webui/ash/cloud_upload/cloud_open_metrics.h
@@ -28,9 +28,21 @@ CloudOpenMetrics(const CloudOpenMetrics&&) = delete; CloudOpenMetrics& operator=(CloudOpenMetrics&&) = delete; + // Log the `value` for the CopyError metric. + void LogCopyError(base::File::Error value); + + // Log the `value` for the MoveError metric. + void LogMoveError(base::File::Error value); + + // Log the `value` for the DriveOpenError metric. + void LogGoogleDriveOpenError(OfficeDriveOpenErrors value); + // Log the `value` for the OneDriveOpenError metric. void LogOneDriveOpenError(OfficeOneDriveOpenErrors value); + // Log the `value` for the SourceVolume metric. + void LogSourceVolume(OfficeFilesSourceVolume value); + // Log the `value` for the TaskResult metric. void LogTaskResult(OfficeTaskResult value); @@ -80,11 +92,16 @@ MetricType value_; private: + void LogMetric(MetricType value); const std::string metric_name_; }; CloudProvider cloud_provider_; + Metric<base::File::Error> copy_error_; + Metric<base::File::Error> move_error_; + Metric<OfficeDriveOpenErrors> drive_open_error_; Metric<OfficeOneDriveOpenErrors> one_drive_open_error_; + Metric<OfficeFilesSourceVolume> source_volume_; Metric<OfficeTaskResult> task_result_; Metric<OfficeFilesTransferRequired> transfer_required_; Metric<OfficeFilesUploadResult> upload_result_;
diff --git a/chrome/browser/ui/webui/ash/cloud_upload/cloud_upload_dialog.cc b/chrome/browser/ui/webui/ash/cloud_upload/cloud_upload_dialog.cc index b2b6350..392ea57f 100644 --- a/chrome/browser/ui/webui/ash/cloud_upload/cloud_upload_dialog.cc +++ b/chrome/browser/ui/webui/ash/cloud_upload/cloud_upload_dialog.cc
@@ -455,11 +455,7 @@ source_volume = OfficeFilesSourceVolume::kUnknown; } } - if (cloud_provider_ == CloudProvider::kGoogleDrive) { - UMA_HISTOGRAM_ENUMERATION(kDriveOpenSourceVolumeMetric, source_volume); - } else if (cloud_provider_ == CloudProvider::kOneDrive) { - UMA_HISTOGRAM_ENUMERATION(kOneDriveOpenSourceVolumeMetric, source_volume); - } + cloud_open_metrics_->LogSourceVolume(source_volume); if (cloud_provider_ == CloudProvider::kGoogleDrive && PathIsOnDriveFS(profile_, file_urls_.front().path())) { @@ -864,7 +860,7 @@ void CloudOpenTask::LogGoogleDriveOpenResultUMA( OfficeTaskResult success_task_result, OfficeDriveOpenErrors open_result) { - UMA_HISTOGRAM_ENUMERATION(kDriveErrorMetricName, open_result); + cloud_open_metrics_->LogGoogleDriveOpenError(open_result); cloud_open_metrics_->LogTaskResult(open_result == OfficeDriveOpenErrors::kSuccess ? success_task_result
diff --git a/chrome/browser/ui/webui/ash/cloud_upload/drive_upload_handler.cc b/chrome/browser/ui/webui/ash/cloud_upload/drive_upload_handler.cc index fcc6f31..cca0861 100644 --- a/chrome/browser/ui/webui/ash/cloud_upload/drive_upload_handler.cc +++ b/chrome/browser/ui/webui/ash/cloud_upload/drive_upload_handler.cc
@@ -379,9 +379,11 @@ base::File::Error file_error = GetFirstTaskError(status).value_or(base::File::FILE_ERROR_FAILED); - base::UmaHistogramExactLinear( - copy ? kGoogleDriveCopyErrorMetricName : kGoogleDriveMoveErrorMetricName, - -file_error, -base::File::FILE_ERROR_MAX); + if (copy) { + cloud_open_metrics_->LogCopyError(file_error); + } else { + cloud_open_metrics_->LogMoveError(file_error); + } switch (file_error) { case base::File::FILE_ERROR_NO_SPACE:
diff --git a/chrome/browser/ui/webui/ash/cloud_upload/one_drive_upload_handler.cc b/chrome/browser/ui/webui/ash/cloud_upload/one_drive_upload_handler.cc index 2341e88d..05e909ae 100644 --- a/chrome/browser/ui/webui/ash/cloud_upload/one_drive_upload_handler.cc +++ b/chrome/browser/ui/webui/ash/cloud_upload/one_drive_upload_handler.cc
@@ -262,9 +262,11 @@ base::File::Error file_error = GetFirstTaskError(status).value_or(base::File::FILE_ERROR_FAILED); - base::UmaHistogramExactLinear( - copy ? kOneDriveCopyErrorMetricName : kOneDriveMoveErrorMetricName, - -file_error, -base::File::FILE_ERROR_MAX); + if (copy) { + cloud_open_metrics_->LogCopyError(file_error); + } else { + cloud_open_metrics_->LogMoveError(file_error); + } switch (file_error) { case base::File::FILE_ERROR_ACCESS_DENIED:
diff --git a/chrome/browser/web_applications/BUILD.gn b/chrome/browser/web_applications/BUILD.gn index 9123813..03ab12c8 100644 --- a/chrome/browser/web_applications/BUILD.gn +++ b/chrome/browser/web_applications/BUILD.gn
@@ -343,6 +343,13 @@ ] } + if (!is_chromeos) { + sources += [ + "jobs/link_capturing.cc", + "jobs/link_capturing.h", + ] + } + if (is_chromeos_ash) { sources += [ "web_app_system_web_app_delegate_map_utils.cc", @@ -770,6 +777,10 @@ ] } + if (!is_chromeos) { + sources += [ "jobs/link_capturing_unittest.cc" ] + } + deps = [ ":web_applications", ":web_applications_test_support",
diff --git a/chrome/browser/web_applications/jobs/link_capturing.cc b/chrome/browser/web_applications/jobs/link_capturing.cc new file mode 100644 index 0000000..0f695f2 --- /dev/null +++ b/chrome/browser/web_applications/jobs/link_capturing.cc
@@ -0,0 +1,70 @@ +// 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/web_applications/jobs/link_capturing.h" + +#include "base/values.h" +#include "chrome/browser/web_applications/locks/all_apps_lock.h" +#include "chrome/browser/web_applications/web_app.h" +#include "chrome/browser/web_applications/web_app_registrar.h" +#include "chrome/browser/web_applications/web_app_registry_update.h" +#include "chrome/browser/web_applications/web_app_sync_bridge.h" + +namespace web_app { + +base::Value SetAppCapturesSupportedLinksDisableOverlapping( + const webapps::AppId& app_id, + bool set_to_preferred, + AllAppsLock& lock) { + base::Value::Dict debug_value; + debug_value.Set("app_id", app_id); + debug_value.Set("set_to_preferred", set_to_preferred); + + bool is_already_preferred = lock.registrar().CapturesLinksInScope(app_id); + + // Only update in web_app DB if the user selected choice does not match the + // one in the DB currently. + bool requires_update = (set_to_preferred && !is_already_preferred) || + (!set_to_preferred && is_already_preferred); + + debug_value.Set("requires_update", requires_update); + if (!requires_update) { + return base::Value(std::move(debug_value)); + } + + // TODO(b/273830801): Automatically call observers when changes are committed + // to the web_app DB. + for (const webapps::AppId& id : lock.registrar().GetAppIds()) { + if (id == app_id) { + { + ScopedRegistryUpdate update = lock.sync_bridge().BeginUpdate(); + WebApp* app_to_update = update->UpdateApp(app_id); + app_to_update->SetIsUserSelectedAppForSupportedLinks(set_to_preferred); + } + debug_value.Set("app_updated", true); + lock.registrar().NotifyWebAppUserLinkCapturingPreferencesChanged( + app_id, set_to_preferred); + } else { + // For all other app_ids, if one is already set as the preferred, reset + // all other apps in the registry if they were previously set to be a + // preferred app to capture similar type of links according to scope + // prefixes. + if (set_to_preferred && lock.registrar().CapturesLinksInScope(id) && + lock.registrar().AppScopesMatchForUserLinkCapturing(app_id, id)) { + { + ScopedRegistryUpdate update = lock.sync_bridge().BeginUpdate(); + WebApp* app_to_update = update->UpdateApp(id); + app_to_update->SetIsUserSelectedAppForSupportedLinks( + /*is_user_selected_app_for_capturing_links=*/false); + } + debug_value.EnsureList("capturing_apps_disabled")->Append(id); + lock.registrar().NotifyWebAppUserLinkCapturingPreferencesChanged( + id, /*is_preferred=*/false); + } + } + } + return base::Value(std::move(debug_value)); +} + +} // namespace web_app
diff --git a/chrome/browser/web_applications/jobs/link_capturing.h b/chrome/browser/web_applications/jobs/link_capturing.h new file mode 100644 index 0000000..c34408a --- /dev/null +++ b/chrome/browser/web_applications/jobs/link_capturing.h
@@ -0,0 +1,24 @@ +// 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_WEB_APPLICATIONS_JOBS_LINK_CAPTURING_H_ +#define CHROME_BROWSER_WEB_APPLICATIONS_JOBS_LINK_CAPTURING_H_ + +#include "components/webapps/common/web_app_id.h" + +namespace base { +class Value; +} // namespace base + +namespace web_app { +class AllAppsLock; + +base::Value SetAppCapturesSupportedLinksDisableOverlapping( + const webapps::AppId& app_id, + bool set_to_preferred, + AllAppsLock& lock); + +} // namespace web_app + +#endif // CHROME_BROWSER_WEB_APPLICATIONS_JOBS_LINK_CAPTURING_H_
diff --git a/chrome/browser/web_applications/jobs/link_capturing_unittest.cc b/chrome/browser/web_applications/jobs/link_capturing_unittest.cc new file mode 100644 index 0000000..f694838 --- /dev/null +++ b/chrome/browser/web_applications/jobs/link_capturing_unittest.cc
@@ -0,0 +1,98 @@ +// 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/web_applications/jobs/link_capturing.h" + +#include "base/test/test_future.h" +#include "chrome/browser/web_applications/test/web_app_install_test_utils.h" +#include "chrome/browser/web_applications/test/web_app_test.h" +#include "chrome/browser/web_applications/web_app_command_scheduler.h" +#include "chrome/browser/web_applications/web_app_install_info.h" +#include "chrome/browser/web_applications/web_app_provider.h" +#include "chrome/browser/web_applications/web_app_registrar.h" +#include "components/webapps/common/web_app_id.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +namespace web_app { +namespace { + +class LinkCapturingJobTest : public WebAppTest { + public: + const GURL kTestAppUrl = GURL("https://example.com/index.html"); + const GURL kTestOverlappingAppUrl = GURL("https://example.com/index2.html"); + const GURL kTestAppCapturablePage = GURL("https://example.com/page.html"); + + LinkCapturingJobTest() = default; + ~LinkCapturingJobTest() override = default; + + void SetUp() override { + WebAppTest::SetUp(); + test::AwaitStartWebAppProviderAndSubsystems(profile()); + } + + WebAppProvider* provider() { return WebAppProvider::GetForTest(profile()); } +}; + +TEST_F(LinkCapturingJobTest, SingleAppEnabled) { + webapps::AppId app_id = test::InstallWebApp( + profile(), WebAppInstallInfo::CreateWithStartUrlForTesting(kTestAppUrl)); + + EXPECT_TRUE(provider()->registrar_unsafe().IsLinkCapturableByApp( + app_id, kTestAppCapturablePage)); + EXPECT_FALSE(provider()->registrar_unsafe().CapturesLinksInScope(app_id)); + EXPECT_EQ(absl::nullopt, + provider()->registrar_unsafe().FindAppThatCapturesLinksInScope( + kTestAppCapturablePage)); + + base::test::TestFuture<void> preference_set; + provider()->scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app_id, true, preference_set.GetCallback()); + ASSERT_TRUE(preference_set.Wait()); + + EXPECT_TRUE(provider()->registrar_unsafe().IsLinkCapturableByApp( + app_id, kTestAppCapturablePage)); + EXPECT_TRUE(provider()->registrar_unsafe().CapturesLinksInScope(app_id)); + EXPECT_EQ(app_id, + provider()->registrar_unsafe().FindAppThatCapturesLinksInScope( + kTestAppCapturablePage)); +} + +TEST_F(LinkCapturingJobTest, DisablesOtherApps) { + webapps::AppId app1_id = test::InstallWebApp( + profile(), WebAppInstallInfo::CreateWithStartUrlForTesting(kTestAppUrl)); + webapps::AppId app2_id = test::InstallWebApp( + profile(), + WebAppInstallInfo::CreateWithStartUrlForTesting(kTestOverlappingAppUrl)); + + { + base::test::TestFuture<void> preference_set; + provider()->scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app1_id, true, preference_set.GetCallback()); + ASSERT_TRUE(preference_set.Wait()); + } + + EXPECT_TRUE(provider()->registrar_unsafe().CapturesLinksInScope(app1_id)); + + // This should disable link capturing on the first app, and enable it on the + // second app. + { + base::test::TestFuture<void> preference_set; + provider()->scheduler().SetAppCapturesSupportedLinksDisableOverlapping( + app2_id, true, preference_set.GetCallback()); + ASSERT_TRUE(preference_set.Wait()); + } + + // The first app should have this disabled. + EXPECT_FALSE(provider()->registrar_unsafe().CapturesLinksInScope(app1_id)); + + // It should be set up on the second app. + EXPECT_TRUE(provider()->registrar_unsafe().CapturesLinksInScope(app2_id)); + EXPECT_EQ(app2_id, + provider()->registrar_unsafe().FindAppThatCapturesLinksInScope( + kTestAppCapturablePage)); +} + +} // namespace +} // namespace web_app
diff --git a/chrome/browser/web_applications/web_app_command_scheduler.cc b/chrome/browser/web_applications/web_app_command_scheduler.cc index 32dd56d..47865e9 100644 --- a/chrome/browser/web_applications/web_app_command_scheduler.cc +++ b/chrome/browser/web_applications/web_app_command_scheduler.cc
@@ -11,13 +11,14 @@ #include "base/files/file_path.h" #include "base/functional/bind.h" #include "base/functional/callback.h" -#include "base/functional/callback_forward.h" +#include "base/functional/callback_helpers.h" #include "base/location.h" #include "base/metrics/histogram_functions.h" #include "base/task/sequenced_task_runner.h" #include "base/types/expected.h" #include "base/values.h" #include "base/version.h" +#include "build/build_config.h" #include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h" #include "chrome/browser/profiles/keep_alive/scoped_profile_keep_alive.h" #include "chrome/browser/profiles/profile.h" @@ -73,6 +74,10 @@ #include "content/public/browser/web_contents.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#if !BUILDFLAG(IS_CHROMEOS) +#include "chrome/browser/web_applications/jobs/link_capturing.h" +#endif + namespace web_app { WebAppCommandScheduler::WebAppCommandScheduler(Profile& profile) @@ -827,6 +832,28 @@ location); } +void WebAppCommandScheduler::SetAppCapturesSupportedLinksDisableOverlapping( + const webapps::AppId app_id, + bool set_to_preferred, + base::OnceClosure done, + const base::Location& location) { +#if BUILDFLAG(IS_CHROMEOS) + NOTREACHED() << "Preferred apps in ChromeOS are implemented in AppService"; +#else + if (IsShuttingDown()) { + base::SequencedTaskRunner::GetCurrentDefault()->PostTask(FROM_HERE, + std::move(done)); + return; + } + + ScheduleCallbackWithLock( + "SetAppCapturesSupporedLinks", std::make_unique<AllAppsLockDescription>(), + base::BindOnce(::web_app::SetAppCapturesSupportedLinksDisableOverlapping, + app_id, set_to_preferred), + location, std::move(done)); +#endif +} + void WebAppCommandScheduler::LaunchApp(apps::AppLaunchParams params, LaunchWebAppWindowSetting option, LaunchWebAppCallback callback,
diff --git a/chrome/browser/web_applications/web_app_command_scheduler.h b/chrome/browser/web_applications/web_app_command_scheduler.h index d7384c3..6750a15b 100644 --- a/chrome/browser/web_applications/web_app_command_scheduler.h +++ b/chrome/browser/web_applications/web_app_command_scheduler.h
@@ -31,6 +31,7 @@ #include "chrome/browser/web_applications/web_app_install_params.h" #include "chrome/browser/web_applications/web_app_ui_manager.h" #include "components/webapps/browser/installable/installable_metrics.h" +#include "components/webapps/common/web_app_id.h" #include "third_party/abseil-cpp/absl/types/optional.h" class GURL; @@ -414,6 +415,17 @@ void ScheduleDedupeInstallUrls(base::OnceClosure callback, const base::Location& location = FROM_HERE); + // Sets the user preference for link capturing for the given app. If + // `set_to_preferred` is true, then links in the browser can be launched in + // the app corresponding to app_id, respecting the app's launch handler + // preferences. Additionally, if there are multiple apps within the same + // scope, this will reset the preference on those apps to false. + void SetAppCapturesSupportedLinksDisableOverlapping( + const webapps::AppId app_id, + bool set_to_preferred, + base::OnceClosure done, + const base::Location& location = FROM_HERE); + // TODO(https://crbug.com/1298130): expose all commands for web app // operations.
diff --git a/chrome/browser/web_applications/web_app_install_info.cc b/chrome/browser/web_applications/web_app_install_info.cc index ccc1c88..91ffe94 100644 --- a/chrome/browser/web_applications/web_app_install_info.cc +++ b/chrome/browser/web_applications/web_app_install_info.cc
@@ -282,8 +282,10 @@ // static std::unique_ptr<WebAppInstallInfo> WebAppInstallInfo::CreateWithStartUrlForTesting(const GURL& start_url) { - return std::make_unique<WebAppInstallInfo>( + auto info = std::make_unique<WebAppInstallInfo>( GenerateManifestIdFromStartUrlOnly(start_url), start_url); + info->scope = start_url.GetWithoutFilename(); + return info; } WebAppInstallInfo::WebAppInstallInfo() = default;
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index 310c1c2..ec7d9f1 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1696960791-c4572a9ba628afff87d3b6b6c86581902db8bb75.profdata +chrome-android32-main-1697003727-8148b49700725e91eb3fb2091b6f2cfb69346d43.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt index 92c6bdb..e91f1fd0 100644 --- a/chrome/build/android-arm64.pgo.txt +++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@ -chrome-android64-main-1696960791-a3891e7ce1d554df5a87e1851505500505865333.profdata +chrome-android64-main-1697003727-3b7ac5d219fbc705db6181a22392c7a70087ddbd.profdata
diff --git a/chrome/build/lacros64.pgo.txt b/chrome/build/lacros64.pgo.txt index 50771e1..1d3a119 100644 --- a/chrome/build/lacros64.pgo.txt +++ b/chrome/build/lacros64.pgo.txt
@@ -1 +1 @@ -chrome-chromeos-amd64-generic-main-1696939335-41449fcd2e91b6f1994759f74df32f32593fe04a.profdata +chrome-chromeos-amd64-generic-main-1696982576-6e190c4923762996809b9d0d43cae6992d853643.profdata
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 07f5e313..8a4fbbb6f 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1696960791-718dce9755181af7b5ea08010e46d347813a33da.profdata +chrome-linux-main-1696982384-19605558a553a7b8b8dab5b93eba02f284e23665.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 70cab83..5fd2291 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1696975158-c8dcbb0eea3dc510a58d17c99d90ffbf15bf8ce9.profdata +chrome-mac-arm-main-1696996622-adf0748864e5fb5359e78b3168488e54a5720c48.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 8d74bb8..844aca6 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1696960791-5613ca688c1e1cb48339cef54abab1e4cee45095.profdata +chrome-mac-main-1696982384-c8cf68ed226c26fe9b6051fc18b2611cbfd091da.profdata
diff --git a/chrome/build/win-arm64.pgo.txt b/chrome/build/win-arm64.pgo.txt index 271deac..bb385e50 100644 --- a/chrome/build/win-arm64.pgo.txt +++ b/chrome/build/win-arm64.pgo.txt
@@ -1 +1 @@ -chrome-win-arm64-main-1696960791-10e6e5bc24faa6771b8d77e3f7155a93fffc3bd7.profdata +chrome-win-arm64-main-1696982384-65a3766b95569e897c098be7917f2800bb7fe1e2.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 96945025..1554429 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1696960791-53c62ef92c4f0d599ad3fbe91841eea59909a5a6.profdata +chrome-win32-main-1696993044-2e30de9dc1d057f2af10ce6277ad890589c7aff6.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 984740b..95819d22 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1696960791-559705329bff7c798076b7924e71eec09535f8e8.profdata +chrome-win64-main-1696993044-55679c0a0642c04c5867c6b766763319679c5764.profdata
diff --git a/chrome/common/extensions/api/accessibility_private.json b/chrome/common/extensions/api/accessibility_private.json index 1fb40f8..ab8d7b3 100644 --- a/chrome/common/extensions/api/accessibility_private.json +++ b/chrome/common/extensions/api/accessibility_private.json
@@ -531,7 +531,7 @@ "parameters": [ { "type": "boolean", - "name": "enabled", + "name": "darken", "description": "True to darken screen; false to undarken screen." } ]
diff --git a/chrome/renderer/extensions/api/printing_hooks_delegate.cc b/chrome/renderer/extensions/api/printing_hooks_delegate.cc index 8f1a8732..f06a8631 100644 --- a/chrome/renderer/extensions/api/printing_hooks_delegate.cc +++ b/chrome/renderer/extensions/api/printing_hooks_delegate.cc
@@ -8,6 +8,7 @@ #include "extensions/renderer/v8_helpers.h" #include "gin/dictionary.h" #include "third_party/blink/public/web/web_blob.h" +#include "v8/include/v8-primitive.h" namespace extensions { @@ -52,6 +53,14 @@ RequestResult PrintingHooksDelegate::HandleSubmitJob( v8::Isolate* isolate, std::vector<v8::Local<v8::Value>>* arguments) { + // If being called without the callback parameter (i.e. a promise based API + // call) the bindings require the final argument to be filled out with a null + // argument instead. + // TODO(tjudkins): It would be good to fix the logic to not require this. For + // more details see the comment in APIBindingJSUtil::SendRequest. + if (arguments->size() == 1u) { + arguments->push_back(v8::Null(isolate)); + } DCHECK_EQ(2u, arguments->size()); DCHECK((*arguments)[0]->IsObject());
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 81a3c09..0db0ceb 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -21,7 +21,6 @@ import("//chrome/common/features.gni") import("//chrome/services/speech/buildflags/buildflags.gni") -import("//chrome/test/base/js2gtest.gni") import("//chrome/test/include_js_tests.gni") import("//chrome/version.gni") import("//chromeos/ash/components/assistant/assistant.gni") @@ -66,6 +65,10 @@ import("//tools/perf/chrome_telemetry_build/android_browser_types.gni") } +if (is_chromeos_ash && include_js2gtest_tests) { + import("//chrome/test/base/js2gtest.gni") +} + # This target exists to reference other test executables to bring these files # into the build. group("test") { @@ -2025,7 +2028,13 @@ "//ui/webui/resources/", ] - data += js2gtest_js_libraries + if (is_chromeos_ash) { + # Libraries for tests that inherit from BaseWebUIBrowserTest. + data += [ + "//third_party/node/node_modules/chai/chai.js", + "//chrome/test/data/webui/test_api.js", + ] + } data += metric_integration_jsdeps sources = [ @@ -2711,7 +2720,6 @@ "base/save_desktop_snapshot_browsertest.cc", "base/test_chrome_web_ui_controller_factory_browsertest.cc", "base/ui_test_utils_browsertest.cc", - "base/web_ui_browser_test_browsertest.cc", "base/web_ui_mocha_browser_test_browsertest.cc", "data/webui/mojo/mojo_file_system_access_browsertest.cc", "data/webui/mojo/mojo_js_interface_broker_browsertest.cc", @@ -2853,6 +2861,7 @@ "../browser/sessions/tab_restore_service_browsertest.cc", "../browser/support_tool/signin_data_collector_browsertest.cc", "../browser/ui/views/web_apps/web_app_integration_browsertest_cros.cc", + "base/web_ui_browser_test_browsertest.cc", "data/webui/async_gen.cc", "data/webui/async_gen.h", "data/webui/chromeos/webui_resource_browsertest.cc", @@ -3183,26 +3192,25 @@ if (include_js_tests) { deps += [ "//chrome/test/data/webui:browser_tests" ] } - if (include_js2gtest_tests) { - deps += [ "//chrome/test/data/webui:browser_tests_js_webui" ] - if (is_chromeos_ash) { - deps += [ - "//ash/webui/color_internals:browser_tests_js", - "//ash/webui/eche_app_ui:browser_tests_js", - "//ash/webui/help_app_ui:browser_tests_js", - "//ash/webui/media_app_ui:browser_tests_js", - "//ash/webui/system_apps:browser_tests", - "//ash/webui/system_extensions_internals_ui:browser_tests_js", - "//chrome/test/data/webui:browser_tests_js_mojo_lite_webui", - "//chrome/test/data/webui:browser_tests_js_mojo_webui", - "//chromeos/ash/components/human_presence:browser_tests_js", - ] + if (is_chromeos_ash && include_js2gtest_tests) { + deps += [ + "//ash/webui/color_internals:browser_tests_js", + "//ash/webui/eche_app_ui:browser_tests_js", + "//ash/webui/help_app_ui:browser_tests_js", + "//ash/webui/media_app_ui:browser_tests_js", + "//ash/webui/system_apps:browser_tests", + "//ash/webui/system_extensions_internals_ui:browser_tests_js", + "//chrome/test/data/webui:browser_tests_js_mojo_lite_webui", + "//chrome/test/data/webui:browser_tests_js_mojo_webui", + "//chrome/test/data/webui:browser_tests_js_webui", + "//chromeos/ash/components/human_presence:browser_tests_js", + ] - data_deps += [ "//chrome/test/data/webui:browser_tests_js_webui" ] + data += js2gtest_js_libraries + data_deps += [ "//chrome/test/data/webui:browser_tests_js_webui" ] - if (!is_official_build) { - deps += [ "//ash/webui/sample_system_web_app_ui:browser_tests_js" ] - } + if (!is_official_build) { + deps += [ "//ash/webui/sample_system_web_app_ui:browser_tests_js" ] } } @@ -5335,7 +5343,6 @@ "//chrome/app:command_ids", "//chrome/browser/chromeos", "//chrome/browser/chromeos:test_support", - "//chrome/browser/chromeos/extensions/telemetry/api:browser_tests", "//chromeos/crosapi/mojom", "//chromeos/lacros", "//chromeos/lacros:test_support", @@ -5493,6 +5500,7 @@ "//chrome/browser/apps/link_capturing", "//chrome/browser/chromeos", "//chrome/browser/chromeos:test_support", + "//chrome/browser/chromeos/extensions/telemetry/api:browser_tests", "//chrome/browser/chromeos/extensions/vpn_provider", "//chrome/browser/chromeos/extensions/wm", "//chrome/browser/media/router:test_support", @@ -6475,7 +6483,6 @@ data += [ "data/" ] } - data += js2gtest_js_libraries if (is_android) { data += [ "$root_gen_dir/chrome/android/chrome_apk_paks/chrome_100_percent.pak", @@ -8056,6 +8063,7 @@ data += [ "//ash/components/arc/test/data/icons/" ] if (include_js2gtest_tests && is_chromeos_ash) { + data += js2gtest_js_libraries deps += [ "//chrome/browser/resources/chromeos/accessibility:unit_tests_js" ] } @@ -10022,8 +10030,6 @@ "base/test_chrome_web_ui_controller_factory.h", "base/ui_test_utils.cc", "base/ui_test_utils.h", - "base/web_ui_browser_test.cc", - "base/web_ui_browser_test.h", "base/web_ui_mocha_browser_test.cc", "base/web_ui_mocha_browser_test.h", "base/web_ui_test_data_source.cc", @@ -10224,6 +10230,8 @@ sources += [ "base/mojo_web_ui_browser_test.cc", "base/mojo_web_ui_browser_test.h", + "base/web_ui_browser_test.cc", + "base/web_ui_browser_test.h", ] deps += [ "//ash", @@ -10466,7 +10474,6 @@ "//tools/metrics/histograms/enums.xml", "//ui/webui/resources/js/", ] - data += js2gtest_js_libraries defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] ldflags = [] @@ -10590,6 +10597,7 @@ deps += [ "//chrome/test/data/webui:interactive_ui_tests" ] } if (include_js2gtest_tests && is_chromeos_ash) { + data += js2gtest_js_libraries deps += [ "//chrome/test/data/webui:interactive_ui_tests_js_webui" ] } @@ -11842,27 +11850,12 @@ } if (is_win) { - action("generate_allowed_imports") { - testonly = true - script = "delayload/generate_allowed_imports.py" - sources = [ "delayload/supported_imports_10.0.10240.txt" ] - outputs = [ "$target_gen_dir/chrome/test/delayload/supported_imports.inc" ] - args = [ - "--exports-file", - rebase_path("delayload/supported_imports_10.0.10240.txt", root_build_dir), - "--out-file", - rebase_path("$target_gen_dir/chrome/test/delayload/supported_imports.inc", - root_build_dir), - ] - } - test("delayloads_unittests") { output_name = "delayloads_unittests" sources = [ "delayload/delayloads_unittest.cc" ] include_dirs = [ "$target_gen_dir" ] deps = [ - ":generate_allowed_imports", "//base", "//base/test:test_support", "//chrome",
diff --git a/chrome/test/base/js2gtest.gni b/chrome/test/base/js2gtest.gni index 08e9f852..e4ba4ac7 100644 --- a/chrome/test/base/js2gtest.gni +++ b/chrome/test/base/js2gtest.gni
@@ -2,9 +2,12 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/chromeos/ui_mode.gni") import("//v8/gni/snapshot_toolchain.gni") import("//v8/gni/v8.gni") +assert(is_chromeos_ash) + # Libraries required to generate the custom test library built with js2gtest. # Changing the size or the order of files in this array also requires changing # src/chrome/test/base/v8sh.py.
diff --git a/chrome/test/data/extensions/api_test/printing/printing_util.js b/chrome/test/data/extensions/api_test/printing/printing_util.js index ef416a5..72b8c4c 100644 --- a/chrome/test/data/extensions/api_test/printing/printing_util.js +++ b/chrome/test/data/extensions/api_test/printing/printing_util.js
@@ -41,3 +41,10 @@ chrome.printing.submitJob(submitJobRequest, callback); }); } + +async function submitJobPromise(printerId, title, url) { + let response = await fetch(url); + let arrayBuffer = await response.arrayBuffer(); + const submitJobRequest = formatPrintJobRequest(printerId, title, arrayBuffer); + return chrome.printing.submitJob(submitJobRequest); +}
diff --git a/chrome/test/data/extensions/api_test/printing/submit_job_promise.html b/chrome/test/data/extensions/api_test/printing/submit_job_promise.html new file mode 100644 index 0000000..f5d8062 --- /dev/null +++ b/chrome/test/data/extensions/api_test/printing/submit_job_promise.html
@@ -0,0 +1,7 @@ +<!-- +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. +--> +<script src="printing_util.js"></script> +<script src="submit_job_promise.js"></script>
diff --git a/chrome/test/data/extensions/api_test/printing/submit_job_promise.js b/chrome/test/data/extensions/api_test/printing/submit_job_promise.js new file mode 100644 index 0000000..3537bad --- /dev/null +++ b/chrome/test/data/extensions/api_test/printing/submit_job_promise.js
@@ -0,0 +1,13 @@ +// 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. + +chrome.test.getConfig(async function(config) { + const url = `http://localhost:${config.testServer.port}/pdf/test.pdf`; + let response = await submitJobPromise('id', 'test job', url); + chrome.test.assertTrue(!!response); + chrome.test.assertEq(chrome.printing.SubmitJobStatus.OK, response.status); + chrome.test.assertTrue(!!response.jobId); + + chrome.test.notifyPass(); +});
diff --git a/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/background.js b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/background.js new file mode 100644 index 0000000..2d5c331 --- /dev/null +++ b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/background.js
@@ -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. + +chrome.runtime.onConnectExternal.addListener((p) => { + p.postMessage('connected'); + p.onMessage.addListener((m) => { + if (m == 'disconnect') { + p.disconnect(); + } + }) +});
diff --git a/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/content_script.js b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/content_script.js new file mode 100644 index 0000000..39cedd0 --- /dev/null +++ b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/content_script.js
@@ -0,0 +1,14 @@ +// 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. + +document.title = "modified"; + +chrome.runtime.onConnect.addListener((p) => { + p.postMessage('connected'); + p.onMessage.addListener((m) => { + if (m == 'disconnect') { + p.disconnect(); + } + }); +});
diff --git a/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/manifest.json b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/manifest.json new file mode 100644 index 0000000..0178cc1 --- /dev/null +++ b/chrome/test/data/extensions/back_forward_cache/content_script_all_frames/manifest.json
@@ -0,0 +1,34 @@ +{ + "name": "no caching", + "version": "0.1", + "manifest_version": 2, + "description": "Checks that content scripts do prevent back forward cache.", + "permissions": [ + "http://*/*", + "https://*/*" + ], + "externally_connectable": { + "matches": [ + "*://a.com/*" + ] + }, + "content_scripts": [ + { + "matches": [ + "http://*/*", + "https://*/*" + ], + "js": [ + "content_script.js" + ], + "run_at": "document_end", + "all_frames": true + } + ], + "background": { + "scripts": [ + "background.js" + ], + "persistent": false + } +} \ No newline at end of file
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 9bb54fc3..82f08a30 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -6,7 +6,6 @@ import("//build/config/chromeos/ui_mode.gni") import("//build/config/ui.gni") import("//chrome/common/features.gni") -import("//chrome/test/base/js2gtest.gni") import("//chrome/test/include_js_tests.gni") import("//components/compose/features.gni") import("//components/signin/features.gni") @@ -20,6 +19,10 @@ import("//ui/webui/resources/tools/generate_grd.gni") import("//ui/webui/webui_features.gni") +if (is_chromeos_ash) { + import("//chrome/test/base/js2gtest.gni") +} + assert(!is_android) source_set("browser_tests") { @@ -223,21 +226,19 @@ ] } -if (include_js2gtest_tests) { - if (is_chromeos_ash) { - js2gtest("interactive_ui_tests_js_webui") { - test_type = "webui" +if (include_js2gtest_tests && is_chromeos_ash) { + js2gtest("interactive_ui_tests_js_webui") { + test_type = "webui" - sources = [ "cr_focus_row_behavior_interactive_test.js" ] + sources = [ "cr_focus_row_behavior_interactive_test.js" ] - gen_include_files = [ - "polymer_browser_test_base.js", - "polymer_interactive_ui_test.js", - ] + gen_include_files = [ + "polymer_browser_test_base.js", + "polymer_interactive_ui_test.js", + ] - deps = [ "//chrome/browser/ui" ] - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - } + deps = [ "//chrome/browser/ui" ] + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } js2gtest("browser_tests_js_webui") { @@ -246,7 +247,36 @@ # Javascript sources. These are combined with the .cc files in the GYP # build and are handled by a rule, but in the GN build they're in a # separate action so need to be separated out. - sources = [ "assertions.js" ] + sources = [ + "../../../browser/resources/chromeos/login/security_token_pin_browsertest.js", + "../../../browser/ui/webui/ash/certificate_manager_dialog_browsertest.js", + "assertions.js", + "async_gen.js", + "chromeos/account_manager/account_manager_browsertest.js", + "chromeos/arc_account_picker/arc_account_picker_browsertest.js", + "chromeos/ash_common/ash_common_browsertest.js", + "chromeos/ash_common/ash_common_resources_browsertest.js", + "chromeos/ash_common/post_message_api/post_message_api_browsertest.js", + "chromeos/bluetooth_pairing_dialog_browsertest.js", + "chromeos/borealis_installer/borealis_installer_browsertest.js", + "chromeos/cloud_upload/cloud_upload_dialog_browsertest.js", + "chromeos/cloud_upload/connect_onedrive_browsertest.js", + "chromeos/cloud_upload/file_handler_page_browsertest.js", + "chromeos/cloud_upload/move_confirmation_page_browsertest.js", + "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", + "chromeos/set_time_dialog_browsertest.js", + "chromeos/sys_internals/sys_internals_browsertest.js", + "cr_components/chromeos/cr_components_chromeos_v3_browsertest.js", + "js/i18n_process_test.js", + "js2gtest_browsertest.js", + "settings/chromeos/os_settings_browsertest.js", + ] gen_include_files = [ "polymer_browser_test_base.js" ] @@ -259,84 +289,47 @@ "//skia", ] - if (is_chromeos_ash) { + if (is_cfm) { sources += [ - "../../../browser/resources/chromeos/login/security_token_pin_browsertest.js", - "../../../browser/ui/webui/ash/certificate_manager_dialog_browsertest.js", - "async_gen.js", - "chromeos/account_manager/account_manager_browsertest.js", - "chromeos/arc_account_picker/arc_account_picker_browsertest.js", - "chromeos/ash_common/ash_common_browsertest.js", - "chromeos/ash_common/ash_common_resources_browsertest.js", - "chromeos/ash_common/post_message_api/post_message_api_browsertest.js", - "chromeos/bluetooth_pairing_dialog_browsertest.js", - "chromeos/borealis_installer/borealis_installer_browsertest.js", - "chromeos/cloud_upload/cloud_upload_dialog_browsertest.js", - "chromeos/cloud_upload/connect_onedrive_browsertest.js", - "chromeos/cloud_upload/file_handler_page_browsertest.js", - "chromeos/cloud_upload/move_confirmation_page_browsertest.js", - "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", - "chromeos/set_time_dialog_browsertest.js", - "chromeos/sys_internals/sys_internals_browsertest.js", - "cr_components/chromeos/cr_components_chromeos_v3_browsertest.js", - "js/i18n_process_test.js", - "js2gtest_browsertest.js", - "settings/chromeos/os_settings_browsertest.js", + "chromeos/chromebox_for_meetings/cfm_network_settings_browsertest.js", ] - - if (is_cfm) { - sources += [ - "chromeos/chromebox_for_meetings/cfm_network_settings_browsertest.js", - ] - } - - data = [ "//ui/webui/resources/js/load_time_data_deprecated.js" ] } + data = [ "//ui/webui/resources/js/load_time_data_deprecated.js" ] + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } - if (is_chromeos_ash) { - js2gtest("browser_tests_js_mojo_lite_webui") { - test_type = "mojo_lite_webui" + js2gtest("browser_tests_js_mojo_lite_webui") { + test_type = "mojo_lite_webui" - deps = [ "//chrome/browser/ui" ] + deps = [ "//chrome/browser/ui" ] - sources = [ - "chromeos/crostini_installer_browsertest.js", - "chromeos/crostini_upgrader_browsertest.js", - "chromeos/firmware_update/firmware_update_browsertest.js", - "chromeos/os_feedback_ui/os_feedback_browsertest.js", - "chromeos/scanning/scanning_app_browsertest.js", - "chromeos/shimless_rma/shimless_rma_browsertest.js", - ] + sources = [ + "chromeos/crostini_installer_browsertest.js", + "chromeos/crostini_upgrader_browsertest.js", + "chromeos/firmware_update/firmware_update_browsertest.js", + "chromeos/os_feedback_ui/os_feedback_browsertest.js", + "chromeos/scanning/scanning_app_browsertest.js", + "chromeos/shimless_rma/shimless_rma_browsertest.js", + ] - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - } + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] + } - js2gtest("browser_tests_js_mojo_webui") { - test_type = "mojo_webui" - sources = [] - if (is_chromeos_ash) { - sources += [ - "chromeos/diagnostics/diagnostics_browsertest.js", - "chromeos/manage_mirrorsync/manage_mirrorsync_browsertest.js", - "chromeos/parent_access/parent_access_browsertest.js", - "chromeos/personalization_app/personalization_app_browsertest.js", - "chromeos/print_management/print_management_browsertest.js", - "chromeos/shortcut_customization/shortcut_customization_browsertest.js", - "nearby_share/nearby_browsertest.js", - "nearby_share/shared/nearby_shared_v3_browsertest.js", - ] - } - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - } + js2gtest("browser_tests_js_mojo_webui") { + test_type = "mojo_webui" + sources = [ + "chromeos/diagnostics/diagnostics_browsertest.js", + "chromeos/manage_mirrorsync/manage_mirrorsync_browsertest.js", + "chromeos/parent_access/parent_access_browsertest.js", + "chromeos/personalization_app/personalization_app_browsertest.js", + "chromeos/print_management/print_management_browsertest.js", + "chromeos/shortcut_customization/shortcut_customization_browsertest.js", + "nearby_share/nearby_browsertest.js", + "nearby_share/shared/nearby_shared_v3_browsertest.js", + ] + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] } }
diff --git a/chrome/test/delayload/delayloads_unittest.cc b/chrome/test/delayload/delayloads_unittest.cc index 04611c8c..5c08637e 100644 --- a/chrome/test/delayload/delayloads_unittest.cc +++ b/chrome/test/delayload/delayloads_unittest.cc
@@ -24,20 +24,10 @@ #include "base/win/pe_image.h" #include "build/build_config.h" #include "chrome/install_static/test/scoped_install_details.h" -#include "testing/gmock/include/gmock/gmock-matchers.h" -#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace { -using DetailedImports = std::map<std::string, std::set<std::string>>; - -// Generated static data - see `generate_allowed_imports.py` - module must be -// lowercase as we force imports to lowercase when we read the module. -// e.g. const DetailedImports kAvailableImports = { -// {"kernel32.dll", {"Function1", "Function2"}}}; -#include "chrome/test/delayload/supported_imports.inc" - class DelayloadsTest : public testing::Test { protected: static bool ImportsCallback(const base::win::PEImage& image, @@ -51,83 +41,17 @@ return true; } - static std::vector<std::string> GetImports( - const base::FilePath& module_path) { - std::vector<std::string> imports; + static void GetImports(const base::FilePath& module_path, + std::vector<std::string>* imports) { + ASSERT_TRUE(imports != NULL); base::MemoryMappedFile module_mmap; - CHECK(module_mmap.Initialize(module_path)); + ASSERT_TRUE(module_mmap.Initialize(module_path)); base::win::PEImageAsData pe_image_data( reinterpret_cast<HMODULE>(const_cast<uint8_t*>(module_mmap.data()))); - pe_image_data.EnumImportChunks(DelayloadsTest::ImportsCallback, &imports, + pe_image_data.EnumImportChunks(DelayloadsTest::ImportsCallback, imports, nullptr); - return imports; - } - - static bool DetailedImportsCallback(const base::win::PEImage& image, - const char* module, - DWORD ordinal, - const char* import_name, - DWORD hint, - IMAGE_THUNK_DATA* iat, - void* cookie) { - if (!module) { - return false; - } - if (!import_name) { - return true; - } - // Force module name to lowercase here. - const std::string mod_str = base::ToLowerASCII(module); - DetailedImports* imports = reinterpret_cast<DetailedImports*>(cookie); - if (auto fn_names = imports->find(mod_str); fn_names != imports->end()) { - fn_names->second.emplace(import_name); - } else { - std::set<std::string> empty_fn_names; - empty_fn_names.emplace(import_name); - imports->emplace(std::move(mod_str), std::move(empty_fn_names)); - } - return true; - } - - static DetailedImports GetDetailedImports(const base::FilePath& module_path) { - base::MemoryMappedFile module_mmap; - DetailedImports imports; - - CHECK(module_mmap.Initialize(module_path)); - base::win::PEImageAsData pe_image_data( - reinterpret_cast<HMODULE>(const_cast<uint8_t*>(module_mmap.data()))); - pe_image_data.EnumAllImports(DelayloadsTest::DetailedImportsCallback, - &imports, nullptr); - return imports; - } - - // Validate that any static (non-delayloaded) imported functions are available - // in the earliest version of Windows that Chrome supports. If an unsupported - // function is added to Chrome's imports Chrome and its crash reporting client - // may fail to start. - // `mod_path` - exe or dll (e.g. chrome.exe) to check. - // `internal_modules` - modules from the build (e.g. chrome.exe can import - // chrome_elf.dll). - static void ValidateImportsForEarliestWindowsVersion( - const base::FilePath& mod_path, - const std::set<std::string>& internal_modules) { - DetailedImports imports = GetDetailedImports(mod_path); - - for (const auto& imports_entry : imports) { - const std::string& module = imports_entry.first; - auto available_functions = kAvailableImports.find(module); - if (available_functions == kAvailableImports.end()) { - // Unlisted modules must be provided by the Chrome build. - EXPECT_THAT(internal_modules, testing::Contains(module)); - } else { - // Imported functions must be available in earliest Windows version. - for (const auto& function : imports_entry.second) { - EXPECT_THAT(available_functions->second, testing::Contains(function)); - } - } - } } }; @@ -157,7 +81,8 @@ base::FilePath dll; ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &dll)); dll = dll.Append(L"chrome.dll"); - std::vector<std::string> dll_imports = GetImports(dll); + std::vector<std::string> dll_imports; + GetImports(dll, &dll_imports); // Check that the dll has imports. ASSERT_LT(0u, dll_imports.size()) @@ -257,7 +182,8 @@ base::FilePath dll; ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &dll)); dll = dll.Append(L"chrome_elf.dll"); - std::vector<std::string> dll_imports = GetImports(dll); + std::vector<std::string> dll_imports; + GetImports(dll, &dll_imports); // Check that the dll has imports. ASSERT_LT(0u, dll_imports.size()) @@ -342,10 +268,11 @@ } TEST_F(DelayloadsTest, ChromeExeDelayloadsCheck) { + std::vector<std::string> exe_imports; base::FilePath exe; ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe)); exe = exe.Append(L"chrome.exe"); - std::vector<std::string> exe_imports = GetImports(exe); + GetImports(exe, &exe_imports); // Check that chrome.exe has imports. ASSERT_LT(0u, exe_imports.size()) @@ -380,25 +307,15 @@ } } -TEST_F(DelayloadsTest, MinimumSupportedImports) { - base::FilePath module_path; - ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &module_path)); - - ValidateImportsForEarliestWindowsVersion(module_path.Append(L"chrome.exe"), - {"chrome_elf.dll"}); - ValidateImportsForEarliestWindowsVersion( - module_path.Append(L"chrome_elf.dll"), {}); - ValidateImportsForEarliestWindowsVersion(module_path.Append(L"chrome.dll"), - {"chrome_elf.dll"}); -} - #endif // NDEBUG && !COMPONENT_BUILD TEST_F(DelayloadsTest, ChromeExeLoadSanityCheck) { + std::vector<std::string> exe_imports; + base::FilePath exe; ASSERT_TRUE(base::PathService::Get(base::DIR_EXE, &exe)); exe = exe.Append(L"chrome.exe"); - std::vector<std::string> exe_imports = GetImports(exe); + GetImports(exe, &exe_imports); // Check that chrome.exe has imports. ASSERT_LT(0u, exe_imports.size())
diff --git a/chrome/test/delayload/generate_allowed_imports.py b/chrome/test/delayload/generate_allowed_imports.py deleted file mode 100644 index 5a6d67c..0000000 --- a/chrome/test/delayload/generate_allowed_imports.py +++ /dev/null
@@ -1,108 +0,0 @@ -# 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. -""" -Generates the list of valid imports for the lowest-supported version of -Windows. - -Run from the root directory of the checkout - builds a .inc file that -will be included into delayloads_unittest.cc. -""" - -import argparse -import os -import re -import sys - -USE_PYTHON_3 = f'This script will only run under python3.' - -# e.g. ' Section contains the following exports for CRYPT32.dll' -RE_NEWMOD = re.compile( - 'Section contains the following exports for (?P<dll>\w+\.(?i:dll|drv))') -# e.g. ' 1020 0 00088A30 CertAddCRLContextToStore' -# ^ can be blank -RE_EXPORT = re.compile('^\s+\d+\s+[0-9A-F]+\s+[0-9A-F ]{8}\s+(?P<export>\w+)') - -def parse_file(f): - """Naive parser for dumpbin output. - - f: filehandle to file containing dumpbin output.""" - mods = dict() - curmod = None - imports = [] - for line in f.readlines(): - # e.g. ' Section contains the following exports for CRYPT32.dll' - m = re.search(RE_NEWMOD, line) - if m: - if curmod: - mods[curmod] = imports - imports = [] - curmod = m.group('dll') - continue - if curmod is None: - continue - # e.g. ' 1020 0 00088A30 CertAddCRLContextToStore' - m = re.search(RE_EXPORT, line) - if m: - imports.append(m.group('export')) - if curmod: - mods[curmod] = imports - return mods - - -def generate_inc(input_file): - """Reads output of dumpbin /exports *.dll and makes input for .inc C++ file. - - input_file: path to file containing output of `dumpbin /exports *.dll`. - - using DetailedImports = std::map<std::string, std::set<std::string>>; """ - mods = parse_file(open(input_file, 'r', encoding='utf-8')) - module_entries = []; - for module, functions in mods.items(): - joined_functions = ',\n'.join([f' "{fn}"' for fn in functions]) - lower_module = module.lower() - module_line = f' {{"{lower_module}", {{{joined_functions}}}}}' - module_entries.append(module_line) - all_modules = (',\n').join(module_entries) - output = f'const DetailedImports kAvailableImports =\n {{{all_modules}}};\n' - return output - - -def maybe_read(filename): - """ Read existing file so that we don't write it again if it hasn't changed""" - if not os.path.isfile(filename): - return None; - try: - with open(filename, 'r', encoding='utf-8') as f: - return f.read(); - except Exception: - return None - - -def write_imports_inc(input, output): - existing_content = maybe_read(output) - new_content = generate_inc(input) - if existing_content == new_content: - return - os.makedirs(os.path.dirname(output), exist_ok=True) - with open(output, 'w', encoding='utf-8') as f: - f.write(new_content) - - -def main(): - parser = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawTextHelpFormatter) - parser.add_argument('--exports-file', - default="chrome/test/delayload/supported_imports.txt", - metavar='FILE_NAME', - help='output of dumpbin /exports *.dll') - parser.add_argument('--out-file', - default='gen/chrome/test/delayload/supported_imports.inc', - metavar='FILE_NAME', - help='path to write .inc file to, within out-dir') - args, _extras = parser.parse_known_args() - write_imports_inc(args.exports_file, args.out_file) - - -if __name__ == '__main__': - sys.exit(main())
diff --git a/chrome/test/delayload/supported_imports_10.0.10240.txt b/chrome/test/delayload/supported_imports_10.0.10240.txt deleted file mode 100644 index c578e426..0000000 --- a/chrome/test/delayload/supported_imports_10.0.10240.txt +++ /dev/null
@@ -1,6610 +0,0 @@ -# Output of dumpbin /exports *.dll for system dlls that Chrome imports. -# Consumed by generate_allowed_imports.py to build delayload_unittest. - -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\crypt32.dll - -File Type: DLL - - Section contains the following exports for CRYPT32.dll - - 00000000 characteristics - 64CAB2D6 time date stamp Wed Aug 2 12:47:34 2023 - 0.00 version - 1001 ordinal base - 1000 number of functions - 290 number of names - - ordinal hint RVA name - - 1020 0 00088A30 CertAddCRLContextToStore - 1021 1 00088AB0 CertAddCRLLinkToStore - 1022 2 00088A30 CertAddCTLContextToStore - 1023 3 00088AB0 CertAddCTLLinkToStore - 1024 4 0000D5B0 CertAddCertificateContextToStore - 1025 5 00088AB0 CertAddCertificateLinkToStore - 1026 6 000421F0 CertAddEncodedCRLToStore - 1027 7 0000E8E0 CertAddEncodedCTLToStore - 1028 8 00026570 CertAddEncodedCertificateToStore - 1029 9 000899B0 CertAddEncodedCertificateToSystemStoreA - 1030 A 00089A30 CertAddEncodedCertificateToSystemStoreW - 1031 B 00089FB0 CertAddEnhancedKeyUsageIdentifier - 1032 C 0008AFB0 CertAddRefServerOcspResponse - 1033 D 0008AFC0 CertAddRefServerOcspResponseContext - 1034 E 000115A0 CertAddSerializedElementToStore - 1035 F 0004C0A0 CertAddStoreToCollection - 1036 10 0008B250 CertAlgIdToOID - 1037 11 0008AFD0 CertCloseServerOcspResponse - 1038 12 00035E60 CertCloseStore - 1039 13 00010660 CertCompareCertificate - 1040 14 000122B0 CertCompareCertificateName - 1041 15 000106C0 CertCompareIntegerBlob - 1042 16 0002F3E0 CertComparePublicKeyInfo - 1043 17 00035710 CertControlStore - 1044 18 00045830 CertCreateCRLContext - 1045 19 0000E8A0 CertCreateCTLContext - 1046 1A 00088B10 CertCreateCTLEntryFromCertificateContextProperties - 1047 1B 00054C80 CertCreateCertificateChainEngine - 1048 1C 00028630 CertCreateCertificateContext - 1049 1D 0003DDE0 CertCreateContext - 1050 1E 0008B8C0 CertCreateSelfSignCertificate - 1051 1F 00089000 CertDeleteCRLFromStore - 1052 20 00089000 CertDeleteCTLFromStore - 1053 21 00089000 CertDeleteCertificateFromStore - 1054 22 000179D0 CertDuplicateCRLContext - 1055 23 000127F0 CertDuplicateCTLContext - 1056 24 00057040 CertDuplicateCertificateChain - 1057 25 00018420 CertDuplicateCertificateContext - 1058 26 0004C2D0 CertDuplicateStore - 1059 27 00089020 CertEnumCRLContextProperties - 1060 28 00011DF0 CertEnumCRLsInStore - 1061 29 00089020 CertEnumCTLContextProperties - 1062 2A 00017DB0 CertEnumCTLsInStore - 1063 2B 00089020 CertEnumCertificateContextProperties - 1064 2C 000190B0 CertEnumCertificatesInStore - 1065 2D 0008FB30 CertEnumPhysicalStore - 1066 2E 00089040 CertEnumSubjectInSortedCTL - 1067 2F 0008FB50 CertEnumSystemStore - 1068 30 0008FEE0 CertEnumSystemStoreLocation - 1069 31 00013040 CertFindAttribute - 1070 32 00006150 CertFindCRLInStore - 1071 33 000891A0 CertFindCTLInStore - 1072 34 00011EF0 CertFindCertificateInCRL - 1073 35 00018FE0 CertFindCertificateInStore - 1074 36 00090BB0 CertFindChainInStore - 1075 37 00016230 CertFindExtension - 1076 38 000072D0 CertFindRDNAttr - 1077 39 000486E0 CertFindSubjectInCTL - 1078 3A 00016B90 CertFindSubjectInSortedCTL - 1079 3B 00017EB0 CertFreeCRLContext - 1080 3C 00017EB0 CertFreeCTLContext - 1081 3D 0000F7B0 CertFreeCertificateChain - 1082 3E 00058200 CertFreeCertificateChainEngine - 1083 3F 000584D0 CertFreeCertificateChainList - 1084 40 0003C4B0 CertFreeCertificateContext - 1085 41 0008B030 CertFreeServerOcspResponseContext - 1086 42 00089200 CertGetCRLContextProperty - 1087 43 000083E0 CertGetCRLFromStore - 1088 44 00089200 CertGetCTLContextProperty - 1089 45 00027680 CertGetCertificateChain - 1090 46 0001F3B0 CertGetCertificateContextProperty - 1091 47 00018DA0 CertGetEnhancedKeyUsage - 1092 48 0008B290 CertGetIntendedKeyUsage - 1093 49 00089230 CertGetIssuerCertificateFromStore - 1094 4A 00091B40 CertGetNameStringA - 1095 4B 00039EA0 CertGetNameStringW - 1096 4C 00028F40 CertGetPublicKeyLength - 1097 4D 0008B070 CertGetServerOcspResponseContext - 1098 4E 00089330 CertGetStoreProperty - 1099 4F 00052DC0 CertGetSubjectCertificateFromStore - 1100 50 00012B80 CertGetValidUsages - 1101 51 0008B3D0 CertIsRDNAttrsInCertificateName - 1102 52 000938F0 CertIsStrongHashToSign - 1103 53 00015EB0 CertIsValidCRLForCertificate - 1104 54 000265F0 CertIsWeakHash - 1105 55 00091C00 CertNameToStrA - 1106 56 00058520 CertNameToStrW - 1107 57 000488B0 CertOIDToAlgId - 1108 58 0005ADC0 CertOpenServerOcspResponse - 1109 59 00037580 CertOpenStore - 1110 5A 00089AB0 CertOpenSystemStoreA - 1111 5B 0005B4F0 CertOpenSystemStoreW - 1112 5C 00091CA0 CertRDNValueToStrA - 1113 5D 00091D70 CertRDNValueToStrW - 1114 5E 0008FFB0 CertRegisterPhysicalStore - 1115 5F 00090250 CertRegisterSystemStore - 1116 60 0008A170 CertRemoveEnhancedKeyUsageIdentifier - 1117 61 00007250 CertRemoveStoreFromCollection - 1118 62 000C54D0 CertResyncCertificateChainEngine - 1119 63 00093C50 CertRetrieveLogoOrBiometricInfo - 1120 64 00016910 CertSaveStore - 1121 65 00011910 CertSelectCertificateChains - 1122 66 000169F0 CertSerializeCRLStoreElement - 1123 67 000169F0 CertSerializeCTLStoreElement - 1124 68 000169F0 CertSerializeCertificateStoreElement - 1125 69 00012220 CertSetCRLContextProperty - 1126 6A 000894D0 CertSetCTLContextProperty - 1127 6B 0000D760 CertSetCertificateContextPropertiesFromCTLEntry - 1128 6C 00012220 CertSetCertificateContextProperty - 1129 6D 0008A270 CertSetEnhancedKeyUsage - 1130 6E 00089500 CertSetStoreProperty - 1131 6F 00091F10 CertStrToNameA - 1132 70 0000E9F0 CertStrToNameW - 1133 71 00090340 CertUnregisterPhysicalStore - 1134 72 00090450 CertUnregisterSystemStore - 1135 73 0008B5E0 CertVerifyCRLRevocation - 1136 74 0008B670 CertVerifyCRLTimeValidity - 1137 75 00094460 CertVerifyCTLUsage - 1138 76 00027C90 CertVerifyCertificateChainPolicy - 1139 77 00017270 CertVerifyRevocation - 1140 78 00089570 CertVerifySubjectCertificateContext - 1141 79 000105C0 CertVerifyTimeValidity - 1142 7A 0008B710 CertVerifyValidityNesting - 1143 7B 00057330 CryptAcquireCertificatePrivateKey - 1144 7C 00058C10 CryptBinaryToStringA - 1145 7D 00058AF0 CryptBinaryToStringW - 1146 7E 000B7650 CryptCloseAsyncHandle - 1147 7F 00095010 CryptCreateAsyncHandle - 1148 80 00092DB0 CryptCreateKeyIdentifierFromCSP - 1149 81 000968D0 CryptDecodeMessage - 1150 82 000321A0 CryptDecodeObject - 1151 83 00032300 CryptDecodeObjectEx - 1152 84 00096970 CryptDecryptAndVerifyMessageSignature - 1153 85 00096B90 CryptDecryptMessage - 1154 86 0002A700 CryptEncodeObject - 1155 87 0002A730 CryptEncodeObjectEx - 1156 88 00096C00 CryptEncryptMessage - 1157 89 000895B0 CryptEnumKeyIdentifierProperties - 1158 8A 0002D150 CryptEnumOIDFunction - 1159 8B 000A4C20 CryptEnumOIDInfo - 1160 8C 000CCD50 CryptExportPKCS8 - 1161 8D 00008900 CryptExportPublicKeyInfo - 1162 8E 00054F20 CryptExportPublicKeyInfoEx - 1163 8F 00092E40 CryptExportPublicKeyInfoFromBCryptKeyHandle - 1164 90 0008B760 CryptFindCertificateKeyProvInfo - 1165 91 000A4D20 CryptFindLocalizedName - 1166 92 0002E760 CryptFindOIDInfo - 1167 93 000AEA00 CryptFormatObject - 1168 94 00029360 CryptFreeOIDFunctionAddress - 1169 95 00095030 CryptGetAsyncParam - 1170 96 00017700 CryptGetDefaultOIDDllList - 1171 97 000177B0 CryptGetDefaultOIDFunctionAddress - 1172 98 000896B0 CryptGetKeyIdentifierProperty - 1173 99 00096CE0 CryptGetMessageCertificates - 1174 9A 00096D20 CryptGetMessageSignerCount - 1175 9B 0002AF80 CryptGetOIDFunctionAddress - 1176 9C 000A3320 CryptGetOIDFunctionValue - 1177 9D 00050460 CryptHashCertificate - 1178 9E 0002CF40 CryptHashCertificate2 - 1179 9F 00096DD0 CryptHashMessage - 1180 A0 00092E90 CryptHashPublicKeyInfo - 1181 A1 0002E5A0 CryptHashToBeSigned - 1182 A2 000CD120 CryptImportPKCS8 - 1183 A3 0004FEA0 CryptImportPublicKeyInfo - 1184 A4 00029E10 CryptImportPublicKeyInfoEx - 1185 A5 0002B290 CryptImportPublicKeyInfoEx2 - 1186 A6 0003F640 CryptInitOIDFunctionSet - 1187 A7 000B3A80 CryptInstallDefaultContext - 1188 A8 0003F720 CryptInstallOIDFunctionAddress - 1189 A9 000D9160 CryptLoadSip - 1190 AA 00052BA0 CryptMemAlloc - 1191 AB 00027550 CryptMemFree - 1192 AC 000B3EA0 CryptMemRealloc - 1193 AD 000029B0 CryptMsgCalculateEncodedLength - 1194 AE 0003BDB0 CryptMsgClose - 1195 AF 0003FF60 CryptMsgControl - 1196 B0 000E2FD0 CryptMsgCountersign - 1197 B1 000E3190 CryptMsgCountersignEncoded - 1198 B2 00057730 CryptMsgDuplicate - 1199 B3 00001ED0 CryptMsgEncodeAndSignCTL - 1200 B4 0000E520 CryptMsgGetAndVerifySigner - 1201 B5 0002F8A0 CryptMsgGetParam - 1202 B6 0003C980 CryptMsgOpenToDecode - 1203 B7 000020B0 CryptMsgOpenToEncode - 1204 B8 00001FB0 CryptMsgSignCTL - 1205 B9 0003AE10 CryptMsgUpdate - 1206 BA 000E3510 CryptMsgVerifyCountersignatureEncoded - 1207 BB 00056210 CryptMsgVerifyCountersignatureEncodedEx - 1012 BC 000CA2F0 CryptObjectLocatorFree - 1013 BD 000CA330 CryptObjectLocatorGet - 1014 BE 000CA370 CryptObjectLocatorGetContent - 1015 BF 000CA420 CryptObjectLocatorGetUpdated - 1016 C0 000CA460 CryptObjectLocatorInitialize - 1017 C1 000CA7D0 CryptObjectLocatorIsChanged - 1018 C2 000CA7F0 CryptObjectLocatorRelease - 1208 C3 00054860 CryptProtectData - 1209 C4 CryptProtectMemory (forwarded to DPAPI.CryptProtectMemory) - 1210 C5 0003CA90 CryptQueryObject - 1211 C6 000A3410 CryptRegisterDefaultOIDFunction - 1212 C7 000A3710 CryptRegisterOIDFunction - 1213 C8 000A4DD0 CryptRegisterOIDInfo - 1214 C9 000D9650 CryptRetrieveTimeStamp - 1215 CA 000D9200 CryptSIPAddProvider - 1216 CB 0002A2B0 CryptSIPCreateIndirectData - 1217 CC 00052E30 CryptSIPGetCaps - 1218 CD 000D9570 CryptSIPGetSealedDigest - 1219 CE 0002A170 CryptSIPGetSignedDataMsg - 1220 CF 0002A460 CryptSIPLoad - 1221 D0 00007EA0 CryptSIPPutSignedDataMsg - 1222 D1 000D93D0 CryptSIPRemoveProvider - 1223 D2 00008310 CryptSIPRemoveSignedDataMsg - 1224 D3 0004D320 CryptSIPRetrieveSubjectGuid - 1225 D4 0004D0A0 CryptSIPRetrieveSubjectGuidForCatalogFile - 1226 D5 00053490 CryptSIPVerifyIndirectData - 1227 D6 000B7650 CryptSetAsyncParam - 1228 D7 000897D0 CryptSetKeyIdentifierProperty - 1229 D8 000A3810 CryptSetOIDFunctionValue - 1230 D9 000501B0 CryptSignAndEncodeCertificate - 1231 DA 00097030 CryptSignAndEncryptMessage - 1232 DB 00050350 CryptSignCertificate - 1233 DC 00097190 CryptSignMessage - 1234 DD 000972A0 CryptSignMessageWithKey - 1235 DE 0007A470 CryptStringToBinaryA - 1236 DF 00045D50 CryptStringToBinaryW - 1237 E0 000B3C40 CryptUninstallDefaultContext - 1238 E1 0004C5F0 CryptUnprotectData - 1239 E2 CryptUnprotectMemory (forwarded to DPAPI.CryptUnprotectMemory) - 1240 E3 000A3900 CryptUnregisterDefaultOIDFunction - 1241 E4 000A3BB0 CryptUnregisterOIDFunction - 1242 E5 000A4FD0 CryptUnregisterOIDInfo - 1243 E6 CryptUpdateProtectedState (forwarded to DPAPI.CryptUpdateProtectedState) - 1244 E7 0008B870 CryptVerifyCertificateSignature - 1245 E8 00019150 CryptVerifyCertificateSignatureEx - 1246 E9 00097510 CryptVerifyDetachedMessageHash - 1247 EA 00097570 CryptVerifyDetachedMessageSignature - 1248 EB 000975F0 CryptVerifyMessageHash - 1249 EC 00097640 CryptVerifyMessageSignature - 1250 ED 000976C0 CryptVerifyMessageSignatureWithKey - 1251 EE 000D9990 CryptVerifyTimeStampSignature - 1252 EF 00017B50 I_CertChainEngineIsDisallowedCertificate - 1253 F0 000277F0 I_CertDiagControl - 1254 F1 000514B0 I_CertProtectFunction - 1255 F2 000122F0 I_CertSrvProtectFunction - 1256 F3 00089990 I_CertSyncStore - 1257 F4 00056490 I_CertUpdateStore - 1258 F5 000561E0 I_CryptAddRefLruEntry - 1259 F6 000B7340 I_CryptAddSmartCardCertToStore - 1260 F7 00058130 I_CryptAllocTls - 1261 F8 0003F4B0 I_CryptAllocTlsEx - 1262 F9 00027460 I_CryptCreateLruCache - 1263 FA 00025460 I_CryptCreateLruEntry - 1264 FB 000525A0 I_CryptDetachTls - 1265 FC 000C5630 I_CryptDisableLruOfEntries - 1266 FD 000C5670 I_CryptEnableLruOfEntries - 1267 FE 00027590 I_CryptEnumMatchingLruEntries - 1268 FF 000256A0 I_CryptFindLruEntry - 1269 100 000C56E0 I_CryptFindLruEntryData - 1270 101 000B7430 I_CryptFindSmartCardCertInStore - 1271 102 000556F0 I_CryptFlushLruCache - 1272 103 000561B0 I_CryptFreeLruCache - 1273 104 00052950 I_CryptFreeTls - 1274 105 0002C980 I_CryptGetAsn1Decoder - 1275 106 00040AA0 I_CryptGetAsn1Encoder - 1276 107 0003AD20 I_CryptGetDefaultCryptProv - 1277 108 000B3D80 I_CryptGetDefaultCryptProvForEncrypt - 1278 109 00079FE0 I_CryptGetFileVersion - 1279 10A 00054C00 I_CryptGetLruEntryData - 1280 10B 000C5710 I_CryptGetLruEntryIdentifier - 1281 10C 000B7670 I_CryptGetOssGlobal - 1282 10D 00015640 I_CryptGetTls - 1283 10E 00025DB0 I_CryptInsertLruEntry - 1284 10F 00055EC0 I_CryptInstallAsn1Module - 1285 110 000B7670 I_CryptInstallOssGlobal - 1286 111 0004CC10 I_CryptReadTrustedPublisherDWORDValueFromRegistry - 1287 112 000B7650 I_CryptRegisterSmartCardStore - 1288 113 00025620 I_CryptReleaseLruEntry - 1289 114 00057120 I_CryptRemoveLruEntry - 1290 115 00017230 I_CryptSetTls - 1291 116 000578D0 I_CryptTouchLruEntry - 1292 117 00052940 I_CryptUninstallAsn1Module - 1293 118 000B7670 I_CryptUninstallOssGlobal - 1294 119 000B7650 I_CryptUnregisterSmartCardStore - 1295 11A 00058340 I_CryptWalkAllLruCacheEntries - 1019 11B 0000C0A0 I_PFXImportCertStoreEx - 1296 11C 000CBC20 PFXExportCertStore - 1297 11D 000CBD30 PFXExportCertStore2 - 1298 11E 000CBD50 PFXExportCertStoreEx - 1299 11F 0000D010 PFXImportCertStore - 1300 120 0000C660 PFXIsPFXBlob - 1301 121 000CBF40 PFXVerifyPassword - 1001 0005D750 [NONAME] - 1002 0007A0E0 [NONAME] - 1003 00079C10 [NONAME] - 1004 00079C00 [NONAME] - 1005 00079CA0 [NONAME] - 1006 00079C90 [NONAME] - 1007 00079BB0 [NONAME] - 1008 00079BF0 [NONAME] - 1009 00079C50 [NONAME] - 1010 00079C80 [NONAME] - 1011 00079BA0 [NONAME] - 2000 0000B100 [NONAME] - - Summary - - 7000 .data - 1000 .didat - D000 .pdata - 35000 .rdata - 2000 .reloc - B5000 .rsrc - F1000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\dbghelp.dll - -File Type: DLL - - Section contains the following exports for dbghelp.dll - - 00000000 characteristics - 6270626D time date stamp Mon May 2 15:59:57 2022 - 0.00 version - 1 ordinal base - 232 number of functions - 232 number of names - - ordinal hint RVA name - - 5 0 000E9620 DbgHelpCreateUserDump - 6 1 000E9700 DbgHelpCreateUserDumpW - 7 2 000E2A50 EnumDirTree - 8 3 000E2B70 EnumDirTreeW - 9 4 000DBDD0 EnumerateLoadedModules - 10 5 000DBDD0 EnumerateLoadedModules64 - 11 6 000DBE50 EnumerateLoadedModulesEx - 12 7 000DBED0 EnumerateLoadedModulesExW - 13 8 000DBF50 EnumerateLoadedModulesW64 - 14 9 0000E0C0 ExtensionApiVersion - 15 A 000E2BC0 FindDebugInfoFile - 16 B 000E2BE0 FindDebugInfoFileEx - 17 C 000E2CB0 FindDebugInfoFileExW - 18 D 000E2D00 FindExecutableImage - 19 E 000E2D20 FindExecutableImageEx - 20 F 000E2E20 FindExecutableImageExW - 21 10 000E2E70 FindFileInPath - 22 11 000E2EC0 FindFileInSearchPath - 23 12 000DBFD0 GetSymLoadError - 24 13 000D52A0 GetTimestampForLoadedLibrary - 25 14 000D4E10 ImageDirectoryEntryToData - 26 15 000D4E30 ImageDirectoryEntryToDataEx - 27 16 000D4F50 ImageNtHeader - 28 17 000D4F80 ImageRvaToSection - 29 18 000D4FE0 ImageRvaToVa - 30 19 000E2F00 ImagehlpApiVersion - 31 1A 0000DFB0 ImagehlpApiVersionEx - 32 1B 000E2F10 MakeSureDirectoryPathExists - 33 1C MiniDumpReadDumpStream (forwarded to dbgcore.MiniDumpReadDumpStream) - 34 1D MiniDumpWriteDump (forwarded to dbgcore.MiniDumpWriteDump) - 35 1E 000EF2D0 RangeMapAddPeImageSections - 36 1F 000EF3C0 RangeMapCreate - 37 20 000EF420 RangeMapFree - 38 21 000EF440 RangeMapRead - 39 22 000EF4E0 RangeMapRemove - 40 23 000EF530 RangeMapWrite - 41 24 0000DEC0 RemoveInvalidModuleList - 42 25 0000DBF0 ReportSymbolLoadSummary - 43 26 000E3080 SearchTreeForFile - 44 27 000E30B0 SearchTreeForFileW - 45 28 0000E0B0 SetCheckUserInterruptShared - 46 29 000DBFE0 SetSymLoadError - 47 2A 000EE730 StackWalk - 48 2B 000EE730 StackWalk64 - 49 2C 00007030 StackWalkEx - 50 2D 000DBFF0 SymAddSourceStream - 51 2E 000DC000 SymAddSourceStreamA - 52 2F 000DC070 SymAddSourceStreamW - 53 30 000DC1E0 SymAddSymbol - 54 31 000DC260 SymAddSymbolW - 55 32 0000E050 SymAddrIncludeInlineTrace - 56 33 0000DCE0 SymCleanup - 57 34 000DC350 SymCompareInlineTrace - 58 35 000DC880 SymDeleteSymbol - 59 36 000DC8F0 SymDeleteSymbolW - 60 37 000DC9C0 SymEnumLines - 61 38 000DCA90 SymEnumLinesW - 62 39 000DCB40 SymEnumProcesses - 63 3A 000DCBE0 SymEnumSourceFileTokens - 64 3B 000DCC80 SymEnumSourceFiles - 65 3C 000DCD30 SymEnumSourceFilesW - 66 3D 000DCDD0 SymEnumSourceLines - 67 3E 000DCEC0 SymEnumSourceLinesW - 68 3F 000DCF80 SymEnumSym - 69 40 000DCFB0 SymEnumSymbols - 70 41 000DCFE0 SymEnumSymbolsEx - 71 42 000DD090 SymEnumSymbolsExW - 72 43 000DD130 SymEnumSymbolsForAddr - 73 44 000DD250 SymEnumSymbolsForAddrW - 74 45 000DD370 SymEnumSymbolsW - 75 46 000DD3A0 SymEnumTypes - 76 47 000DD420 SymEnumTypesByName - 77 48 000DD500 SymEnumTypesByNameW - 78 49 000DD590 SymEnumTypesW - 79 4A 000DD620 SymEnumerateModules - 80 4B 000DD620 SymEnumerateModules64 - 81 4C 000DD690 SymEnumerateModulesW64 - 82 4D 000DD700 SymEnumerateSymbols - 83 4E 000DD700 SymEnumerateSymbols64 - 84 4F 000DD780 SymEnumerateSymbolsW - 85 50 000DD780 SymEnumerateSymbolsW64 - 86 51 000E30E0 SymFindDebugInfoFile - 87 52 000E31D0 SymFindDebugInfoFileW - 88 53 000E3250 SymFindExecutableImage - 89 54 000E3340 SymFindExecutableImageW - 90 55 000E33C0 SymFindFileInPath - 91 56 000E34F0 SymFindFileInPathW - 1 57 000DB350 SymFreeDiaString - 92 58 000DD800 SymFromAddr - 93 59 000DD820 SymFromAddrW - 94 5A 000DD840 SymFromIndex - 95 5B 000DD8B0 SymFromIndexW - 96 5C 000DD990 SymFromInlineContext - 97 5D 000DD9E0 SymFromInlineContextW - 98 5E 000DDA30 SymFromName - 99 5F 000DDAB0 SymFromNameW - 100 60 000DDAE0 SymFromToken - 101 61 000DDB90 SymFromTokenW - 102 62 00009D10 SymFunctionTableAccess - 103 63 00009D10 SymFunctionTableAccess64 - 104 64 00009D30 SymFunctionTableAccess64AccessRoutines - 2 65 000DB360 SymGetDiaSession - 105 66 000D5FE0 SymGetFileLineOffsets64 - 106 67 000DDC80 SymGetHomeDirectory - 107 68 000DDD00 SymGetHomeDirectoryW - 108 69 000DDDC0 SymGetLineFromAddr - 109 6A 000DDDC0 SymGetLineFromAddr64 - 110 6B 000DDDF0 SymGetLineFromAddrW64 - 111 6C 000DDE20 SymGetLineFromInlineContext - 112 6D 000DDEF0 SymGetLineFromInlineContextW - 113 6E 000DE050 SymGetLineFromName - 114 6F 000DE050 SymGetLineFromName64 - 115 70 000DE120 SymGetLineFromNameW64 - 116 71 000DE6C0 SymGetLineNext - 117 72 000DE6C0 SymGetLineNext64 - 118 73 000DE730 SymGetLineNextW64 - 119 74 000DE750 SymGetLinePrev - 120 75 000DE750 SymGetLinePrev64 - 121 76 000DE7C0 SymGetLinePrevW64 - 122 77 000DE7D0 SymGetModuleBase - 123 78 000DE7D0 SymGetModuleBase64 - 124 79 000DE830 SymGetModuleInfo - 125 7A 000DE830 SymGetModuleInfo64 - 126 7B 0000AED0 SymGetModuleInfoW - 127 7C 0000AED0 SymGetModuleInfoW64 - 3 7D 000DB390 SymGetOmapBlockBase - 128 7E 000DE8D0 SymGetOmaps - 129 7F 0000F1C0 SymGetOptions - 130 80 000DE9B0 SymGetScope - 131 81 000DEA30 SymGetScopeW - 132 82 000DEB40 SymGetSearchPath - 133 83 000DEBC0 SymGetSearchPathW - 134 84 000DEC20 SymGetSourceFile - 135 85 000DECA0 SymGetSourceFileFromToken - 136 86 000DED50 SymGetSourceFileFromTokenW - 137 87 000DEDC0 SymGetSourceFileToken - 138 88 000DEE30 SymGetSourceFileTokenW - 139 89 000DEEF0 SymGetSourceFileW - 140 8A 000DEF70 SymGetSourceVarFromToken - 141 8B 000DF040 SymGetSourceVarFromTokenW - 142 8C 000DF0F0 SymGetSymFromAddr - 143 8D 000DF0F0 SymGetSymFromAddr64 - 144 8E 000DF130 SymGetSymFromName - 145 8F 000DF130 SymGetSymFromName64 - 146 90 000DF1A0 SymGetSymNext - 147 91 000DF1A0 SymGetSymNext64 - 148 92 000DF1C0 SymGetSymPrev - 149 93 000DF1C0 SymGetSymPrev64 - 150 94 000E80D0 SymGetSymbolFile - 151 95 000E8200 SymGetSymbolFileW - 152 96 000DF1D0 SymGetTypeFromName - 153 97 000DF280 SymGetTypeFromNameW - 154 98 000DF3E0 SymGetTypeInfo - 155 99 000DF420 SymGetTypeInfoEx - 156 9A 000DF450 SymGetUnwindInfo - 157 9B 0000F250 SymInitialize - 158 9C 0000E120 SymInitializeW - 159 9D 000DF5F0 SymLoadModule - 160 9E 000DF5F0 SymLoadModule64 - 161 9F 000DF630 SymLoadModuleEx - 162 A0 0000B500 SymLoadModuleExW - 163 A1 000DF710 SymMatchFileName - 164 A2 000DF810 SymMatchFileNameW - 165 A3 000DF8F0 SymMatchString - 166 A4 000DF930 SymMatchStringA - 167 A5 000DF940 SymMatchStringW - 168 A6 000DF980 SymNext - 169 A7 000DFA20 SymNextW - 170 A8 000DFA40 SymPrev - 171 A9 000DFAE0 SymPrevW - 172 AA 000DFAF0 SymQueryInlineTrace - 173 AB 000DFE00 SymRefreshModuleList - 174 AC 000DFE70 SymRegisterCallback - 175 AD 000DFE70 SymRegisterCallback64 - 176 AE 0000DE40 SymRegisterCallbackW64 - 177 AF 0000DF40 SymRegisterFunctionEntryCallback - 178 B0 0000DF40 SymRegisterFunctionEntryCallback64 - 179 B1 000DFEE0 SymSearch - 180 B2 000DFFB0 SymSearchW - 181 B3 000E0070 SymSetContext - 182 B4 000E0120 SymSetHomeDirectory - 183 B5 000E01C0 SymSetHomeDirectoryW - 184 B6 0000E930 SymSetOptions - 185 B7 000E0240 SymSetParentWindow - 186 B8 000E0270 SymSetScopeFromAddr - 187 B9 000E0280 SymSetScopeFromIndex - 188 BA 0000DAC0 SymSetScopeFromInlineContext - 189 BB 000E0340 SymSetSearchPath - 190 BC 0000E380 SymSetSearchPathW - 191 BD 000E86A0 SymSrvDeltaName - 192 BE 000E8770 SymSrvDeltaNameW - 193 BF 000E8920 SymSrvGetFileIndexInfo - 194 C0 000E89F0 SymSrvGetFileIndexInfoW - 195 C1 000E8B20 SymSrvGetFileIndexString - 196 C2 000E8BE0 SymSrvGetFileIndexStringW - 197 C3 000E8CB0 SymSrvGetFileIndexes - 198 C4 000E8D20 SymSrvGetFileIndexesW - 199 C5 000E8DE0 SymSrvGetSupplement - 200 C6 000E8EA0 SymSrvGetSupplementW - 201 C7 000E8FB0 SymSrvIsStore - 202 C8 000E8FF0 SymSrvIsStoreW - 203 C9 000E90E0 SymSrvStoreFile - 204 CA 000E9180 SymSrvStoreFileW - 205 CB 000E9240 SymSrvStoreSupplement - 206 CC 000E9300 SymSrvStoreSupplementW - 207 CD 000E0380 SymUnDName - 208 CE 000E0380 SymUnDName64 - 209 CF 00009FD0 SymUnloadModule - 210 D0 00009FD0 SymUnloadModule64 - 211 D1 000E03D0 UnDecorateSymbolName - 212 D2 000E0460 UnDecorateSymbolNameW - 213 D3 0000DFF0 WinDbgExtensionDllInit - 4 D4 000CE2A0 _EFN_DumpImage - 214 D5 000D2E10 block - 215 D6 000D3010 chksym - 216 D7 000E0510 dbghelp - 217 D8 000D3210 dh - 218 D9 000D3220 fptr - 219 DA 000D32B0 homedir - 220 DB 000D3410 inlinedbg - 221 DC 000D3490 itoldyouso - 222 DD 000D3690 lmi - 223 DE 000D39C0 lminfo - 224 DF 000D3C10 omap - 225 E0 000D3E50 optdbgdump - 226 E1 000D3FC0 optdbgdumpaddr - 227 E2 000D4150 srcfiles - 228 E3 000D42A0 stack_force_ebp - 229 E4 000D44A0 stackdbg - 230 E5 000D46C0 sym - 231 E6 000D4840 symsrv - 232 E7 000D48B0 vc7fpo - - Summary - - 1F000 .data - 1000 .didat - 3000 .mrdata - 10000 .pdata - 48000 .rdata - 5000 .reloc - 1000 .rsrc - 108000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\dhcpcsvc.dll - -File Type: DLL - - Section contains the following exports for dhcpcsvc.DLL - - 00000000 characteristics - 633AE20A time date stamp Mon Oct 3 06:22:18 2022 - 0.00 version - 1 ordinal base - 67 number of functions - 67 number of names - - ordinal hint RVA name - - 1 0 000033E0 DhcpAcquireParameters - 2 1 00003510 DhcpAcquireParametersByBroadcast - 3 2 000026D0 DhcpCApiCleanup - 4 3 00003640 DhcpCApiInitialize - 5 4 00003660 DhcpClient_Generalize - 6 5 00003830 DhcpDeRegisterConnectionStateNotification - 7 6 00003930 DhcpDeRegisterOptions - 8 7 00003940 DhcpDeRegisterParamChange - 9 8 00003A80 DhcpDelPersistentRequestParams - 10 9 00003DC0 DhcpEnableDhcp - 11 A 00004080 DhcpEnableTracing - 12 B 0000A490 DhcpEnumClasses - 13 C 00001F90 DhcpEnumInterfaces - 14 D 00004110 DhcpFallbackRefreshParams - 15 E 000015C0 DhcpFreeEnumeratedInterfaces - 16 F 00002280 DhcpFreeLeaseInfo - 17 10 00001340 DhcpFreeLeaseInfoArray - 18 11 00004240 DhcpFreeMem - 19 12 00004270 DhcpGetClassId - 20 13 000043F0 DhcpGetClientId - 21 14 00004570 DhcpGetDhcpServicedConnections - 22 15 000047B0 DhcpGetFallbackParams - 23 16 00004890 DhcpGetNotificationStatus - 24 17 00004BC0 DhcpGetOriginalSubnetMask - 25 18 00004CA0 DhcpGetTraceArray - 26 19 0001582C DhcpGlobalIsShuttingDown - 27 1A 00015820 DhcpGlobalServiceSyncEvent - 28 1B 00015818 DhcpGlobalTerminateEvent - 29 1C 0000A680 DhcpHandlePnPEvent - 30 1D 00001010 DhcpIsEnabled - 31 1E 00005130 DhcpLeaseIpAddress - 32 1F 00005170 DhcpLeaseIpAddressEx - 33 20 0000A880 DhcpNotifyConfigChange - 34 21 0000A8C0 DhcpNotifyConfigChangeEx - 35 22 00005570 DhcpNotifyMediaReconnected - 36 23 0000AA50 DhcpOpenGlobalEvent - 37 24 000056A0 DhcpPersistentRequestParams - 38 25 00002110 DhcpQueryLeaseInfo - 39 26 00001C50 DhcpQueryLeaseInfoArray - 40 27 00002030 DhcpQueryLeaseInfoEx - 41 28 00005990 DhcpRegisterConnectionStateNotification - 42 29 00005B60 DhcpRegisterOptions - 43 2A 00005CD0 DhcpRegisterParamChange - 44 2B 00006D30 DhcpReleaseIpAddressLease - 45 2C 00006D50 DhcpReleaseIpAddressLeaseEx - 46 2D 00007100 DhcpReleaseParameters - 47 2E 00007230 DhcpRemoveDNSRegistrations - 48 2F 00007330 DhcpRenewIpAddressLease - 49 30 00007360 DhcpRenewIpAddressLeaseEx - 50 31 00007750 DhcpRequestCachedParams - 51 32 00007A90 DhcpRequestOptions - 52 33 000017F0 DhcpRequestParams - 53 34 00008050 DhcpSetClassId - 54 35 00008260 DhcpSetClientId - 55 36 00008430 DhcpSetFallbackParams - 56 37 00008600 DhcpSetMSFTVendorSpecificOptions - 57 38 000088D0 DhcpStaticRefreshParams - 58 39 00008A10 DhcpUndoRequestParams - 59 3A 00008A40 Dhcpv4CheckServerAvailability - 60 3B 00008B60 Dhcpv4EnableDhcpEx - 61 3C 00008C90 McastApiCleanup - 62 3D 00008D50 McastApiStartup - 63 3E 00008E40 McastEnumerateScopes - 64 3F 000090B0 McastGenUID - 65 40 00009220 McastReleaseAddress - 66 41 00009470 McastRenewAddress - 67 42 000097B0 McastRequestAddress - - Summary - - 1000 .data - 1000 .didat - 1000 .pdata - 8000 .rdata - 1000 .reloc - 1000 .rsrc - C000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\DWrite.dll - -File Type: DLL - - Section contains the following exports for DWrite.dll - - 00000000 characteristics - 621EE1CA time date stamp Tue Mar 1 19:17:30 2022 - 0.00 version - 1 ordinal base - 1 number of functions - 1 number of names - - ordinal hint RVA name - - 1 0 0006A440 DWriteCreateFactory - - Summary - - 8000 .data - 1000 .didat - 13000 .pdata - A9000 .rdata - 2000 .reloc - 3C000 .rsrc - 153000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\IPHLPAPI.DLL - -File Type: DLL - - Section contains the following exports for IPHLPAPI.DLL - - 00000000 characteristics - 559F3036 time date stamp Thu Jul 9 19:38:46 2015 - 0.00 version - 1 ordinal base - 277 number of functions - 277 number of names - - ordinal hint RVA name - - 1 0 0001E0D0 AddIPAddress - 2 1 0001C5B0 AllocateAndGetInterfaceInfoFromStack - 3 2 0001D5F0 AllocateAndGetIpAddrTableFromStack - 4 3 0000B0C0 CancelIPChangeNotify - 5 4 0000A280 CancelMibChangeNotify2 - 6 5 00022FE0 CloseCompartment - 7 6 0001D620 CloseGetIPPhysicalInterfaceForDestination - 8 7 000237D0 ConvertCompartmentGuidToId - 9 8 00023860 ConvertCompartmentIdToGuid - 10 9 0000A820 ConvertGuidToStringA - 11 A 000086C0 ConvertGuidToStringW - 12 B 00023960 ConvertInterfaceAliasToLuid - 13 C 000036F0 ConvertInterfaceGuidToLuid - 14 D 00003810 ConvertInterfaceIndexToLuid - 15 E 0000C490 ConvertInterfaceLuidToAlias - 16 F 000091B0 ConvertInterfaceLuidToGuid - 17 10 00008640 ConvertInterfaceLuidToIndex - 18 11 00023AF0 ConvertInterfaceLuidToNameA - 19 12 00003D70 ConvertInterfaceLuidToNameW - 20 13 00023BA0 ConvertInterfaceNameToLuidA - 21 14 00004100 ConvertInterfaceNameToLuidW - 22 15 00023C80 ConvertInterfacePhysicalAddressToLuid - 23 16 00022DA0 ConvertIpv4MaskToLength - 24 17 00001F80 ConvertLengthToIpv4Mask - 25 18 0001C7B0 ConvertRemoteInterfaceAliasToLuid - 26 19 0001C950 ConvertRemoteInterfaceGuidToLuid - 27 1A 0001CAA0 ConvertRemoteInterfaceIndexToLuid - 28 1B 0001CB10 ConvertRemoteInterfaceLuidToAlias - 29 1C 0001CC50 ConvertRemoteInterfaceLuidToGuid - 30 1D 0001CCD0 ConvertRemoteInterfaceLuidToIndex - 31 1E 0001CD50 ConvertStringToGuidA - 32 1F 0000ECA0 ConvertStringToGuidW - 33 20 00023E00 ConvertStringToInterfacePhysicalAddress - 34 21 00023F80 CreateAnycastIpAddressEntry - 35 22 00022FF0 CreateCompartment - 36 23 0001E220 CreateIpForwardEntry - 37 24 00025180 CreateIpForwardEntry2 - 38 25 0001E230 CreateIpNetEntry - 39 26 00025940 CreateIpNetEntry2 - 40 27 000209F0 CreatePersistentTcpPortReservation - 41 28 00020A30 CreatePersistentUdpPortReservation - 42 29 0001E500 CreateProxyArpEntry - 43 2A 00026080 CreateSortedAddressPairs - 44 2B 00023FA0 CreateUnicastIpAddressEntry - 45 2C 00023FC0 DeleteAnycastIpAddressEntry - 46 2D 00023170 DeleteCompartment - 47 2E 0001E520 DeleteIPAddress - 48 2F 0001E610 DeleteIpForwardEntry - 49 30 000251A0 DeleteIpForwardEntry2 - 50 31 0001E6E0 DeleteIpNetEntry - 51 32 00025960 DeleteIpNetEntry2 - 52 33 00020A70 DeletePersistentTcpPortReservation - 53 34 00020AB0 DeletePersistentUdpPortReservation - 54 35 0001E790 DeleteProxyArpEntry - 55 36 00023FE0 DeleteUnicastIpAddressEntry - 56 37 00010420 DisableMediaSense - 57 38 0001E7B0 EnableRouter - 58 39 0001E810 FlushIpNetTable - 59 3A 00025980 FlushIpNetTable2 - 60 3B 000263A0 FlushIpPathTable - 61 3C 0000A320 FreeMibTable - 62 3D 0001CDE0 GetAdapterIndex - 63 3E 0001CE70 GetAdapterOrderMap - 64 3F 000028D0 GetAdaptersAddresses - 65 40 00001DA0 GetAdaptersInfo - 66 41 00024000 GetAnycastIpAddressEntry - 67 42 00024020 GetAnycastIpAddressTable - 68 43 00009000 GetBestInterface - 69 44 00008FF0 GetBestInterfaceEx - 70 45 0001E890 GetBestRoute - 71 46 00009500 GetBestRoute2 - 72 47 000069D0 GetCurrentThreadCompartmentId - 73 48 00003BC0 GetCurrentThreadCompartmentScope - 74 49 0000B2B0 GetExtendedTcpTable - 75 4A 0000C1A0 GetExtendedUdpTable - 76 4B 0001CF90 GetFriendlyIfIndex - 77 4C 0001EA30 GetIcmpStatistics - 78 4D 0000EF90 GetIcmpStatisticsEx - 79 4E 00008EC0 GetIfEntry - 80 4F 000042E0 GetIfEntry2 - 81 50 000024D0 GetIfStackTable - 82 51 0001CFA0 GetIfTable - 83 52 00003880 GetIfTable2 - 84 53 00001610 GetIfTable2Ex - 85 54 0001D150 GetInterfaceInfo - 86 55 00026930 GetInvertedIfStackTable - 87 56 0001EB50 GetIpAddrTable - 88 57 0001C4E0 GetIpErrorString - 89 58 000251C0 GetIpForwardEntry2 - 90 59 0001ED50 GetIpForwardTable - 91 5A 0000AAD0 GetIpForwardTable2 - 92 5B 0000A260 GetIpInterfaceEntry - 93 5C 0000AAF0 GetIpInterfaceTable - 94 5D 0000A800 GetIpNetEntry2 - 95 5E 0001F0B0 GetIpNetTable - 96 5F 00025A60 GetIpNetTable2 - 97 60 00026940 GetIpNetworkConnectionBandwidthEstimates - 98 61 00026490 GetIpPathEntry - 99 62 00026680 GetIpPathTable - 100 63 0001F2E0 GetIpStatistics - 101 64 00003980 GetIpStatisticsEx - 102 65 000231C0 GetJobCompartmentId - 103 66 00024040 GetMulticastIpAddressEntry - 104 67 00024060 GetMulticastIpAddressTable - 105 68 00023220 GetNetworkInformation - 106 69 000011F0 GetNetworkParams - 107 6A 0000EF00 GetNumberOfInterfaces - 108 6B 0001BC90 GetOwnerModuleFromPidAndInfo - 109 6C 00021490 GetOwnerModuleFromTcp6Entry - 110 6D 000214D0 GetOwnerModuleFromTcpEntry - 111 6E 000223D0 GetOwnerModuleFromUdp6Entry - 112 6F 00022410 GetOwnerModuleFromUdpEntry - 113 70 0001C370 GetPerAdapterInfo - 114 71 0000B8E0 GetPerTcp6ConnectionEStats - 115 72 00021510 GetPerTcp6ConnectionStats - 116 73 0000BB20 GetPerTcpConnectionEStats - 117 74 000215D0 GetPerTcpConnectionStats - 118 75 0001FC70 GetRTTAndHopCount - 119 76 000038A0 GetSessionCompartmentId - 120 77 00021670 GetTcp6Table - 121 78 000218C0 GetTcp6Table2 - 122 79 00021E30 GetTcpStatistics - 123 7A 0000F0D0 GetTcpStatisticsEx - 124 7B 00021E40 GetTcpTable - 125 7C 00021E60 GetTcpTable2 - 126 7D 00026F80 GetTeredoPort - 127 7E 00022450 GetUdp6Table - 128 7F 000228C0 GetUdpStatistics - 129 80 0000F210 GetUdpStatisticsEx - 130 81 000228D0 GetUdpTable - 131 82 0001F2F0 GetUniDirectionalAdapterInfo - 132 83 0000A510 GetUnicastIpAddressEntry - 133 84 000064E0 GetUnicastIpAddressTable - 134 85 00022B40 GetWPAOACSupportLevel - 135 86 0000AE90 Icmp6CreateFile - 136 87 00001A50 Icmp6ParseReplies - 137 88 000017A0 Icmp6SendEcho2 - 138 89 00001120 IcmpCloseHandle - 139 8A 0001FE90 IcmpCreateFile - 140 8B 000200E0 IcmpParseReplies - 141 8C 00020130 IcmpSendEcho - 142 8D 00020190 IcmpSendEcho2 - 143 8E 00020200 IcmpSendEcho2Ex - 144 8F 00023310 InitializeCompartmentEntry - 145 90 0000EE70 InitializeIpForwardEntry - 146 91 00026A40 InitializeIpInterfaceEntry - 147 92 00024080 InitializeUnicastIpAddressEntry - 148 93 00026BC0 InternalCleanupPersistentStore - 149 94 000241F0 InternalCreateAnycastIpAddressEntry - 150 95 0001D740 InternalCreateIpForwardEntry - 151 96 000253B0 InternalCreateIpForwardEntry2 - 152 97 0001D760 InternalCreateIpNetEntry - 153 98 00025B90 InternalCreateIpNetEntry2 - 154 99 00024210 InternalCreateUnicastIpAddressEntry - 155 9A 00024230 InternalDeleteAnycastIpAddressEntry - 156 9B 0001D780 InternalDeleteIpForwardEntry - 157 9C 000253D0 InternalDeleteIpForwardEntry2 - 158 9D 0001D790 InternalDeleteIpNetEntry - 159 9E 00025BB0 InternalDeleteIpNetEntry2 - 160 9F 00024250 InternalDeleteUnicastIpAddressEntry - 161 A0 00024270 InternalFindInterfaceByAddress - 162 A1 00024360 InternalGetAnycastIpAddressEntry - 163 A2 00024380 InternalGetAnycastIpAddressTable - 164 A3 0001D7A0 InternalGetBoundTcp6EndpointTable - 165 A4 0001D7E0 InternalGetBoundTcpEndpointTable - 166 A5 00008830 InternalGetForwardIpTable2 - 167 A6 0000A900 InternalGetIPPhysicalInterfaceForDestination - 168 A7 00004B90 InternalGetIfEntry2 - 169 A8 0001D970 InternalGetIfTable - 170 A9 00026C70 InternalGetIfTable2 - 171 AA 0001D9B0 InternalGetIpAddrTable - 172 AB 000253F0 InternalGetIpForwardEntry2 - 173 AC 0001D9F0 InternalGetIpForwardTable - 174 AD 0000A0B0 InternalGetIpInterfaceEntry - 175 AE 00009AE0 InternalGetIpInterfaceTable - 176 AF 0000A600 InternalGetIpNetEntry2 - 177 B0 0001DA30 InternalGetIpNetTable - 178 B1 00025BD0 InternalGetIpNetTable2 - 179 B2 000243A0 InternalGetMulticastIpAddressEntry - 180 B3 000243C0 InternalGetMulticastIpAddressTable - 181 B4 0000C5A0 InternalGetRtcSlotInformation - 182 B5 0001DB50 InternalGetTcp6Table2 - 183 B6 0001DB90 InternalGetTcp6TableWithOwnerModule - 184 B7 0001DBD0 InternalGetTcp6TableWithOwnerPid - 185 B8 0001DC10 InternalGetTcpTable - 186 B9 0001DC50 InternalGetTcpTable2 - 187 BA 0001DC90 InternalGetTcpTableEx - 188 BB 0001DCD0 InternalGetTcpTableWithOwnerModule - 189 BC 0001DD10 InternalGetTcpTableWithOwnerPid - 190 BD 00003130 InternalGetTunnelPhysicalAdapter - 191 BE 0001DD50 InternalGetUdp6TableWithOwnerModule - 192 BF 0001DD90 InternalGetUdp6TableWithOwnerPid - 193 C0 0001DDD0 InternalGetUdpTable - 194 C1 0001DE10 InternalGetUdpTableEx - 195 C2 0001DE50 InternalGetUdpTableWithOwnerModule - 196 C3 0001DE90 InternalGetUdpTableWithOwnerPid - 197 C4 000243E0 InternalGetUnicastIpAddressEntry - 198 C5 000243F0 InternalGetUnicastIpAddressTable - 199 C6 0001DED0 InternalIcmpCreateFileEx - 200 C7 0001DF00 InternalSetIfEntry - 201 C8 0001DF10 InternalSetIpForwardEntry - 202 C9 00025670 InternalSetIpForwardEntry2 - 203 CA 00026C80 InternalSetIpInterfaceEntry - 204 CB 0001DF30 InternalSetIpNetEntry - 205 CC 00025E90 InternalSetIpNetEntry2 - 206 CD 0001DF50 InternalSetIpStats - 207 CE 0001DF70 InternalSetTcpEntry - 208 CF 00027000 InternalSetTeredoPort - 209 D0 000246D0 InternalSetUnicastIpAddressEntry - 210 D1 0001F410 IpReleaseAddress - 211 D2 0001F460 IpRenewAddress - 212 D3 00020BD0 LookupPersistentTcpPortReservation - 213 D4 00020C10 LookupPersistentUdpPortReservation - 214 D5 0001F890 NTPTimeToNTFileTime - 215 D6 0001F920 NTTimeToNTPTime - 216 D7 0001D360 NhGetGuidFromInterfaceName - 217 D8 0001D390 NhGetInterfaceDescriptionFromGuid - 218 D9 0000C430 NhGetInterfaceNameFromDeviceGuid - 219 DA 0000C430 NhGetInterfaceNameFromGuid - 220 DB 0001C5B0 NhpAllocateAndGetInterfaceInfoFromStack - 221 DC 0000AE60 NotifyAddrChange - 222 DD 000233D0 NotifyCompartmentChange - 223 DE 00009870 NotifyIpInterfaceChange - 224 DF 0001F4B0 NotifyRouteChange - 225 E0 0000EB30 NotifyRouteChange2 - 226 E1 00024F40 NotifyStableUnicastIpAddressTable - 227 E2 000270C0 NotifyTeredoPortChange - 228 E3 00009AB0 NotifyUnicastIpAddressChange - 229 E4 00023480 OpenCompartment - 230 E5 0000F300 ParseNetworkString - 231 E6 0001FC60 PfAddFiltersToInterface - 232 E7 0001FC60 PfAddGlobalFilterToInterface - 233 E8 0001FC60 PfBindInterfaceToIPAddress - 234 E9 0001FC60 PfBindInterfaceToIndex - 235 EA 0001FC60 PfCreateInterface - 236 EB 0001FC60 PfDeleteInterface - 237 EC 0001FC60 PfDeleteLog - 238 ED 0001FC60 PfGetInterfaceStatistics - 239 EE 0001FC60 PfMakeLog - 240 EF 0001FC60 PfRebindFilters - 241 F0 0001FC60 PfRemoveFilterHandles - 242 F1 0001FC60 PfRemoveFiltersFromInterface - 243 F2 0001FC60 PfRemoveGlobalFilterFromInterface - 244 F3 0001FC60 PfSetLogBuffer - 245 F4 0001FC60 PfTestPacket - 246 F5 0001FC60 PfUnBindInterface - 247 F6 0000ED00 ResolveIpNetEntry2 - 248 F7 0001F4E0 ResolveNeighbor - 249 F8 00010420 RestoreMediaSense - 250 F9 0001F4F0 SendARP - 251 FA 0001DF80 SetAdapterIpAddress - 252 FB 000235E0 SetCurrentThreadCompartmentId - 253 FC 00009D60 SetCurrentThreadCompartmentScope - 254 FD 0001D4B0 SetIfEntry - 255 FE 0001F5D0 SetIpForwardEntry - 256 FF 00025920 SetIpForwardEntry2 - 257 100 00026F60 SetIpInterfaceEntry - 258 101 0001F5E0 SetIpNetEntry - 259 102 00026060 SetIpNetEntry2 - 260 103 0001F5F0 SetIpStatistics - 261 104 0001F600 SetIpStatisticsEx - 262 105 0001F6E0 SetIpTTL - 263 106 00023630 SetJobCompartmentId - 264 107 00023690 SetNetworkInformation - 265 108 0000B0F0 SetPerTcp6ConnectionEStats - 266 109 000221B0 SetPerTcp6ConnectionStats - 267 10A 0000B1E0 SetPerTcpConnectionEStats - 268 10B 00022250 SetPerTcpConnectionStats - 269 10C 00023770 SetSessionCompartmentId - 270 10D 000222E0 SetTcpEntry - 271 10E 00025160 SetUnicastIpAddressEntry - 272 10F 0001F810 UnenableRouter - 273 110 00020690 do_echo_rep - 274 111 00020860 do_echo_req - 275 112 00023EE0 if_indextoname - 276 113 00023F30 if_nametoindex - 277 114 000209B0 register_icmp - - Summary - - 1000 .data - 1000 .didat - 2000 .pdata - A000 .rdata - 1000 .reloc - 1000 .rsrc - 27000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\kernel32.dll - -File Type: DLL - - Section contains the following exports for KERNEL32.dll - - 00000000 characteristics - 64099EB2 time date stamp Thu Mar 9 00:54:10 2023 - 0.00 version - 1 ordinal base - 1596 number of functions - 1596 number of names - - ordinal hint RVA name - - 1 0 AcquireSRWLockExclusive (forwarded to NTDLL.RtlAcquireSRWLockExclusive) - 2 1 AcquireSRWLockShared (forwarded to NTDLL.RtlAcquireSRWLockShared) - 3 2 00021980 ActivateActCtx - 4 3 00019510 ActivateActCtxWorker - 5 4 00024640 AddAtomA - 6 5 00014870 AddAtomW - 7 6 000640D0 AddConsoleAliasA - 8 7 00064230 AddConsoleAliasW - 9 8 AddDllDirectory (forwarded to api-ms-win-core-libraryloader-l1-1-0.AddDllDirectory) - 10 9 00043200 AddIntegrityLabelToBoundaryDescriptor - 11 A 00039410 AddLocalAlternateComputerNameA - 12 B 00039470 AddLocalAlternateComputerNameW - 13 C 000243C0 AddRefActCtx - 14 D 0001DD10 AddRefActCtxWorker - 15 E 00041F00 AddResourceAttributeAce - 16 F 00020D10 AddSIDToBoundaryDescriptor - 17 10 00041F10 AddScopedPolicyIDAce - 18 11 0003F0C0 AddSecureMemoryCacheCallback - 19 12 AddVectoredContinueHandler (forwarded to NTDLL.RtlAddVectoredContinueHandler) - 20 13 AddVectoredExceptionHandler (forwarded to NTDLL.RtlAddVectoredExceptionHandler) - 21 14 00018010 AdjustCalendarDate - 22 15 00026A20 AllocConsole - 23 16 00041F30 AllocateUserPhysicalPages - 24 17 00041F20 AllocateUserPhysicalPagesNuma - 25 18 AppXGetOSMaxVersionTested (forwarded to kernelbase.AppXGetOSMaxVersionTested) - 26 19 0004E830 ApplicationRecoveryFinished - 27 1A 0004E840 ApplicationRecoveryInProgress - 28 1B 00020C00 AreFileApisANSI - 29 1C 00016860 AssignProcessToJobObject - 30 1D 00026B00 AttachConsole - 31 1E 00037110 BackupRead - 32 1F 00037FD0 BackupSeek - 33 20 000382A0 BackupWrite - 34 21 00041FA0 BaseCheckAppcompatCache - 35 22 00041F40 BaseCheckAppcompatCacheEx - 36 23 00023920 BaseCheckAppcompatCacheExWorker - 37 24 00023920 BaseCheckAppcompatCacheWorker - 38 25 00019F70 BaseCheckElevation - 39 26 00041FB0 BaseCleanupAppcompatCacheSupport - 40 27 00024D30 BaseCleanupAppcompatCacheSupportWorker - 41 28 000487B0 BaseDestroyVDMEnvironment - 42 29 00012240 BaseDllReadWriteIniFile - 43 2A 00041FC0 BaseDumpAppcompatCache - 44 2B 000271A0 BaseDumpAppcompatCacheWorker - 45 2C 0001F160 BaseElevationPostProcessing - 46 2D 00041FD0 BaseFlushAppcompatCache - 47 2E 0006AD20 BaseFlushAppcompatCacheWorker - 48 2F 0001DC40 BaseFormatObjectAttributes - 49 30 000627D0 BaseFormatTimeOut - 50 31 00023680 BaseFreeAppCompatDataForProcessWorker - 51 32 0001FDB0 BaseGenerateAppCompatData - 52 33 00041FE0 BaseGetNamedObjectDirectory - 53 34 00041FF0 BaseInitAppcompatCacheSupport - 54 35 00024D30 BaseInitAppcompatCacheSupportWorker - 55 36 00023920 BaseIsAppcompatInfrastructureDisabled - 56 37 00023920 BaseIsAppcompatInfrastructureDisabledWorker - 57 38 000232D0 BaseIsDosApplication - 58 39 0006ADB0 BaseQueryModuleData - 59 3A 00020D50 BaseReadAppCompatDataForProcessWorker - 60 3B 00015000 BaseSetLastNTError - 61 3C 000110E0 BaseThreadInitThunk - 62 3D 00042000 BaseUpdateAppcompatCache - 63 3E 0006AD80 BaseUpdateAppcompatCacheWorker - 64 3F 00048AC0 BaseUpdateVDMEntry - 65 40 00062860 BaseVerifyUnicodeString - 66 41 0003C960 BaseWriteErrorElevationRequiredEvent - 67 42 00016B60 Basep8BitStringToDynamicUnicodeString - 68 43 000628C0 BasepAllocateActivationContextActivationBlock - 69 44 00062800 BasepAnsiStringToDynamicUnicodeString - 70 45 0001B930 BasepAppContainerEnvironmentExtension - 71 46 00023110 BasepAppXExtension - 72 47 0001A7A0 BasepCheckAppCompat - 73 48 0001F200 BasepCheckWebBladeHashes - 74 49 0001B430 BasepCheckWinSaferRestrictions - 75 4A 0000CFE0 BasepConstructSxsCreateProcessMessage - 76 4B 0001D410 BasepCopyEncryption - 77 4C 00062A30 BasepFreeActivationContextActivationBlock - 78 4D 0001D810 BasepFreeAppCompatData - 79 4E 0000B880 BasepGetAppCompatData - 80 4F 0001C950 BasepGetComputerNameFromNtPath - 81 50 0001A880 BasepGetExeArchType - 82 51 0001D8A0 BasepIsProcessAllowed - 83 52 00016450 BasepMapModuleHandle - 84 53 00011630 BasepNotifyLoadStringResource - 85 54 000239F0 BasepPostSuccessAppXExtension - 86 55 00023150 BasepProcessInvalidImage - 87 56 0000C2D0 BasepQueryAppCompat - 88 57 000239E0 BasepReleaseAppXContext - 89 58 0000A560 BasepReleaseSxsCreateProcessUtilityStruct - 90 59 000219B0 BasepReportFault - 91 5A 00022340 BasepSetFileEncryptionCompression - 92 5B 00039210 Beep - 93 5C 000544B0 BeginUpdateResourceA - 94 5D 00054510 BeginUpdateResourceW - 95 5E 00025A70 BindIoCompletionCallback - 96 5F 0004C260 BuildCommDCBA - 97 60 0004C290 BuildCommDCBAndTimeoutsA - 98 61 0004C2C0 BuildCommDCBAndTimeoutsW - 99 62 0004C330 BuildCommDCBW - 100 63 0003F970 CallNamedPipeA - 101 64 0003FA00 CallNamedPipeW - 102 65 00023A00 CallbackMayRunLong - 103 66 00026950 CalloutOnFiberStack - 104 67 00040B30 CancelDeviceWakeupRequest - 105 68 00023AC0 CancelIo - 106 69 00022FA0 CancelIoEx - 107 6A 00001420 CancelSynchronousIo - 108 6B CancelThreadpoolIo (forwarded to NTDLL.TpCancelAsyncIoOperation) - 109 6C 0004EAC0 CancelTimerQueueTimer - 110 6D 00026120 CancelWaitableTimer - 111 6E CeipIsOptedIn (forwarded to kernelbase.CeipIsOptedIn) - 112 6F 00023AD0 ChangeTimerQueueTimer - 113 70 0003DE80 CheckAllowDecryptedRemoteDestinationPolicy - 114 71 00019E40 CheckElevation - 115 72 0000C5F0 CheckElevationEnabled - 116 73 00043230 CheckForReadOnlyResource - 117 74 00023C30 CheckForReadOnlyResourceFilter - 118 75 00040520 CheckNameLegalDOS8Dot3A - 119 76 000405C0 CheckNameLegalDOS8Dot3W - 120 77 00023CD0 CheckRemoteDebuggerPresent - 121 78 00042010 CheckTokenCapability - 122 79 00042020 CheckTokenMembershipEx - 123 7A 00026800 ClearCommBreak - 124 7B 00026810 ClearCommError - 125 7C 00064B00 CloseConsoleHandle - 126 7D 000260E0 CloseHandle - 127 7E ClosePackageInfo (forwarded to kernelbase.ClosePackageInfo) - 128 7F 00024A20 ClosePrivateNamespace - 129 80 00024D30 CloseProfileUserMapping - 130 81 CloseState (forwarded to kernelbase.CloseState) - 131 82 CloseThreadpool (forwarded to NTDLL.TpReleasePool) - 132 83 CloseThreadpoolCleanupGroup (forwarded to NTDLL.TpReleaseCleanupGroup) - 133 84 CloseThreadpoolCleanupGroupMembers (forwarded to NTDLL.TpReleaseCleanupGroupMembers) - 134 85 CloseThreadpoolIo (forwarded to NTDLL.TpReleaseIoCompletion) - 135 86 CloseThreadpoolTimer (forwarded to NTDLL.TpReleaseTimer) - 136 87 CloseThreadpoolWait (forwarded to NTDLL.TpReleaseWait) - 137 88 CloseThreadpoolWork (forwarded to NTDLL.TpReleaseWork) - 138 89 00022270 CmdBatNotification - 139 8A 00045F60 CommConfigDialogA - 140 8B 00045FF0 CommConfigDialogW - 141 8C 00054DC0 CompareCalendarDates - 142 8D 000262F0 CompareFileTime - 143 8E 000217C0 CompareStringA - 144 8F 00016CA0 CompareStringEx - 145 90 0001C380 CompareStringOrdinal - 146 91 0001E160 CompareStringW - 147 92 00023C20 ConnectNamedPipe - 148 93 00064BD0 ConsoleMenuControl - 149 94 00042030 ContinueDebugEvent - 150 95 00054E70 ConvertCalDateTimeToSystemTime - 151 96 00023B90 ConvertDefaultLocale - 152 97 00026960 ConvertFiberToThread - 153 98 00054F60 ConvertNLSDayOfWeekToWin32DayOfWeek - 154 99 000182A0 ConvertSystemTimeToCalDateTime - 155 9A 00026970 ConvertThreadToFiber - 156 9B 00026980 ConvertThreadToFiberEx - 157 9C 00042040 CopyContext - 158 9D 00042050 CopyFile2 - 159 9E 0003DF50 CopyFileA - 160 9F 0003DFE0 CopyFileExA - 161 A0 000230F0 CopyFileExW - 162 A1 0003E090 CopyFileTransactedA - 163 A2 00025910 CopyFileTransactedW - 164 A3 00026940 CopyFileW - 165 A4 0003AA80 CopyLZFile - 166 A5 00023FD0 CreateActCtxA - 167 A6 000239D0 CreateActCtxW - 168 A7 00008F00 CreateActCtxWWorker - 169 A8 000433A0 CreateBoundaryDescriptorA - 170 A9 00020D00 CreateBoundaryDescriptorW - 171 AA 00026B10 CreateConsoleScreenBuffer - 172 AB 00026300 CreateDirectoryA - 173 AC 0003AE80 CreateDirectoryExA - 174 AD 00042060 CreateDirectoryExW - 175 AE 0003AF00 CreateDirectoryTransactedA - 176 AF 0003AFA0 CreateDirectoryTransactedW - 177 B0 00026310 CreateDirectoryW - 178 B1 00026130 CreateEventA - 179 B2 00026140 CreateEventExA - 180 B3 00026150 CreateEventExW - 181 B4 00026160 CreateEventW - 182 B5 00026990 CreateFiber - 183 B6 000269A0 CreateFiberEx - 184 B7 00026320 CreateFile2 - 185 B8 00026330 CreateFileA - 186 B9 00016890 CreateFileMappingA - 187 BA CreateFileMappingFromApp (forwarded to api-ms-win-core-memory-l1-1-1.CreateFileMappingFromApp) - 188 BB 0003D000 CreateFileMappingNumaA - 189 BC 00042070 CreateFileMappingNumaW - 190 BD 0001E190 CreateFileMappingW - 191 BE 0003E380 CreateFileTransactedA - 192 BF 0003E440 CreateFileTransactedW - 193 C0 00026340 CreateFileW - 194 C1 00042080 CreateHardLinkA - 195 C2 0004DF80 CreateHardLinkTransactedA - 196 C3 0004E020 CreateHardLinkTransactedW - 197 C4 00024CA0 CreateHardLinkW - 198 C5 0001F1F0 CreateIoCompletionPort - 199 C6 0004DA20 CreateJobObjectA - 200 C7 0001DA20 CreateJobObjectW - 201 C8 0004DA90 CreateJobSet - 202 C9 00016950 CreateMailslotA - 203 CA 000169C0 CreateMailslotW - 204 CB 000230D0 CreateMemoryResourceNotification - 205 CC 00026170 CreateMutexA - 206 CD 00026180 CreateMutexExA - 207 CE 00026190 CreateMutexExW - 208 CF 000261A0 CreateMutexW - 209 D0 0003FB90 CreateNamedPipeA - 210 D1 00023890 CreateNamedPipeW - 211 D2 00023100 CreatePipe - 212 D3 00043400 CreatePrivateNamespaceA - 213 D4 00023420 CreatePrivateNamespaceW - 214 D5 0001DD60 CreateProcessA - 215 D6 00042090 CreateProcessAsUserA - 216 D7 000207C0 CreateProcessAsUserW - 217 D8 00042100 CreateProcessInternalA - 218 D9 00042180 CreateProcessInternalW - 219 DA 0001E6D0 CreateProcessW - 220 DB 00042200 CreateRemoteThread - 221 DC CreateRemoteThreadEx (forwarded to api-ms-win-core-processthreads-l1-1-0.CreateRemoteThreadEx) - 222 DD 00016BC0 CreateSemaphoreA - 223 DE 00016BF0 CreateSemaphoreExA - 224 DF 000261B0 CreateSemaphoreExW - 225 E0 000261C0 CreateSemaphoreW - 226 E1 0003D280 CreateSymbolicLinkA - 227 E2 0003D320 CreateSymbolicLinkTransactedA - 228 E3 0003D3D0 CreateSymbolicLinkTransactedW - 229 E4 00042250 CreateSymbolicLinkW - 230 E5 0004D1B0 CreateTapePartition - 231 E6 0001C4A0 CreateThread - 232 E7 00023930 CreateThreadpool - 233 E8 00023A80 CreateThreadpoolCleanupGroup - 234 E9 00024850 CreateThreadpoolIo - 235 EA 0001F8C0 CreateThreadpoolTimer - 236 EB 000233D0 CreateThreadpoolWait - 237 EC 00023010 CreateThreadpoolWork - 238 ED 00023B70 CreateTimerQueue - 239 EE 0001DD20 CreateTimerQueueTimer - 240 EF 00027400 CreateToolhelp32Snapshot - 241 F0 0004BF30 CreateUmsCompletionList - 242 F1 0004BF60 CreateUmsThreadContext - 243 F2 00024440 CreateWaitableTimerA - 244 F3 00024470 CreateWaitableTimerExA - 245 F4 000261D0 CreateWaitableTimerExW - 246 F5 00023720 CreateWaitableTimerW - 247 F6 CtrlRoutine (forwarded to kernelbase.CtrlRoutine) - 248 F7 00021990 DeactivateActCtx - 249 F8 00019560 DeactivateActCtxWorker - 250 F9 00042270 DebugActiveProcess - 251 FA 00042260 DebugActiveProcessStop - 252 FB 00042280 DebugBreak - 253 FC 0003AD50 DebugBreakProcess - 254 FD 0003AD80 DebugSetProcessKillOnExit - 255 FE DecodePointer (forwarded to NTDLL.RtlDecodePointer) - 256 FF DecodeSystemPointer (forwarded to NTDLL.RtlDecodeSystemPointer) - 257 100 0003C640 DefineDosDeviceA - 258 101 00026350 DefineDosDeviceW - 259 102 00042290 DelayLoadFailureHook - 260 103 000147E0 DeleteAtom - 261 104 00020CF0 DeleteBoundaryDescriptor - 262 105 DeleteCriticalSection (forwarded to NTDLL.RtlDeleteCriticalSection) - 263 106 000269B0 DeleteFiber - 264 107 00026360 DeleteFileA - 265 108 0003D480 DeleteFileTransactedA - 266 109 000259C0 DeleteFileTransactedW - 267 10A 00026370 DeleteFileW - 268 10B DeleteProcThreadAttributeList (forwarded to api-ms-win-core-processthreads-l1-1-0.DeleteProcThreadAttributeList) - 269 10C 000422A0 DeleteSynchronizationBarrier - 270 10D 00023AF0 DeleteTimerQueue - 271 10E 00023BD0 DeleteTimerQueueEx - 272 10F 0001F5E0 DeleteTimerQueueTimer - 273 110 0004BF90 DeleteUmsCompletionList - 274 111 0004BFC0 DeleteUmsThreadContext - 275 112 0004A440 DeleteVolumeMountPointA - 276 113 00062A80 DeleteVolumeMountPointW - 277 114 0004BFF0 DequeueUmsCompletionListItems - 278 115 00017060 DeviceIoControl - 279 116 00022D40 DisableThreadLibraryCalls - 280 117 0004EB40 DisableThreadProfiling - 281 118 DisassociateCurrentThreadFromCallback (forwarded to NTDLL.TpDisassociateCallback) - 282 119 DiscardVirtualMemory (forwarded to api-ms-win-core-memory-l1-1-2.DiscardVirtualMemory) - 283 11A 000243F0 DisconnectNamedPipe - 284 11B 0003A190 DnsHostnameToComputerNameA - 285 11C 000422B0 DnsHostnameToComputerNameExW - 286 11D 0001DF10 DnsHostnameToComputerNameW - 287 11E 00014890 DosDateTimeToFileTime - 288 11F 00041BB0 DosPathToSessionPathA - 289 120 00041D80 DosPathToSessionPathW - 290 121 00064B10 DuplicateConsoleHandle - 291 122 0003E5C0 DuplicateEncryptionInfoFileExt - 292 123 000260F0 DuplicateHandle - 293 124 0004EB70 EnableThreadProfiling - 294 125 EncodePointer (forwarded to NTDLL.RtlEncodePointer) - 295 126 EncodeSystemPointer (forwarded to NTDLL.RtlEncodeSystemPointer) - 296 127 00054720 EndUpdateResourceA - 297 128 00054730 EndUpdateResourceW - 298 129 EnterCriticalSection (forwarded to NTDLL.RtlEnterCriticalSection) - 299 12A 000422C0 EnterSynchronizationBarrier - 300 12B 0004C040 EnterUmsSchedulingMode - 301 12C 000559D0 EnumCalendarInfoA - 302 12D 00055A60 EnumCalendarInfoExA - 303 12E 00021400 EnumCalendarInfoExEx - 304 12F 000422D0 EnumCalendarInfoExW - 305 130 000422E0 EnumCalendarInfoW - 306 131 00055AF0 EnumDateFormatsA - 307 132 00055B50 EnumDateFormatsExA - 308 133 000422F0 EnumDateFormatsExEx - 309 134 00042300 EnumDateFormatsExW - 310 135 00042310 EnumDateFormatsW - 311 136 00055BB0 EnumLanguageGroupLocalesA - 312 137 00042320 EnumLanguageGroupLocalesW - 313 138 0003F5F0 EnumResourceLanguagesA - 314 139 00042330 EnumResourceLanguagesExA - 315 13A 00042350 EnumResourceLanguagesExW - 316 13B 00024D00 EnumResourceLanguagesW - 317 13C 0003F620 EnumResourceNamesA - 318 13D 00042370 EnumResourceNamesExA - 319 13E 00042390 EnumResourceNamesExW - 320 13F 000242A0 EnumResourceNamesW - 321 140 0003F650 EnumResourceTypesA - 322 141 000423B0 EnumResourceTypesExA - 323 142 000423D0 EnumResourceTypesExW - 324 143 0003F670 EnumResourceTypesW - 325 144 00055BD0 EnumSystemCodePagesA - 326 145 000423F0 EnumSystemCodePagesW - 327 146 0003F0F0 EnumSystemFirmwareTables - 328 147 0005EC90 EnumSystemGeoID - 329 148 00055BE0 EnumSystemLanguageGroupsA - 330 149 00024D90 EnumSystemLanguageGroupsW - 331 14A 00042400 EnumSystemLocalesA - 332 14B 00042410 EnumSystemLocalesEx - 333 14C 00042420 EnumSystemLocalesW - 334 14D 00055BF0 EnumTimeFormatsA - 335 14E 00023A60 EnumTimeFormatsEx - 336 14F 00042430 EnumTimeFormatsW - 337 150 00055C60 EnumUILanguagesA - 338 151 00024D60 EnumUILanguagesW - 339 152 0003A270 EnumerateLocalComputerNamesA - 340 153 0003A380 EnumerateLocalComputerNamesW - 341 154 0004D210 EraseTape - 342 155 00026820 EscapeCommFunction - 343 156 0004C070 ExecuteUmsThread - 344 157 0001F700 ExitProcess - 345 158 ExitThread (forwarded to NTDLL.RtlExitUserThread) - 346 159 00048BC0 ExitVDM - 347 15A 00025B70 ExpandEnvironmentStringsA - 348 15B 0001EC10 ExpandEnvironmentStringsW - 349 15C 000642A0 ExpungeConsoleCommandHistoryA - 350 15D 00064320 ExpungeConsoleCommandHistoryW - 351 15E 00042440 FatalAppExitA - 352 15F 00042450 FatalAppExitW - 353 160 0001F700 FatalExit - 354 161 00014DC0 FileTimeToDosDateTime - 355 162 00026380 FileTimeToLocalFileTime - 356 163 000267C0 FileTimeToSystemTime - 357 164 00026B20 FillConsoleOutputAttribute - 358 165 00026B30 FillConsoleOutputCharacterA - 359 166 00026B40 FillConsoleOutputCharacterW - 360 167 0001C4F0 FindActCtxSectionGuid - 361 168 00014E80 FindActCtxSectionGuidWorker - 362 169 0004E6F0 FindActCtxSectionStringA - 363 16A 000230A0 FindActCtxSectionStringW - 364 16B 00014670 FindActCtxSectionStringWWorker - 365 16C 000147C0 FindAtomA - 366 16D 00014C40 FindAtomW - 367 16E 00026390 FindClose - 368 16F 000263A0 FindCloseChangeNotification - 369 170 000263B0 FindFirstChangeNotificationA - 370 171 000263C0 FindFirstChangeNotificationW - 371 172 000263D0 FindFirstFileA - 372 173 000263E0 FindFirstFileExA - 373 174 000263F0 FindFirstFileExW - 374 175 0003C9B0 FindFirstFileNameTransactedW - 375 176 00026400 FindFirstFileNameW - 376 177 0003CA70 FindFirstFileTransactedA - 377 178 0003CB40 FindFirstFileTransactedW - 378 179 00026410 FindFirstFileW - 379 17A 0003CC10 FindFirstStreamTransactedW - 380 17B FindFirstStreamW (forwarded to api-ms-win-core-file-l1-2-2.FindFirstStreamW) - 381 17C 0004A480 FindFirstVolumeA - 382 17D 0004A600 FindFirstVolumeMountPointA - 383 17E 0004A7D0 FindFirstVolumeMountPointW - 384 17F 0001E1E0 FindFirstVolumeW - 385 180 00042460 FindNLSString - 386 181 00018AB0 FindNLSStringEx - 387 182 00026420 FindNextChangeNotification - 388 183 00026430 FindNextFileA - 389 184 00026440 FindNextFileNameW - 390 185 00026450 FindNextFileW - 391 186 FindNextStreamW (forwarded to api-ms-win-core-file-l1-2-2.FindNextStreamW) - 392 187 0004A9F0 FindNextVolumeA - 393 188 0004AB60 FindNextVolumeMountPointA - 394 189 0004B1A0 FindNextVolumeMountPointW - 395 18A 0001E380 FindNextVolumeW - 396 18B FindPackagesByPackageFamily (forwarded to kernelbase.FindPackagesByPackageFamily) - 397 18C 00016270 FindResourceA - 398 18D 00016290 FindResourceExA - 399 18E 0001EEB0 FindResourceExW - 400 18F 00020CE0 FindResourceW - 401 190 00042470 FindStringOrdinal - 402 191 000236C0 FindVolumeClose - 403 192 0004B1B0 FindVolumeMountPointClose - 404 193 00020C40 FlsAlloc - 405 194 00022F60 FlsFree - 406 195 00017050 FlsGetValue - 407 196 0001E180 FlsSetValue - 408 197 00026B50 FlushConsoleInputBuffer - 409 198 00026460 FlushFileBuffers - 410 199 0001C420 FlushInstructionCache - 411 19A FlushProcessWriteBuffers (forwarded to NTDLL.NtFlushProcessWriteBuffers) - 412 19B 00023AE0 FlushViewOfFile - 413 19C 00055C70 FoldStringA - 414 19D 00042480 FoldStringW - 415 19E FormatApplicationUserModelId (forwarded to kernelbase.FormatApplicationUserModelId) - 416 19F 00024340 FormatMessageA - 417 1A0 0001F260 FormatMessageW - 418 1A1 00026B60 FreeConsole - 419 1A2 00021660 FreeEnvironmentStringsA - 420 1A3 0001FD80 FreeEnvironmentStringsW - 421 1A4 0001F380 FreeLibrary - 422 1A5 00021930 FreeLibraryAndExitThread - 423 1A6 FreeLibraryWhenCallbackReturns (forwarded to NTDLL.TpCallbackUnloadDllOnCompletion) - 424 1A7 0004DAC0 FreeMemoryJobObject - 425 1A8 00024A10 FreeResource - 426 1A9 00042490 FreeUserPhysicalPages - 427 1AA 00026B70 GenerateConsoleCtrlEvent - 428 1AB 00019760 GetACP - 429 1AC 0001F720 GetActiveProcessorCount - 430 1AD 000013B0 GetActiveProcessorGroupCount - 431 1AE 000424A0 GetAppContainerAce - 432 1AF 00022F70 GetAppContainerNamedObjectPath - 433 1B0 000424B0 GetApplicationRecoveryCallback - 434 1B1 00020240 GetApplicationRecoveryCallbackWorker - 435 1B2 000424C0 GetApplicationRestartSettings - 436 1B3 000200F0 GetApplicationRestartSettingsWorker - 437 1B4 GetApplicationUserModelId (forwarded to kernelbase.GetApplicationUserModelId) - 438 1B5 0003B160 GetAtomNameA - 439 1B6 00014340 GetAtomNameW - 440 1B7 00048C50 GetBinaryType - 441 1B8 00048C50 GetBinaryTypeA - 442 1B9 00048CA0 GetBinaryTypeW - 443 1BA 0001DE70 GetCPInfo - 444 1BB 00055EE0 GetCPInfoExA - 445 1BC 000424D0 GetCPInfoExW - 446 1BD 000424E0 GetCachedSigningLevel - 447 1BE 00054F90 GetCalendarDateFormat - 448 1BF 000183E0 GetCalendarDateFormatEx - 449 1C0 000181C0 GetCalendarDaysInMonth - 450 1C1 00055240 GetCalendarDifferenceInDays - 451 1C2 00055FB0 GetCalendarInfoA - 452 1C3 000267D0 GetCalendarInfoEx - 453 1C4 000267E0 GetCalendarInfoW - 454 1C5 00055380 GetCalendarMonthsInYear - 455 1C6 00017F50 GetCalendarSupportedDateRange - 456 1C7 00055450 GetCalendarWeekNumber - 457 1C8 0004E790 GetComPlusPackageInstallStatus - 458 1C9 00026830 GetCommConfig - 459 1CA 00026840 GetCommMask - 460 1CB 00026850 GetCommModemStatus - 461 1CC 00026860 GetCommProperties - 462 1CD 00026870 GetCommState - 463 1CE 00026880 GetCommTimeouts - 464 1CF 00020AB0 GetCommandLineA - 465 1D0 00020AC0 GetCommandLineW - 466 1D1 000424F0 GetCompressedFileSizeA - 467 1D2 0003D4D0 GetCompressedFileSizeTransactedA - 468 1D3 0003D530 GetCompressedFileSizeTransactedW - 469 1D4 00023A40 GetCompressedFileSizeW - 470 1D5 0001CAD0 GetComputerNameA - 471 1D6 00042500 GetComputerNameExA - 472 1D7 000234D0 GetComputerNameExW - 473 1D8 0001CC40 GetComputerNameW - 474 1D9 00064330 GetConsoleAliasA - 475 1DA 00064370 GetConsoleAliasExesA - 476 1DB 00064400 GetConsoleAliasExesLengthA - 477 1DC 00064460 GetConsoleAliasExesLengthW - 478 1DD 00064470 GetConsoleAliasExesW - 479 1DE 00064570 GetConsoleAliasW - 480 1DF 000645C0 GetConsoleAliasesA - 481 1E0 00064670 GetConsoleAliasesLengthA - 482 1E1 00064710 GetConsoleAliasesLengthW - 483 1E2 00064720 GetConsoleAliasesW - 484 1E3 00026A30 GetConsoleCP - 485 1E4 000650F0 GetConsoleCharType - 486 1E5 00064730 GetConsoleCommandHistoryA - 487 1E6 000647F0 GetConsoleCommandHistoryLengthA - 488 1E7 00064890 GetConsoleCommandHistoryLengthW - 489 1E8 000648A0 GetConsoleCommandHistoryW - 490 1E9 00026B80 GetConsoleCursorInfo - 491 1EA 00065150 GetConsoleCursorMode - 492 1EB 00064C30 GetConsoleDisplayMode - 493 1EC 00065440 GetConsoleFontInfo - 494 1ED 000654E0 GetConsoleFontSize - 495 1EE 00064C80 GetConsoleHardwareState - 496 1EF 00065530 GetConsoleHistoryInfo - 497 1F0 GetConsoleInputExeNameA (forwarded to kernelbase.GetConsoleInputExeNameA) - 498 1F1 GetConsoleInputExeNameW (forwarded to kernelbase.GetConsoleInputExeNameW) - 499 1F2 00064B60 GetConsoleInputWaitHandle - 500 1F3 000655B0 GetConsoleKeyboardLayoutNameA - 501 1F4 000655D0 GetConsoleKeyboardLayoutNameW - 502 1F5 00026A40 GetConsoleMode - 503 1F6 000651C0 GetConsoleNlsMode - 504 1F7 000648B0 GetConsoleOriginalTitleA - 505 1F8 000648D0 GetConsoleOriginalTitleW - 506 1F9 00026A50 GetConsoleOutputCP - 507 1FA 00065680 GetConsoleProcessList - 508 1FB 00026B90 GetConsoleScreenBufferInfo - 509 1FC 00026BA0 GetConsoleScreenBufferInfoEx - 510 1FD 00065710 GetConsoleSelectionInfo - 511 1FE 000648F0 GetConsoleTitleA - 512 1FF 00026BB0 GetConsoleTitleW - 513 200 00021110 GetConsoleWindow - 514 201 000561E0 GetCurrencyFormatA - 515 202 00042510 GetCurrencyFormatEx - 516 203 00042520 GetCurrencyFormatW - 517 204 000242D0 GetCurrentActCtx - 518 205 0001B180 GetCurrentActCtxWorker - 519 206 GetCurrentApplicationUserModelId (forwarded to kernelbase.GetCurrentApplicationUserModelId) - 520 207 00065770 GetCurrentConsoleFont - 521 208 00021090 GetCurrentConsoleFontEx - 522 209 00023980 GetCurrentDirectoryA - 523 20A 00021800 GetCurrentDirectoryW - 524 20B GetCurrentPackageFamilyName (forwarded to kernelbase.GetCurrentPackageFamilyName) - 525 20C GetCurrentPackageFullName (forwarded to kernelbase.GetCurrentPackageFullName) - 526 20D GetCurrentPackageId (forwarded to kernelbase.GetCurrentPackageId) - 527 20E GetCurrentPackageInfo (forwarded to kernelbase.GetCurrentPackageInfo) - 528 20F GetCurrentPackagePath (forwarded to kernelbase.GetCurrentPackagePath) - 529 210 00018B10 GetCurrentProcess - 530 211 00016D00 GetCurrentProcessId - 531 212 GetCurrentProcessorNumber (forwarded to NTDLL.RtlGetCurrentProcessorNumber) - 532 213 GetCurrentProcessorNumberEx (forwarded to NTDLL.RtlGetCurrentProcessorNumberEx) - 533 214 00017100 GetCurrentThread - 534 215 00016CC0 GetCurrentThreadId - 535 216 GetCurrentThreadStackLimits (forwarded to api-ms-win-core-processthreads-l1-1-0.GetCurrentThreadStackLimits) - 536 217 0004C0A0 GetCurrentUmsThread - 537 218 00024630 GetDateFormatA - 538 219 000244E0 GetDateFormatAWorker - 539 21A 00042530 GetDateFormatEx - 540 21B 000234E0 GetDateFormatW - 541 21C 0000F2D0 GetDateFormatWWorker - 542 21D 00046220 GetDefaultCommConfigA - 543 21E 000462B0 GetDefaultCommConfigW - 544 21F 00040B50 GetDevicePowerState - 545 220 00026470 GetDiskFreeSpaceA - 546 221 00026480 GetDiskFreeSpaceExA - 547 222 00026490 GetDiskFreeSpaceExW - 548 223 000264A0 GetDiskFreeSpaceW - 549 224 0003F690 GetDllDirectoryA - 550 225 00024200 GetDllDirectoryW - 551 226 000264B0 GetDriveTypeA - 552 227 000264C0 GetDriveTypeW - 553 228 00056E40 GetDurationFormat - 554 229 00042540 GetDurationFormatEx - 555 22A 00023B20 GetDynamicTimeZoneInformation - 556 22B 00023C60 GetEnabledXStateFeatures - 557 22C 0003E6A0 GetEncryptedFileVersionExt - 558 22D 00021650 GetEnvironmentStrings - 559 22E 000267F0 GetEnvironmentStringsA - 560 22F 0001FD70 GetEnvironmentStringsW - 561 230 0001F590 GetEnvironmentVariableA - 562 231 0001DD30 GetEnvironmentVariableW - 563 232 00042550 GetEraNameCountedString - 564 233 00023CF0 GetErrorMode - 565 234 0001EC40 GetExitCodeProcess - 566 235 00020CD0 GetExitCodeThread - 567 236 00045410 GetExpandedNameA - 568 237 00045510 GetExpandedNameW - 569 238 000264D0 GetFileAttributesA - 570 239 000264E0 GetFileAttributesExA - 571 23A 000264F0 GetFileAttributesExW - 572 23B 0003D5D0 GetFileAttributesTransactedA - 573 23C 0003D630 GetFileAttributesTransactedW - 574 23D 00026500 GetFileAttributesW - 575 23E 0003CCD0 GetFileBandwidthReservation - 576 23F 00026510 GetFileInformationByHandle - 577 240 00023C00 GetFileInformationByHandleEx - 578 241 00042560 GetFileMUIInfo - 579 242 00022FC0 GetFileMUIPath - 580 243 00026520 GetFileSize - 581 244 00026530 GetFileSizeEx - 582 245 00026540 GetFileTime - 583 246 00026550 GetFileType - 584 247 00026560 GetFinalPathNameByHandleA - 585 248 00026570 GetFinalPathNameByHandleW - 586 249 0003EDB0 GetFirmwareEnvironmentVariableA - 587 24A 0003EDD0 GetFirmwareEnvironmentVariableExA - 588 24B 00024AB0 GetFirmwareEnvironmentVariableExW - 589 24C 00024A90 GetFirmwareEnvironmentVariableW - 590 24D 000392A0 GetFirmwareType - 591 24E 00026580 GetFullPathNameA - 592 24F 0003AB90 GetFullPathNameTransactedA - 593 250 0003AC50 GetFullPathNameTransactedW - 594 251 00026590 GetFullPathNameW - 595 252 00056590 GetGeoInfoA - 596 253 00017120 GetGeoInfoW - 597 254 00026100 GetHandleInformation - 598 255 00042570 GetLargePageMinimum - 599 256 00026BC0 GetLargestConsoleWindowSize - 600 257 00016CF0 GetLastError - 601 258 0001F1D0 GetLocalTime - 602 259 0001EEA0 GetLocaleInfoA - 603 25A 00020CB0 GetLocaleInfoEx - 604 25B 00020BF0 GetLocaleInfoW - 605 25C 00018BA0 GetLogicalDriveStringsA - 606 25D 000265A0 GetLogicalDriveStringsW - 607 25E 00018C60 GetLogicalDrives - 608 25F 00021950 GetLogicalProcessorInformation - 609 260 GetLogicalProcessorInformationEx (forwarded to api-ms-win-core-sysinfo-l1-1-0.GetLogicalProcessorInformationEx) - 610 261 00063770 GetLongPathNameA - 611 262 00048FD0 GetLongPathNameTransactedA - 612 263 00049080 GetLongPathNameTransactedW - 613 264 00017750 GetLongPathNameW - 614 265 0003F4F0 GetMailslotInfo - 615 266 00040DE0 GetMaximumProcessorCount - 616 267 00024A30 GetMaximumProcessorGroupCount - 617 268 00042580 GetMemoryErrorHandlingCapabilities - 618 269 00021610 GetModuleFileNameA - 619 26A 0001F490 GetModuleFileNameW - 620 26B 0001EEC0 GetModuleHandleA - 621 26C 00021960 GetModuleHandleExA - 622 26D 0001FD10 GetModuleHandleExW - 623 26E 0001EBA0 GetModuleHandleW - 624 26F 00024D50 GetNLSVersion - 625 270 00042590 GetNLSVersionEx - 626 271 000425A0 GetNamedPipeAttribute - 627 272 0003FC30 GetNamedPipeClientComputerNameA - 628 273 000425B0 GetNamedPipeClientComputerNameW - 629 274 0003FD60 GetNamedPipeClientProcessId - 630 275 0003FDA0 GetNamedPipeClientSessionId - 631 276 0003FDF0 GetNamedPipeHandleStateA - 632 277 000425C0 GetNamedPipeHandleStateW - 633 278 GetNamedPipeInfo (forwarded to api-ms-win-core-namedpipe-l1-2-1.GetNamedPipeInfo) - 634 279 0003FF50 GetNamedPipeServerProcessId - 635 27A 0003FF90 GetNamedPipeServerSessionId - 636 27B 00023140 GetNativeSystemInfo - 637 27C 0004C0D0 GetNextUmsListItem - 638 27D 00049130 GetNextVDMCommand - 639 27E 000401F0 GetNumaAvailableMemoryNode - 640 27F 000258A0 GetNumaAvailableMemoryNodeEx - 641 280 00023440 GetNumaHighestNodeNumber - 642 281 00040200 GetNumaNodeNumberFromHandle - 643 282 00040250 GetNumaNodeProcessorMask - 644 283 00025B40 GetNumaNodeProcessorMaskEx - 645 284 000251C0 GetNumaProcessorNode - 646 285 00025210 GetNumaProcessorNodeEx - 647 286 000402D0 GetNumaProximityNode - 648 287 00040300 GetNumaProximityNodeEx - 649 288 0001C520 GetNumberFormatA - 650 289 000425D0 GetNumberFormatEx - 651 28A 00001100 GetNumberFormatW - 652 28B 000657E0 GetNumberOfConsoleFonts - 653 28C 00026A60 GetNumberOfConsoleInputEvents - 654 28D 00065830 GetNumberOfConsoleMouseButtons - 655 28E 00025B50 GetOEMCP - 656 28F 0001C3F0 GetOverlappedResult - 657 290 GetOverlappedResultEx (forwarded to api-ms-win-core-io-l1-1-1.GetOverlappedResultEx) - 658 291 GetPackageApplicationIds (forwarded to kernelbase.GetPackageApplicationIds) - 659 292 GetPackageFamilyName (forwarded to kernelbase.GetPackageFamilyName) - 660 293 GetPackageFullName (forwarded to kernelbase.GetPackageFullName) - 661 294 GetPackageId (forwarded to kernelbase.GetPackageId) - 662 295 GetPackageInfo (forwarded to kernelbase.GetPackageInfo) - 663 296 GetPackagePath (forwarded to kernelbase.GetPackagePath) - 664 297 GetPackagePathByFullName (forwarded to kernelbase.GetPackagePathByFullName) - 665 298 GetPackagesByPackageFamily (forwarded to kernelbase.GetPackagesByPackageFamily) - 666 299 00023C10 GetPhysicallyInstalledSystemMemory - 667 29A 000237E0 GetPriorityClass - 668 29B 000167E0 GetPrivateProfileIntA - 669 29C 00016100 GetPrivateProfileIntW - 670 29D 00024DC0 GetPrivateProfileSectionA - 671 29E 0003BE80 GetPrivateProfileSectionNamesA - 672 29F 0003BEB0 GetPrivateProfileSectionNamesW - 673 2A0 00015FA0 GetPrivateProfileSectionW - 674 2A1 000166C0 GetPrivateProfileStringA - 675 2A2 000141D0 GetPrivateProfileStringW - 676 2A3 0003BEE0 GetPrivateProfileStructA - 677 2A4 0003C060 GetPrivateProfileStructW - 678 2A5 0001B2C0 GetProcAddress - 679 2A6 00019C90 GetProcessAffinityMask - 680 2A7 00040E90 GetProcessDEPPolicy - 681 2A8 GetProcessDefaultCpuSets (forwarded to api-ms-win-core-processthreads-l1-1-3.GetProcessDefaultCpuSets) - 682 2A9 000425E0 GetProcessGroupAffinity - 683 2AA 000425F0 GetProcessHandleCount - 684 2AB 00018A20 GetProcessHeap - 685 2AC 00042600 GetProcessHeaps - 686 2AD 0001F1B0 GetProcessId - 687 2AE 00023BF0 GetProcessIdOfThread - 688 2AF 000260A0 GetProcessInformation - 689 2B0 00023460 GetProcessIoCounters - 690 2B1 GetProcessMitigationPolicy (forwarded to api-ms-win-core-processthreads-l1-1-1.GetProcessMitigationPolicy) - 691 2B2 00042610 GetProcessPreferredUILanguages - 692 2B3 00042620 GetProcessPriorityBoost - 693 2B4 00042630 GetProcessShutdownParameters - 694 2B5 000191F0 GetProcessTimes - 695 2B6 00023C50 GetProcessVersion - 696 2B7 0004EA70 GetProcessWorkingSetSize - 697 2B8 00042640 GetProcessWorkingSetSizeEx - 698 2B9 GetProcessorSystemCycleTime (forwarded to api-ms-win-core-sysinfo-l1-2-2.GetProcessorSystemCycleTime) - 699 2BA 00023990 GetProductInfo - 700 2BB 00016850 GetProfileIntA - 701 2BC 00016260 GetProfileIntW - 702 2BD 0003C210 GetProfileSectionA - 703 2BE 00024CF0 GetProfileSectionW - 704 2BF 0003C220 GetProfileStringA - 705 2C0 0003C250 GetProfileStringW - 706 2C1 00018B20 GetQueuedCompletionStatus - 707 2C2 00001110 GetQueuedCompletionStatusEx - 708 2C3 00049A90 GetShortPathNameA - 709 2C4 000172C0 GetShortPathNameW - 710 2C5 GetStagedPackagePathByFullName (forwarded to kernelbase.GetStagedPackagePathByFullName) - 711 2C6 0001EF10 GetStartupInfoA - 712 2C7 0001F570 GetStartupInfoW - 713 2C8 GetStateFolder (forwarded to kernelbase.GetStateFolder) - 714 2C9 0001EC30 GetStdHandle - 715 2CA 00042650 GetStringScripts - 716 2CB 00022B50 GetStringTypeA - 717 2CC 00022B50 GetStringTypeExA - 718 2CD 00024620 GetStringTypeExW - 719 2CE 0001F510 GetStringTypeW - 720 2CF GetSystemAppDataKey (forwarded to kernelbase.GetSystemAppDataKey) - 721 2D0 GetSystemCpuSetInformation (forwarded to api-ms-win-core-processthreads-l1-1-3.GetSystemCpuSetInformation) - 722 2D1 00040EE0 GetSystemDEPPolicy - 723 2D2 0001F4E0 GetSystemDefaultLCID - 724 2D3 000236B0 GetSystemDefaultLangID - 725 2D4 00042660 GetSystemDefaultLocaleName - 726 2D5 00023630 GetSystemDefaultUILanguage - 727 2D6 00021670 GetSystemDirectoryA - 728 2D7 0001B210 GetSystemDirectoryW - 729 2D8 00042670 GetSystemFileCacheSize - 730 2D9 000239A0 GetSystemFirmwareTable - 731 2DA 0001FD30 GetSystemInfo - 732 2DB 0001C0B0 GetSystemPowerStatus - 733 2DC 00042680 GetSystemPreferredUILanguages - 734 2DD 00040F20 GetSystemRegistryQuota - 735 2DE 0001B1C0 GetSystemTime - 736 2DF 00022D50 GetSystemTimeAdjustment - 737 2E0 00019D10 GetSystemTimeAsFileTime - 738 2E1 000267B0 GetSystemTimePreciseAsFileTime - 739 2E2 00025410 GetSystemTimes - 740 2E3 00042690 GetSystemWindowsDirectoryA - 741 2E4 00013D50 GetSystemWindowsDirectoryW - 742 2E5 00026920 GetSystemWow64DirectoryA - 743 2E6 00026930 GetSystemWow64DirectoryW - 744 2E7 0004D250 GetTapeParameters - 745 2E8 0004D2B0 GetTapePosition - 746 2E9 0004D340 GetTapeStatus - 747 2EA 000265B0 GetTempFileNameA - 748 2EB 000265C0 GetTempFileNameW - 749 2EC 000265D0 GetTempPathA - 750 2ED 000265E0 GetTempPathW - 751 2EE 000218C0 GetThreadContext - 752 2EF 000426A0 GetThreadErrorMode - 753 2F0 000426B0 GetThreadGroupAffinity - 754 2F1 000426C0 GetThreadIOPendingFlag - 755 2F2 00023620 GetThreadId - 756 2F3 000426D0 GetThreadIdealProcessorEx - 757 2F4 000260B0 GetThreadInformation - 758 2F5 0001C410 GetThreadLocale - 759 2F6 0001EE90 GetThreadPreferredUILanguages - 760 2F7 0001B1D0 GetThreadPriority - 761 2F8 000426E0 GetThreadPriorityBoost - 762 2F9 GetThreadSelectedCpuSets (forwarded to api-ms-win-core-processthreads-l1-1-3.GetThreadSelectedCpuSets) - 763 2FA 0003ADF0 GetThreadSelectorEntry - 764 2FB 00019770 GetThreadTimes - 765 2FC 00001430 GetThreadUILanguage - 766 2FD 00016D30 GetTickCount - 767 2FE 00018B30 GetTickCount64 - 768 2FF 000252C0 GetTimeFormatA - 769 300 00024E50 GetTimeFormatAWorker - 770 301 000426F0 GetTimeFormatEx - 771 302 00023650 GetTimeFormatW - 772 303 00012F00 GetTimeFormatWWorker - 773 304 0001F500 GetTimeZoneInformation - 774 305 00023CE0 GetTimeZoneInformationForYear - 775 306 00042700 GetUILanguageInfo - 776 307 0004C100 GetUmsCompletionListEvent - 777 308 0004C130 GetUmsSystemThreadInformation - 778 309 0001F270 GetUserDefaultLCID - 779 30A 00024D70 GetUserDefaultLangID - 780 30B 000230E0 GetUserDefaultLocaleName - 781 30C 00023500 GetUserDefaultUILanguage - 782 30D 00022B60 GetUserGeoID - 783 30E 00023670 GetUserPreferredUILanguages - 784 30F 00049CF0 GetVDMCurrentDirectories - 785 310 00022910 GetVersion - 786 311 00021910 GetVersionExA - 787 312 0001B2B0 GetVersionExW - 788 313 000265F0 GetVolumeInformationA - 789 314 00026600 GetVolumeInformationByHandleW - 790 315 00026610 GetVolumeInformationW - 791 316 00025720 GetVolumeNameForVolumeMountPointA - 792 317 00020930 GetVolumeNameForVolumeMountPointW - 793 318 0004B210 GetVolumePathNameA - 794 319 0000DE90 GetVolumePathNameW - 795 31A 0004B3D0 GetVolumePathNamesForVolumeNameA - 796 31B 0001E7A0 GetVolumePathNamesForVolumeNameW - 797 31C 00024D80 GetWindowsDirectoryA - 798 31D 00023450 GetWindowsDirectoryW - 799 31E 0001F1E0 GetWriteWatch - 800 31F 000239B0 GetXStateFeaturesMask - 801 320 00016240 GlobalAddAtomA - 802 321 0003B190 GlobalAddAtomExA - 803 322 00014320 GlobalAddAtomExW - 804 323 00014960 GlobalAddAtomW - 805 324 0001C090 GlobalAlloc - 806 325 0003F2B0 GlobalCompact - 807 326 000147F0 GlobalDeleteAtom - 808 327 0003B1B0 GlobalFindAtomA - 809 328 00014C60 GlobalFindAtomW - 810 329 0003F100 GlobalFix - 811 32A 00022D60 GlobalFlags - 812 32B 00018D90 GlobalFree - 813 32C 0003B1D0 GlobalGetAtomNameA - 814 32D 00014370 GlobalGetAtomNameW - 815 32E 00021820 GlobalHandle - 816 32F 00016EC0 GlobalLock - 817 330 0001F280 GlobalMemoryStatus - 818 331 000229A0 GlobalMemoryStatusEx - 819 332 00018E00 GlobalReAlloc - 820 333 00019630 GlobalSize - 821 334 0003F120 GlobalUnWire - 822 335 0003F130 GlobalUnfix - 823 336 00016E00 GlobalUnlock - 824 337 0003F150 GlobalWire - 825 338 00044860 Heap32First - 826 339 00044AB0 Heap32ListFirst - 827 33A 00044BA0 Heap32ListNext - 828 33B 00044C80 Heap32Next - 829 33C HeapAlloc (forwarded to NTDLL.RtlAllocateHeap) - 830 33D 00042710 HeapCompact - 831 33E 00021920 HeapCreate - 832 33F 000239C0 HeapDestroy - 833 340 00016CE0 HeapFree - 834 341 00042720 HeapLock - 835 342 00042730 HeapQueryInformation - 836 343 HeapReAlloc (forwarded to NTDLL.RtlReAllocateHeap) - 837 344 000218E0 HeapSetInformation - 838 345 HeapSize (forwarded to NTDLL.RtlSizeHeap) - 839 346 00042740 HeapSummary - 840 347 00042750 HeapUnlock - 841 348 0001DD50 HeapValidate - 842 349 00042760 HeapWalk - 843 34A 00025B60 IdnToAscii - 844 34B 00042770 IdnToNameprepUnicode - 845 34C 00042780 IdnToUnicode - 846 34D 00024C30 InitAtomTable - 847 34E InitOnceBeginInitialize (forwarded to api-ms-win-core-synch-l1-1-0.InitOnceBeginInitialize) - 848 34F InitOnceComplete (forwarded to api-ms-win-core-synch-l1-1-0.InitOnceComplete) - 849 350 InitOnceExecuteOnce (forwarded to api-ms-win-core-synch-l1-1-0.InitOnceExecuteOnce) - 850 351 InitOnceInitialize (forwarded to NTDLL.RtlRunOnceInitialize) - 851 352 InitializeConditionVariable (forwarded to NTDLL.RtlInitializeConditionVariable) - 852 353 00023AB0 InitializeContext - 853 354 InitializeCriticalSection (forwarded to NTDLL.RtlInitializeCriticalSection) - 854 355 000261E0 InitializeCriticalSectionAndSpinCount - 855 356 000261F0 InitializeCriticalSectionEx - 856 357 InitializeProcThreadAttributeList (forwarded to api-ms-win-core-processthreads-l1-1-0.InitializeProcThreadAttributeList) - 857 358 InitializeSListHead (forwarded to NTDLL.RtlInitializeSListHead) - 858 359 InitializeSRWLock (forwarded to NTDLL.RtlInitializeSRWLock) - 859 35A 00042790 InitializeSynchronizationBarrier - 860 35B InstallELAMCertificateInfo (forwarded to api-ms-win-core-sysinfo-l1-2-1.InstallELAMCertificateInfo) - 861 35C InterlockedFlushSList (forwarded to NTDLL.RtlInterlockedFlushSList) - 862 35D InterlockedPopEntrySList (forwarded to NTDLL.RtlInterlockedPopEntrySList) - 863 35E InterlockedPushEntrySList (forwarded to NTDLL.RtlInterlockedPushEntrySList) - 864 35F InterlockedPushListSList (forwarded to NTDLL.RtlInterlockedPushListSList) - 865 360 InterlockedPushListSListEx (forwarded to NTDLL.RtlInterlockedPushListSListEx) - 866 361 00065A40 InvalidateConsoleDIBits - 867 362 00040FA0 IsBadCodePtr - 868 363 00040FB0 IsBadHugeReadPtr - 869 364 00040FC0 IsBadHugeWritePtr - 870 365 00016FC0 IsBadReadPtr - 871 366 00040FD0 IsBadStringPtrA - 872 367 00041020 IsBadStringPtrW - 873 368 00041080 IsBadWritePtr - 874 369 00055750 IsCalendarLeapDay - 875 36A 00055830 IsCalendarLeapMonth - 876 36B 00055910 IsCalendarLeapYear - 877 36C 00023D20 IsDBCSLeadByte - 878 36D 000253F0 IsDBCSLeadByteEx - 879 36E 00022900 IsDebuggerPresent - 880 36F 000427A0 IsNLSDefinedString - 881 370 00039320 IsNativeVhdBoot - 882 371 000427B0 IsNormalizedString - 883 372 IsProcessCritical (forwarded to api-ms-win-core-processthreads-l1-1-2.IsProcessCritical) - 884 373 000427C0 IsProcessInJob - 885 374 0001EC80 IsProcessorFeaturePresent - 886 375 00040BA0 IsSystemResumeAutomatic - 887 376 000427D0 IsThreadAFiber - 888 377 IsThreadpoolTimerSet (forwarded to NTDLL.TpIsTimerSet) - 889 378 00018620 IsValidCalDateTime - 890 379 0001DF00 IsValidCodePage - 891 37A 000427F0 IsValidLanguageGroup - 892 37B 0001F4D0 IsValidLocale - 893 37C 00042800 IsValidLocaleName - 894 37D 00042810 IsValidNLSVersion - 895 37E 0001F150 IsWow64Process - 896 37F 00042820 K32EmptyWorkingSet - 897 380 00042830 K32EnumDeviceDrivers - 898 381 00042840 K32EnumPageFilesA - 899 382 00042850 K32EnumPageFilesW - 900 383 000238A0 K32EnumProcessModules - 901 384 00042860 K32EnumProcessModulesEx - 902 385 00001410 K32EnumProcesses - 903 386 00042870 K32GetDeviceDriverBaseNameA - 904 387 00042880 K32GetDeviceDriverBaseNameW - 905 388 00042890 K32GetDeviceDriverFileNameA - 906 389 000428A0 K32GetDeviceDriverFileNameW - 907 38A 000428B0 K32GetMappedFileNameA - 908 38B 000428C0 K32GetMappedFileNameW - 909 38C 000428D0 K32GetModuleBaseNameA - 910 38D 000428E0 K32GetModuleBaseNameW - 911 38E 000428F0 K32GetModuleFileNameExA - 912 38F 00042900 K32GetModuleFileNameExW - 913 390 00023910 K32GetModuleInformation - 914 391 00042910 K32GetPerformanceInfo - 915 392 00042920 K32GetProcessImageFileNameA - 916 393 0001B200 K32GetProcessImageFileNameW - 917 394 00042930 K32GetProcessMemoryInfo - 918 395 00042950 K32GetWsChanges - 919 396 00042940 K32GetWsChangesEx - 920 397 00042960 K32InitializeProcessForWsWatch - 921 398 00042970 K32QueryWorkingSet - 922 399 000234F0 K32QueryWorkingSetEx - 923 39A 00023880 LCIDToLocaleName - 924 39B 00042980 LCMapStringA - 925 39C 00016C90 LCMapStringEx - 926 39D 00019B80 LCMapStringW - 927 39E 00045620 LZClose - 928 39F 000456D0 LZCloseFile - 929 3A0 0003AA90 LZCopy - 930 3A1 00045780 LZCreateFileW - 931 3A2 000271A0 LZDone - 932 3A3 000458B0 LZInit - 933 3A4 00045A40 LZOpenFileA - 934 3A5 00045B30 LZOpenFileW - 935 3A6 00045BD0 LZRead - 936 3A7 00045E30 LZSeek - 937 3A8 00024D30 LZStart - 938 3A9 LeaveCriticalSection (forwarded to NTDLL.RtlLeaveCriticalSection) - 939 3AA LeaveCriticalSectionWhenCallbackReturns (forwarded to NTDLL.TpCallbackLeaveCriticalSectionOnCompletion) - 940 3AB 00019790 LoadAppInitDlls - 941 3AC 00022D30 LoadLibraryA - 942 3AD 00020CC0 LoadLibraryExA - 943 3AE 0001C0A0 LoadLibraryExW - 944 3AF 0001F580 LoadLibraryW - 945 3B0 00041110 LoadModule - 946 3B1 000267A0 LoadPackagedLibrary - 947 3B2 0001EC20 LoadResource - 948 3B3 00042990 LoadStringBaseExW - 949 3B4 0003F5D0 LoadStringBaseW - 950 3B5 00019B90 LocalAlloc - 951 3B6 0003F2B0 LocalCompact - 952 3B7 00026620 LocalFileTimeToFileTime - 953 3B8 0003F2D0 LocalFlags - 954 3B9 00019BA0 LocalFree - 955 3BA 0003F410 LocalHandle - 956 3BB 00022F40 LocalLock - 957 3BC 000237F0 LocalReAlloc - 958 3BD 0003F2B0 LocalShrink - 959 3BE 0001D2D0 LocalSize - 960 3BF 00022F30 LocalUnlock - 961 3C0 00022F50 LocaleNameToLCID - 962 3C1 00023BA0 LocateXStateFeature - 963 3C2 00026630 LockFile - 964 3C3 00026640 LockFileEx - 965 3C4 0001EED0 LockResource - 966 3C5 000429B0 MapUserPhysicalPages - 967 3C6 0004EA90 MapUserPhysicalPagesScatter - 968 3C7 0001F140 MapViewOfFile - 969 3C8 0001DEF0 MapViewOfFileEx - 970 3C9 000429C0 MapViewOfFileExNuma - 971 3CA MapViewOfFileFromApp (forwarded to api-ms-win-core-memory-l1-1-1.MapViewOfFileFromApp) - 972 3CB 00044EE0 Module32First - 973 3CC 0001FBE0 Module32FirstW - 974 3CD 00045000 Module32Next - 975 3CE 0001B2E0 Module32NextW - 976 3CF 0003D6F0 MoveFileA - 977 3D0 0003D720 MoveFileExA - 978 3D1 00023B80 MoveFileExW - 979 3D2 0003D750 MoveFileTransactedA - 980 3D3 00025680 MoveFileTransactedW - 981 3D4 00021620 MoveFileW - 982 3D5 0003D820 MoveFileWithProgressA - 983 3D6 000429D0 MoveFileWithProgressW - 984 3D7 00026790 MulDiv - 985 3D8 00018A30 MultiByteToWideChar - 986 3D9 000429E0 NeedCurrentDirectoryForExePathA - 987 3DA 000429F0 NeedCurrentDirectoryForExePathW - 988 3DB 000269D0 NlsCheckPolicy - 989 3DC 00042A00 NlsEventDataDescCreate - 990 3DD 000269E0 NlsGetCacheUpdateCount - 991 3DE 000269F0 NlsUpdateLocale - 992 3DF 00026A00 NlsUpdateSystemLocale - 993 3E0 00042A10 NlsWriteEtwEvent - 994 3E1 00042A20 NormalizeString - 995 3E2 00042A30 NotifyMountMgr - 996 3E3 00058A20 NotifyUILanguageChange - 997 3E4 000415C0 NtVdm64CreateProcessInternalW - 998 3E5 000238B0 OOBEComplete - 999 3E6 OfferVirtualMemory (forwarded to api-ms-win-core-memory-l1-1-2.OfferVirtualMemory) - 1000 3E7 00064B80 OpenConsoleW - 1001 3E8 00042A40 OpenConsoleWStub - 1002 3E9 00026200 OpenEventA - 1003 3EA 00026210 OpenEventW - 1004 3EB 0003E790 OpenFile - 1005 3EC 00042A50 OpenFileById - 1006 3ED 000247E0 OpenFileMappingA - 1007 3EE 0001FBD0 OpenFileMappingW - 1008 3EF 0004DAD0 OpenJobObjectA - 1009 3F0 0004DB50 OpenJobObjectW - 1010 3F1 00016B00 OpenMutexA - 1011 3F2 00026220 OpenMutexW - 1012 3F3 OpenPackageInfoByFullName (forwarded to kernelbase.OpenPackageInfoByFullName) - 1013 3F4 00043470 OpenPrivateNamespaceA - 1014 3F5 00024F90 OpenPrivateNamespaceW - 1015 3F6 0001B170 OpenProcess - 1016 3F7 OpenProcessToken (forwarded to api-ms-win-core-processthreads-l1-1-0.OpenProcessToken) - 1017 3F8 00024D30 OpenProfileUserMapping - 1018 3F9 000434D0 OpenSemaphoreA - 1019 3FA 00026230 OpenSemaphoreW - 1020 3FB OpenState (forwarded to kernelbase.OpenState) - 1021 3FC OpenStateExplicit (forwarded to kernelbase.OpenStateExplicit) - 1022 3FD 0001B1F0 OpenThread - 1023 3FE OpenThreadToken (forwarded to api-ms-win-core-processthreads-l1-1-0.OpenThreadToken) - 1024 3FF 00043540 OpenWaitableTimerA - 1025 400 00026240 OpenWaitableTimerW - 1026 401 00022990 OutputDebugStringA - 1027 402 0001B420 OutputDebugStringW - 1028 403 PackageFamilyNameFromFullName (forwarded to kernelbase.PackageFamilyNameFromFullName) - 1029 404 PackageFamilyNameFromId (forwarded to kernelbase.PackageFamilyNameFromId) - 1030 405 PackageFullNameFromId (forwarded to kernelbase.PackageFullNameFromId) - 1031 406 PackageIdFromFullName (forwarded to kernelbase.PackageIdFromFullName) - 1032 407 PackageNameAndPublisherIdFromFamilyName (forwarded to kernelbase.PackageNameAndPublisherIdFromFamilyName) - 1033 408 ParseApplicationUserModelId (forwarded to kernelbase.ParseApplicationUserModelId) - 1034 409 00026A70 PeekConsoleInputA - 1035 40A 00026BD0 PeekConsoleInputW - 1036 40B 00025A60 PeekNamedPipe - 1037 40C 0001E170 PostQueuedCompletionStatus - 1038 40D 00021730 PowerClearRequest - 1039 40E 0001F900 PowerCreateRequest - 1040 40F 00016480 PowerSetRequest - 1041 410 PrefetchVirtualMemory (forwarded to api-ms-win-core-memory-l1-1-1.PrefetchVirtualMemory) - 1042 411 0004D370 PrepareTape - 1043 412 00025400 PrivCopyFileExW - 1044 413 0003D910 PrivMoveFileIdentityW - 1045 414 00045120 Process32First - 1046 415 00020990 Process32FirstW - 1047 416 00045210 Process32Next - 1048 417 0001C170 Process32NextW - 1049 418 0001E6C0 ProcessIdToSessionId - 1050 419 00042A60 PssCaptureSnapshot - 1051 41A 00042A70 PssDuplicateSnapshot - 1052 41B 00042A80 PssFreeSnapshot - 1053 41C 00042A90 PssQuerySnapshot - 1054 41D 00042AA0 PssWalkMarkerCreate - 1055 41E 00042AB0 PssWalkMarkerFree - 1056 41F 00042AC0 PssWalkMarkerGetPosition - 1057 420 00042AD0 PssWalkMarkerRewind - 1058 421 00042AE0 PssWalkMarkerSeek - 1059 422 00042AD0 PssWalkMarkerSeekToBeginning - 1060 423 00042AE0 PssWalkMarkerSetPosition - 1061 424 00042AC0 PssWalkMarkerTell - 1062 425 00042AF0 PssWalkSnapshot - 1063 426 0001DCF0 PulseEvent - 1064 427 00026890 PurgeComm - 1065 428 00042B00 QueryActCtxSettingsW - 1066 429 00014AC0 QueryActCtxSettingsWWorker - 1067 42A 0001F400 QueryActCtxW - 1068 42B 00014520 QueryActCtxWWorker - 1069 42C QueryDepthSList (forwarded to NTDLL.RtlQueryDepthSList) - 1070 42D 0003C6D0 QueryDosDeviceA - 1071 42E 00026650 QueryDosDeviceW - 1072 42F 00023CB0 QueryFullProcessImageNameA - 1073 430 000219A0 QueryFullProcessImageNameW - 1074 431 0001FD90 QueryIdleProcessorCycleTime - 1075 432 00042B10 QueryIdleProcessorCycleTimeEx - 1076 433 00023520 QueryInformationJobObject - 1077 434 0004DC00 QueryIoRateControlInformationJobObject - 1078 435 00042B20 QueryMemoryResourceNotification - 1079 436 00017110 QueryPerformanceCounter - 1080 437 00019550 QueryPerformanceFrequency - 1081 438 00042B30 QueryProcessAffinityUpdateMode - 1082 439 0001FDA0 QueryProcessCycleTime - 1083 43A QueryProtectedPolicy (forwarded to api-ms-win-core-processthreads-l1-1-2.QueryProtectedPolicy) - 1084 43B 0001B2A0 QueryThreadCycleTime - 1085 43C 0004EBA0 QueryThreadProfiling - 1086 43D 00042B40 QueryThreadpoolStackInformation - 1087 43E 0004C1A0 QueryUmsThreadInformation - 1088 43F 0001F4C0 QueryUnbiasedInterruptTime - 1089 440 000207B0 QueueUserAPC - 1090 441 00021900 QueueUserWorkItem - 1091 442 0006AE70 QuirkGetData2Worker - 1092 443 0006AF40 QuirkGetDataWorker - 1093 444 0006B000 QuirkIsEnabled2Worker - 1094 445 000194A0 QuirkIsEnabled3Worker - 1095 446 00024350 QuirkIsEnabledForPackage2Worker - 1096 447 000081A0 QuirkIsEnabledForPackage3Worker - 1097 448 000082F0 QuirkIsEnabledForPackage4Worker - 1098 449 00007CF0 QuirkIsEnabledForPackageWorker - 1099 44A 0006B120 QuirkIsEnabledForProcessWorker - 1100 44B 00007830 QuirkIsEnabledWorker - 1101 44C 0001F390 RaiseException - 1102 44D RaiseFailFastException (forwarded to kernelbase.RaiseFailFastException) - 1103 44E 000417C0 RaiseInvalid16BitExeError - 1104 44F 00042B70 ReOpenFile - 1105 450 00026A80 ReadConsoleA - 1106 451 00026A90 ReadConsoleInputA - 1107 452 ReadConsoleInputExA (forwarded to kernelbase.ReadConsoleInputExA) - 1108 453 ReadConsoleInputExW (forwarded to kernelbase.ReadConsoleInputExW) - 1109 454 00026AA0 ReadConsoleInputW - 1110 455 00026BE0 ReadConsoleOutputA - 1111 456 00026BF0 ReadConsoleOutputAttribute - 1112 457 00026C00 ReadConsoleOutputCharacterA - 1113 458 00026C10 ReadConsoleOutputCharacterW - 1114 459 00026C20 ReadConsoleOutputW - 1115 45A 00026AB0 ReadConsoleW - 1116 45B 000252D0 ReadDirectoryChangesW - 1117 45C 00026660 ReadFile - 1118 45D 00026670 ReadFileEx - 1119 45E 00026680 ReadFileScatter - 1120 45F 0001C500 ReadProcessMemory - 1121 460 0004EBD0 ReadThreadProfilingData - 1122 461 ReclaimVirtualMemory (forwarded to api-ms-win-core-memory-l1-1-2.ReclaimVirtualMemory) - 1123 462 00023510 RegCloseKey - 1124 463 00042B80 RegCopyTreeW - 1125 464 00042B90 RegCreateKeyExA - 1126 465 000230B0 RegCreateKeyExW - 1127 466 00042BA0 RegDeleteKeyExA - 1128 467 00042BB0 RegDeleteKeyExW - 1129 468 00042BC0 RegDeleteTreeA - 1130 469 00042BD0 RegDeleteTreeW - 1131 46A 00042BE0 RegDeleteValueA - 1132 46B 00024C90 RegDeleteValueW - 1133 46C 00042BF0 RegDisablePredefinedCacheEx - 1134 46D 00042C00 RegEnumKeyExA - 1135 46E 0001F3B0 RegEnumKeyExW - 1136 46F 00042C50 RegEnumValueA - 1137 470 00023050 RegEnumValueW - 1138 471 00042CA0 RegFlushKey - 1139 472 00042CB0 RegGetKeySecurity - 1140 473 00042CC0 RegGetValueA - 1141 474 00023700 RegGetValueW - 1142 475 00042CD0 RegLoadKeyA - 1143 476 00042CE0 RegLoadKeyW - 1144 477 00042CF0 RegLoadMUIStringA - 1145 478 00042D00 RegLoadMUIStringW - 1146 479 00023640 RegNotifyChangeKeyValue - 1147 47A 000243D0 RegOpenCurrentUser - 1148 47B 00042D10 RegOpenKeyExA - 1149 47C 0001F870 RegOpenKeyExW - 1150 47D 00042D20 RegOpenUserClassesRoot - 1151 47E 00042D30 RegQueryInfoKeyA - 1152 47F 0001F410 RegQueryInfoKeyW - 1153 480 00042DB0 RegQueryValueExA - 1154 481 0001F4A0 RegQueryValueExW - 1155 482 00042DC0 RegRestoreKeyA - 1156 483 00042DD0 RegRestoreKeyW - 1157 484 00042DE0 RegSaveKeyExA - 1158 485 00042DF0 RegSaveKeyExW - 1159 486 00042E00 RegSetKeySecurity - 1160 487 00042E10 RegSetValueExA - 1161 488 00023410 RegSetValueExW - 1162 489 00042E20 RegUnLoadKeyA - 1163 48A 00042E30 RegUnLoadKeyW - 1164 48B 00023D80 RegisterApplicationRecoveryCallback - 1165 48C 00016540 RegisterApplicationRestart - 1166 48D 00042E40 RegisterBadMemoryNotification - 1167 48E 00064DE0 RegisterConsoleIME - 1168 48F 00065220 RegisterConsoleOS2 - 1169 490 00064CF0 RegisterConsoleVDM - 1170 491 00021810 RegisterWaitForInputIdle - 1171 492 0001DE80 RegisterWaitForSingleObject - 1172 493 00042E50 RegisterWaitForSingleObjectEx - 1173 494 000403B0 RegisterWaitUntilOOBECompleted - 1174 495 0003F160 RegisterWowBaseHandlers - 1175 496 0004A110 RegisterWowExec - 1176 497 00022F20 ReleaseActCtx - 1177 498 0001C940 ReleaseActCtxWorker - 1178 499 00026250 ReleaseMutex - 1179 49A ReleaseMutexWhenCallbackReturns (forwarded to NTDLL.TpCallbackReleaseMutexOnCompletion) - 1180 49B ReleaseSRWLockExclusive (forwarded to NTDLL.RtlReleaseSRWLockExclusive) - 1181 49C ReleaseSRWLockShared (forwarded to NTDLL.RtlReleaseSRWLockShared) - 1182 49D 00026260 ReleaseSemaphore - 1183 49E ReleaseSemaphoreWhenCallbackReturns (forwarded to NTDLL.TpCallbackReleaseSemaphoreOnCompletion) - 1184 49F 00026690 RemoveDirectoryA - 1185 4A0 0003B070 RemoveDirectoryTransactedA - 1186 4A1 0003B0C0 RemoveDirectoryTransactedW - 1187 4A2 000266A0 RemoveDirectoryW - 1188 4A3 RemoveDllDirectory (forwarded to api-ms-win-core-libraryloader-l1-1-0.RemoveDllDirectory) - 1189 4A4 0003A570 RemoveLocalAlternateComputerNameA - 1190 4A5 0003A5D0 RemoveLocalAlternateComputerNameW - 1191 4A6 0003F170 RemoveSecureMemoryCacheCallback - 1192 4A7 RemoveVectoredContinueHandler (forwarded to NTDLL.RtlRemoveVectoredContinueHandler) - 1193 4A8 RemoveVectoredExceptionHandler (forwarded to NTDLL.RtlRemoveVectoredExceptionHandler) - 1194 4A9 00042E60 ReplaceFile - 1195 4AA 0003EC90 ReplaceFileA - 1196 4AB 00042E60 ReplaceFileW - 1197 4AC 00041B40 ReplacePartitionUnit - 1198 4AD 00040B30 RequestDeviceWakeup - 1199 4AE 00040B30 RequestWakeupLatency - 1200 4AF 00026270 ResetEvent - 1201 4B0 000212C0 ResetWriteWatch - 1202 4B1 ResolveDelayLoadedAPI (forwarded to NTDLL.LdrResolveDelayLoadedAPI) - 1203 4B2 ResolveDelayLoadsFromDll (forwarded to NTDLL.LdrResolveDelayLoadsFromDll) - 1204 4B3 00023A50 ResolveLocaleName - 1205 4B4 RestoreLastError (forwarded to NTDLL.RtlRestoreLastWin32Error) - 1206 4B5 0001FD20 ResumeThread - 1207 4B6 000213F0 RtlAddFunctionTable - 1208 4B7 00025EE0 RtlCaptureContext - 1209 4B8 0001D890 RtlCaptureStackBackTrace - 1210 4B9 00023870 RtlCompareMemory - 1211 4BA 00042E70 RtlCopyMemory - 1212 4BB 00021410 RtlDeleteFunctionTable - 1213 4BC 00042E90 RtlFillMemory - 1214 4BD 00042EC0 RtlInstallFunctionTableCallback - 1215 4BE 0001F5D0 RtlLookupFunctionEntry - 1216 4BF 00025F10 RtlMoveMemory - 1217 4C0 0001F4F0 RtlPcToFileHeader - 1218 4C1 00042ED0 RtlRaiseException - 1219 4C2 00042EE0 RtlRestoreContext - 1220 4C3 00042EF0 RtlUnwind - 1221 4C4 0001E690 RtlUnwindEx - 1222 4C5 00042F00 RtlVirtualUnwind - 1223 4C6 RtlZeroMemory (forwarded to NTDLL.RtlZeroMemory) - 1224 4C7 00026C30 ScrollConsoleScreenBufferA - 1225 4C8 00026C40 ScrollConsoleScreenBufferW - 1226 4C9 00042F50 SearchPathA - 1227 4CA 00023A30 SearchPathW - 1228 4CB 00023C70 SetCachedSigningLevel - 1229 4CC 00056660 SetCalendarInfoA - 1230 4CD 00042F60 SetCalendarInfoW - 1231 4CE 0004E7E0 SetComPlusPackageInstallStatus - 1232 4CF 000268A0 SetCommBreak - 1233 4D0 000268B0 SetCommConfig - 1234 4D1 000268C0 SetCommMask - 1235 4D2 000268D0 SetCommState - 1236 4D3 000268E0 SetCommTimeouts - 1237 4D4 00042F70 SetComputerNameA - 1238 4D5 00042F80 SetComputerNameEx2W - 1239 4D6 00042F90 SetComputerNameExA - 1240 4D7 00042FA0 SetComputerNameExW - 1241 4D8 00042FB0 SetComputerNameW - 1242 4D9 00026C50 SetConsoleActiveScreenBuffer - 1243 4DA 00026C60 SetConsoleCP - 1244 4DB 00026AC0 SetConsoleCtrlHandler - 1245 4DC 00064D90 SetConsoleCursor - 1246 4DD 00026C70 SetConsoleCursorInfo - 1247 4DE 00065280 SetConsoleCursorMode - 1248 4DF 00026C80 SetConsoleCursorPosition - 1249 4E0 00064DE0 SetConsoleDisplayMode - 1250 4E1 00065890 SetConsoleFont - 1251 4E2 00064E00 SetConsoleHardwareState - 1252 4E3 000658E0 SetConsoleHistoryInfo - 1253 4E4 00065950 SetConsoleIcon - 1254 4E5 SetConsoleInputExeNameA (forwarded to kernelbase.SetConsoleInputExeNameA) - 1255 4E6 SetConsoleInputExeNameW (forwarded to kernelbase.SetConsoleInputExeNameW) - 1256 4E7 00064E60 SetConsoleKeyShortcuts - 1257 4E8 000652E0 SetConsoleLocalEUDC - 1258 4E9 00024D30 SetConsoleMaximumWindowSize - 1259 4EA 00064EF0 SetConsoleMenuClose - 1260 4EB 00026AD0 SetConsoleMode - 1261 4EC 00065390 SetConsoleNlsMode - 1262 4ED 000649B0 SetConsoleNumberOfCommandsA - 1263 4EE 00064A60 SetConsoleNumberOfCommandsW - 1264 4EF 000653E0 SetConsoleOS2OemFormat - 1265 4F0 00026C90 SetConsoleOutputCP - 1266 4F1 00064F50 SetConsolePalette - 1267 4F2 00026CA0 SetConsoleScreenBufferInfoEx - 1268 4F3 00026CB0 SetConsoleScreenBufferSize - 1269 4F4 00026CC0 SetConsoleTextAttribute - 1270 4F5 00064A70 SetConsoleTitleA - 1271 4F6 00026CD0 SetConsoleTitleW - 1272 4F7 00026CE0 SetConsoleWindowInfo - 1273 4F8 SetCriticalSectionSpinCount (forwarded to NTDLL.RtlSetCriticalSectionSpinCount) - 1274 4F9 000659A0 SetCurrentConsoleFontEx - 1275 4FA 00042FC0 SetCurrentDirectoryA - 1276 4FB 00023BB0 SetCurrentDirectoryW - 1277 4FC 00046900 SetDefaultCommConfigA - 1278 4FD 00046990 SetDefaultCommConfigW - 1279 4FE SetDefaultDllDirectories (forwarded to api-ms-win-core-libraryloader-l1-1-0.SetDefaultDllDirectories) - 1280 4FF 0003F810 SetDllDirectoryA - 1281 500 00022E90 SetDllDirectoryW - 1282 501 00042FD0 SetDynamicTimeZoneInformation - 1283 502 000266B0 SetEndOfFile - 1284 503 0004E9A0 SetEnvironmentStringsA - 1285 504 00042FE0 SetEnvironmentStringsW - 1286 505 0001F250 SetEnvironmentVariableA - 1287 506 00022FF0 SetEnvironmentVariableW - 1288 507 0001DD40 SetErrorMode - 1289 508 00026280 SetEvent - 1290 509 SetEventWhenCallbackReturns (forwarded to NTDLL.TpCallbackSetEventOnCompletion) - 1291 50A 00042FF0 SetFileApisToANSI - 1292 50B 00043000 SetFileApisToOEM - 1293 50C 000266C0 SetFileAttributesA - 1294 50D 0003DD60 SetFileAttributesTransactedA - 1295 50E 0003DDB0 SetFileAttributesTransactedW - 1296 50F 000266D0 SetFileAttributesW - 1297 510 0003CD80 SetFileBandwidthReservation - 1298 511 00020C50 SetFileCompletionNotificationModes - 1299 512 000266E0 SetFileInformationByHandle - 1300 513 00043010 SetFileIoOverlappedRange - 1301 514 000266F0 SetFilePointer - 1302 515 00026700 SetFilePointerEx - 1303 516 0003CEA0 SetFileShortNameA - 1304 517 0003CEE0 SetFileShortNameW - 1305 518 00026710 SetFileTime - 1306 519 00026720 SetFileValidData - 1307 51A 0003EED0 SetFirmwareEnvironmentVariableA - 1308 51B 0003EEF0 SetFirmwareEnvironmentVariableExA - 1309 51C 0003EFE0 SetFirmwareEnvironmentVariableExW - 1310 51D 0003F0A0 SetFirmwareEnvironmentVariableW - 1311 51E 00023660 SetHandleCount - 1312 51F 00026110 SetHandleInformation - 1313 520 00021530 SetInformationJobObject - 1314 521 0004DEB0 SetIoRateControlInformationJobObject - 1315 522 SetLastConsoleEventActive (forwarded to kernelbase.SetLastConsoleEventActive) - 1316 523 00016DF0 SetLastError - 1317 524 0003A710 SetLocalPrimaryComputerNameA - 1318 525 0003A770 SetLocalPrimaryComputerNameW - 1319 526 00043020 SetLocalTime - 1320 527 00056740 SetLocaleInfoA - 1321 528 00043030 SetLocaleInfoW - 1322 529 00022920 SetMailslotInfo - 1323 52A 00040B30 SetMessageWaitingIndicator - 1324 52B 0003FFD0 SetNamedPipeAttribute - 1325 52C 000243E0 SetNamedPipeHandleState - 1326 52D 00023000 SetPriorityClass - 1327 52E 00041950 SetProcessAffinityMask - 1328 52F 00025AA0 SetProcessAffinityUpdateMode - 1329 530 00024380 SetProcessDEPPolicy - 1330 531 SetProcessDefaultCpuSets (forwarded to api-ms-win-core-processthreads-l1-1-3.SetProcessDefaultCpuSets) - 1331 532 000260C0 SetProcessInformation - 1332 533 SetProcessMitigationPolicy (forwarded to api-ms-win-core-processthreads-l1-1-1.SetProcessMitigationPolicy) - 1333 534 00043040 SetProcessPreferredUILanguages - 1334 535 00023CA0 SetProcessPriorityBoost - 1335 536 000236F0 SetProcessShutdownParameters - 1336 537 00023BE0 SetProcessWorkingSetSize - 1337 538 00043050 SetProcessWorkingSetSizeEx - 1338 539 SetProtectedPolicy (forwarded to api-ms-win-core-processthreads-l1-1-2.SetProtectedPolicy) - 1339 53A 0003F8C0 SetSearchPathMode - 1340 53B 00021970 SetStdHandle - 1341 53C 00043060 SetStdHandleEx - 1342 53D 00043070 SetSystemFileCacheSize - 1343 53E 00040BC0 SetSystemPowerState - 1344 53F 00043080 SetSystemTime - 1345 540 0003AD10 SetSystemTimeAdjustment - 1346 541 0004D3B0 SetTapeParameters - 1347 542 0004D400 SetTapePosition - 1348 543 00043790 SetTermsrvAppInstallMode - 1349 544 00016D50 SetThreadAffinityMask - 1350 545 00023CC0 SetThreadContext - 1351 546 0001D880 SetThreadErrorMode - 1352 547 00024270 SetThreadExecutionState - 1353 548 00043090 SetThreadGroupAffinity - 1354 549 0001B290 SetThreadIdealProcessor - 1355 54A 000430A0 SetThreadIdealProcessorEx - 1356 54B 000260D0 SetThreadInformation - 1357 54C 0001C430 SetThreadLocale - 1358 54D 0001F530 SetThreadPreferredUILanguages - 1359 54E 0001F1C0 SetThreadPriority - 1360 54F 00024D40 SetThreadPriorityBoost - 1361 550 SetThreadSelectedCpuSets (forwarded to api-ms-win-core-processthreads-l1-1-3.SetThreadSelectedCpuSets) - 1362 551 000217B0 SetThreadStackGuarantee - 1363 552 SetThreadToken (forwarded to api-ms-win-core-processthreads-l1-1-0.SetThreadToken) - 1364 553 0001DD00 SetThreadUILanguage - 1365 554 000430B0 SetThreadpoolStackInformation - 1366 555 SetThreadpoolThreadMaximum (forwarded to NTDLL.TpSetPoolMaxThreads) - 1367 556 00024B70 SetThreadpoolThreadMinimum - 1368 557 SetThreadpoolTimer (forwarded to NTDLL.TpSetTimer) - 1369 558 SetThreadpoolTimerEx (forwarded to NTDLL.TpSetTimerEx) - 1370 559 SetThreadpoolWait (forwarded to NTDLL.TpSetWait) - 1371 55A SetThreadpoolWaitEx (forwarded to NTDLL.TpSetWaitEx) - 1372 55B 000430E0 SetTimeZoneInformation - 1373 55C 0004EAF0 SetTimerQueueTimer - 1374 55D 0004C1E0 SetUmsThreadInformation - 1375 55E 00021720 SetUnhandledExceptionFilter - 1376 55F 0005F100 SetUserGeoID - 1377 560 0004A170 SetVDMCurrentDirectories - 1378 561 00040700 SetVolumeLabelA - 1379 562 000407A0 SetVolumeLabelW - 1380 563 0004B780 SetVolumeMountPointA - 1381 564 0004B7F0 SetVolumeMountPointW - 1382 565 000430F0 SetVolumeMountPointWStub - 1383 566 00026290 SetWaitableTimer - 1384 567 SetWaitableTimerEx (forwarded to api-ms-win-core-synch-l1-1-0.SetWaitableTimerEx) - 1385 568 00023C80 SetXStateFeaturesMask - 1386 569 000268F0 SetupComm - 1387 56A 00064FB0 ShowConsoleCursor - 1388 56B 00043100 SignalObjectAndWait - 1389 56C 0001EEE0 SizeofResource - 1390 56D 00019780 Sleep - 1391 56E SleepConditionVariableCS (forwarded to api-ms-win-core-synch-l1-1-0.SleepConditionVariableCS) - 1392 56F SleepConditionVariableSRW (forwarded to api-ms-win-core-synch-l1-1-0.SleepConditionVariableSRW) - 1393 570 000262A0 SleepEx - 1394 571 00023680 SortCloseHandle - 1395 572 0000F700 SortGetHandle - 1396 573 StartThreadpoolIo (forwarded to NTDLL.TpStartAsyncIoOperation) - 1397 574 SubmitThreadpoolWork (forwarded to NTDLL.TpPostWork) - 1398 575 00021710 SuspendThread - 1399 576 000269C0 SwitchToFiber - 1400 577 0001B1E0 SwitchToThread - 1401 578 0001F520 SystemTimeToFileTime - 1402 579 000230C0 SystemTimeToTzSpecificLocalTime - 1403 57A SystemTimeToTzSpecificLocalTimeEx (forwarded to api-ms-win-core-timezone-l1-1-0.SystemTimeToTzSpecificLocalTimeEx) - 1404 57B 00023750 TerminateJobObject - 1405 57C 00023710 TerminateProcess - 1406 57D 000228F0 TerminateThread - 1407 57E 00015160 TermsrvAppInstallMode - 1408 57F 00012D50 TermsrvConvertSysRootToUserDir - 1409 580 0001EBB0 TermsrvCreateRegEntry - 1410 581 0001F540 TermsrvDeleteKey - 1411 582 0001F880 TermsrvDeleteValue - 1412 583 0001C2B0 TermsrvGetPreSetValue - 1413 584 00024CB0 TermsrvGetWindowsDirectoryA - 1414 585 00012D10 TermsrvGetWindowsDirectoryW - 1415 586 00018A60 TermsrvOpenRegEntry - 1416 587 0001E1A0 TermsrvOpenUserClasses - 1417 588 00044730 TermsrvRestoreKey - 1418 589 0001C440 TermsrvSetKeySecurity - 1419 58A 0001C310 TermsrvSetValueKey - 1420 58B 00014020 TermsrvSyncUserIniFileExt - 1421 58C 00020B20 Thread32First - 1422 58D 00018CB0 Thread32Next - 1423 58E 0001E6B0 TlsAlloc - 1424 58F 0001EEF0 TlsFree - 1425 590 00016CB0 TlsGetValue - 1426 591 00018A50 TlsSetValue - 1427 592 00045300 Toolhelp32ReadProcessMemory - 1428 593 00043110 TransactNamedPipe - 1429 594 00026900 TransmitCommChar - 1430 595 TryAcquireSRWLockExclusive (forwarded to NTDLL.RtlTryAcquireSRWLockExclusive) - 1431 596 TryAcquireSRWLockShared (forwarded to NTDLL.RtlTryAcquireSRWLockShared) - 1432 597 TryEnterCriticalSection (forwarded to NTDLL.RtlTryEnterCriticalSection) - 1433 598 000234A0 TrySubmitThreadpoolCallback - 1434 599 00024DA0 TzSpecificLocalTimeToSystemTime - 1435 59A TzSpecificLocalTimeToSystemTimeEx (forwarded to api-ms-win-core-timezone-l1-1-0.TzSpecificLocalTimeToSystemTimeEx) - 1436 59B 0003F8F0 UTRegister - 1437 59C 000271A0 UTUnRegister - 1438 59D 0004C210 UmsThreadYield - 1439 59E 00043120 UnhandledExceptionFilter - 1440 59F 00026730 UnlockFile - 1441 5A0 00026740 UnlockFileEx - 1442 5A1 0001F4B0 UnmapViewOfFile - 1443 5A2 UnmapViewOfFileEx (forwarded to api-ms-win-core-memory-l1-1-1.UnmapViewOfFileEx) - 1444 5A3 00023D60 UnregisterApplicationRecoveryCallback - 1445 5A4 000059A0 UnregisterApplicationRestart - 1446 5A5 00043130 UnregisterBadMemoryNotification - 1447 5A6 00064DE0 UnregisterConsoleIME - 1448 5A7 00016500 UnregisterWait - 1449 5A8 00023970 UnregisterWaitEx - 1450 5A9 000404E0 UnregisterWaitUntilOOBECompleted - 1451 5AA 00018680 UpdateCalendarDayOfWeek - 1452 5AB UpdateProcThreadAttribute (forwarded to api-ms-win-core-processthreads-l1-1-0.UpdateProcThreadAttribute) - 1453 5AC 00054A20 UpdateResourceA - 1454 5AD 00054BA0 UpdateResourceW - 1455 5AE 00065A90 VDMConsoleOperation - 1456 5AF 0004A420 VDMOperationStarted - 1457 5B0 00023C90 VerLanguageNameA - 1458 5B1 00023BC0 VerLanguageNameW - 1459 5B2 VerSetConditionMask (forwarded to NTDLL.VerSetConditionMask) - 1460 5B3 00023920 VerifyConsoleIoHandle - 1461 5B4 00043140 VerifyScripts - 1462 5B5 00019BB0 VerifyVersionInfoA - 1463 5B6 00019C50 VerifyVersionInfoW - 1464 5B7 0001C370 VirtualAlloc - 1465 5B8 00023D00 VirtualAllocEx - 1466 5B9 00024DB0 VirtualAllocExNuma - 1467 5BA 0001C490 VirtualFree - 1468 5BB 00023D10 VirtualFreeEx - 1469 5BC 00043150 VirtualLock - 1470 5BD 0001DEE0 VirtualProtect - 1471 5BE 00043160 VirtualProtectEx - 1472 5BF 0001E6A0 VirtualQuery - 1473 5C0 00022FB0 VirtualQueryEx - 1474 5C1 0001F3A0 VirtualUnlock - 1475 5C2 00022330 WTSGetActiveConsoleSessionId - 1476 5C3 00026910 WaitCommEvent - 1477 5C4 00043170 WaitForDebugEvent - 1478 5C5 WaitForDebugEventEx (forwarded to api-ms-win-core-debug-l1-1-2.WaitForDebugEventEx) - 1479 5C6 000262B0 WaitForMultipleObjects - 1480 5C7 000262C0 WaitForMultipleObjectsEx - 1481 5C8 000262D0 WaitForSingleObject - 1482 5C9 000262E0 WaitForSingleObjectEx - 1483 5CA WaitForThreadpoolIoCallbacks (forwarded to NTDLL.TpWaitForIoCompletion) - 1484 5CB WaitForThreadpoolTimerCallbacks (forwarded to NTDLL.TpWaitForTimer) - 1485 5CC WaitForThreadpoolWaitCallbacks (forwarded to NTDLL.TpWaitForWait) - 1486 5CD WaitForThreadpoolWorkCallbacks (forwarded to NTDLL.TpWaitForWork) - 1487 5CE 000401A0 WaitNamedPipeA - 1488 5CF 00043180 WaitNamedPipeW - 1489 5D0 WakeAllConditionVariable (forwarded to NTDLL.RtlWakeAllConditionVariable) - 1490 5D1 WakeConditionVariable (forwarded to NTDLL.RtlWakeConditionVariable) - 1491 5D2 000203F0 WerGetFlags - 1492 5D3 000203F0 WerGetFlagsWorker - 1493 5D4 00022F90 WerRegisterFile - 1494 5D5 00008720 WerRegisterFileWorker - 1495 5D6 000218D0 WerRegisterMemoryBlock - 1496 5D7 0000AFC0 WerRegisterMemoryBlockWorker - 1497 5D8 00023430 WerRegisterRuntimeExceptionModule - 1498 5D9 00007DF0 WerRegisterRuntimeExceptionModuleWorker - 1499 5DA 00007820 WerSetFlags - 1500 5DB 00007820 WerSetFlagsWorker - 1501 5DC 00022F80 WerUnregisterFile - 1502 5DD 00008710 WerUnregisterFileWorker - 1503 5DE 000218F0 WerUnregisterMemoryBlock - 1504 5DF 0000AB20 WerUnregisterMemoryBlockWorker - 1505 5E0 00043190 WerUnregisterRuntimeExceptionModule - 1506 5E1 0004E850 WerUnregisterRuntimeExceptionModuleWorker - 1507 5E2 0004E8C0 WerpCleanupMessageMapping - 1508 5E3 00067620 WerpGetDebugger - 1509 5E4 0004E860 WerpInitiateRemoteRecovery - 1510 5E5 00067C00 WerpLaunchAeDebug - 1511 5E6 000431A0 WerpNotifyLoadStringResource - 1512 5E7 0004E910 WerpNotifyLoadStringResourceEx - 1513 5E8 0004E920 WerpNotifyLoadStringResourceWorker - 1514 5E9 000431B0 WerpNotifyUseStringResource - 1515 5EA 00025AB0 WerpNotifyUseStringResourceWorker - 1516 5EB 0004E930 WerpStringLookup - 1517 5EC 00016D20 WideCharToMultiByte - 1518 5ED 00041990 WinExec - 1519 5EE 000431C0 Wow64DisableWow64FsRedirection - 1520 5EF 00023D30 Wow64EnableWow64FsRedirection - 1521 5F0 00044790 Wow64GetThreadContext - 1522 5F1 0003AE10 Wow64GetThreadSelectorEntry - 1523 5F2 000431D0 Wow64RevertWow64FsRedirection - 1524 5F3 000447C0 Wow64SetThreadContext - 1525 5F4 000447F0 Wow64SuspendThread - 1526 5F5 00026AE0 WriteConsoleA - 1527 5F6 00026CF0 WriteConsoleInputA - 1528 5F7 00064FF0 WriteConsoleInputVDMA - 1529 5F8 00065070 WriteConsoleInputVDMW - 1530 5F9 00026D00 WriteConsoleInputW - 1531 5FA 00026D10 WriteConsoleOutputA - 1532 5FB 00026D20 WriteConsoleOutputAttribute - 1533 5FC 00026D30 WriteConsoleOutputCharacterA - 1534 5FD 00026D40 WriteConsoleOutputCharacterW - 1535 5FE 00026D50 WriteConsoleOutputW - 1536 5FF 00026AF0 WriteConsoleW - 1537 600 00026750 WriteFile - 1538 601 00026760 WriteFileEx - 1539 602 00026770 WriteFileGather - 1540 603 0003C280 WritePrivateProfileSectionA - 1541 604 00025420 WritePrivateProfileSectionW - 1542 605 0003C2E0 WritePrivateProfileStringA - 1543 606 00015100 WritePrivateProfileStringW - 1544 607 0003C350 WritePrivateProfileStructA - 1545 608 0003C4A0 WritePrivateProfileStructW - 1546 609 0001EF00 WriteProcessMemory - 1547 60A 0003C600 WriteProfileSectionA - 1548 60B 0003C610 WriteProfileSectionW - 1549 60C 0003C620 WriteProfileStringA - 1550 60D 0003C630 WriteProfileStringW - 1551 60E 0004D470 WriteTapemark - 1552 60F 000431E0 ZombifyActCtx - 1553 610 0004E6C0 ZombifyActCtxWorker - 1554 611 __C_specific_handler (forwarded to NTDLL.__C_specific_handler) - 1555 612 __chkstk (forwarded to NTDLL.__chkstk) - 1556 613 __misaligned_access (forwarded to NTDLL.__misaligned_access) - 1557 614 00018DD0 _hread - 1558 615 0003F260 _hwrite - 1559 616 0001D3F0 _lclose - 1560 617 0003F190 _lcreat - 1561 618 00018B70 _llseek - 1562 619 _local_unwind (forwarded to NTDLL._local_unwind) - 1563 61A 0003F1F0 _lopen - 1564 61B 00018DD0 _lread - 1565 61C 0003F260 _lwrite - 1566 61D 000217D0 lstrcat - 1567 61E 000217D0 lstrcatA - 1568 61F 00024400 lstrcatW - 1569 620 0001E730 lstrcmp - 1570 621 0001E730 lstrcmpA - 1571 622 0001C510 lstrcmpW - 1572 623 0001C390 lstrcmpi - 1573 624 0001C390 lstrcmpiA - 1574 625 00018B60 lstrcmpiW - 1575 626 0001F5A0 lstrcpy - 1576 627 0001F5A0 lstrcpyA - 1577 628 00021420 lstrcpyW - 1578 629 000431F0 lstrcpyn - 1579 62A 000431F0 lstrcpynA - 1580 62B 00023A70 lstrcpynW - 1581 62C 0001C400 lstrlen - 1582 62D 0001C400 lstrlenA - 1583 62E 00018A40 lstrlenW - 1584 62F 000212D0 timeBeginPeriod - 1585 630 0001F5F0 timeEndPeriod - 1586 631 000242E0 timeGetDevCaps - 1587 632 00044820 timeGetSystemTime - 1588 633 0001E0C0 timeGetTime - 1589 634 0001C510 uaw_lstrcmpW - 1590 635 00018B60 uaw_lstrcmpiW - 1591 636 00036BA0 uaw_lstrlenW - 1592 637 00036BF0 uaw_wcschr - 1593 638 00036C10 uaw_wcscpy - 1594 639 00036C40 uaw_wcsicmp - 1595 63A 00036C50 uaw_wcslen - 1596 63B 00036C70 uaw_wcsrchr - - Summary - - 1000 .data - 1000 .didat - 6000 .pdata - 2F000 .rdata - 1000 .reloc - 1000 .rsrc - 73000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\ntdll.dll - -File Type: DLL - - Section contains the following exports for ntdll.dll - - 00000000 characteristics - 64781AF1 time date stamp Wed May 31 21:13:37 2023 - 0.00 version - 8 ordinal base - 2224 number of functions - 2223 number of names - - ordinal hint RVA name - - 9 0 0004F0D0 A_SHAFinal - 10 1 0004F210 A_SHAInit - 11 2 0004F250 A_SHAUpdate - 12 3 00079380 AlpcAdjustCompletionListConcurrencyCount - 13 4 00062D50 AlpcFreeCompletionListMessage - 14 5 000CAC90 AlpcGetCompletionListLastMessageInformation - 15 6 000CACB0 AlpcGetCompletionListMessageAttributes - 16 7 0006AB50 AlpcGetHeaderSize - 17 8 0006AB10 AlpcGetMessageAttribute - 18 9 00034CB0 AlpcGetMessageFromCompletionList - 19 A 00079020 AlpcGetOutstandingCompletionListMessageCount - 20 B 0006AAB0 AlpcInitializeMessageAttribute - 21 C 000779C0 AlpcMaxAllowedMessageLength - 22 D 00078630 AlpcRegisterCompletionList - 23 E 00064CF0 AlpcRegisterCompletionListWorkerThread - 24 F 00078FE0 AlpcRundownCompletionList - 25 10 00079000 AlpcUnregisterCompletionList - 26 11 00064C80 AlpcUnregisterCompletionListWorkerThread - 27 12 00021030 ApiSetQueryApiSetPresence - 28 13 00008010 CsrAllocateCaptureBuffer - 29 14 00007FD0 CsrAllocateMessagePointer - 30 15 00007D90 CsrCaptureMessageBuffer - 31 16 00007DF0 CsrCaptureMessageMultiUnicodeStringsInPlace - 32 17 00007F10 CsrCaptureMessageString - 33 18 000BADB0 CsrCaptureTimeout - 34 19 00007C10 CsrClientCallServer - 35 1A 00004320 CsrClientConnectToServer - 36 1B 00007BE0 CsrFreeCaptureBuffer - 37 1C 000BADD0 CsrGetProcessId - 38 1D 000759D0 CsrIdentifyAlertableThread - 39 1E 000C0F00 CsrSetPriorityClass - 40 1F 000BADF0 CsrVerifyRegion - 41 20 00094F40 DbgBreakPoint - 42 21 00010000 DbgPrint - 43 22 0000F9B0 DbgPrintEx - 44 23 000CACF0 DbgPrintReturnControlC - 45 24 000CAD40 DbgPrompt - 46 25 000CAD80 DbgQueryDebugFilterState - 47 26 000CAD90 DbgSetDebugFilterState - 48 27 000BBF00 DbgUiConnectToDbg - 49 28 000BBF70 DbgUiContinue - 50 29 000BBFA0 DbgUiConvertStateChangeStructure - 51 2A 000BBFB0 DbgUiConvertStateChangeStructureEx - 52 2B 000BC250 DbgUiDebugActiveProcess - 53 2C 000BC2B0 DbgUiGetThreadDebugObject - 54 2D 000BC2D0 DbgUiIssueRemoteBreakin - 55 2E 000BC340 DbgUiRemoteBreakin - 56 2F 000BC3B0 DbgUiSetThreadDebugObject - 57 30 000BC3D0 DbgUiStopDebugging - 58 31 000BC3F0 DbgUiWaitStateChange - 59 32 00094F50 DbgUserBreakPoint - 60 33 000F3B40 EtwCreateTraceInstanceId - 61 34 0000C140 EtwDeliverDataBlock - 62 35 000F3BA0 EtwEnumerateProcessRegGuids - 63 36 000639F0 EtwEventActivityIdControl - 64 37 0000CD00 EtwEventEnabled - 65 38 00075700 EtwEventProviderEnabled - 66 39 000390B0 EtwEventRegister - 67 3A 0000E180 EtwEventSetInformation - 68 3B 0000E360 EtwEventUnregister - 69 3C 0000F6B0 EtwEventWrite - 70 3D 0000CDE0 EtwEventWriteEndScenario - 71 3E 0000F660 EtwEventWriteEx - 72 3F 0000F610 EtwEventWriteFull - 73 40 00077810 EtwEventWriteNoRegistration - 74 41 00081390 EtwEventWriteStartScenario - 75 42 000F3CC0 EtwEventWriteString - 76 43 0000F6F0 EtwEventWriteTransfer - 77 44 00075790 EtwGetTraceEnableFlags - 78 45 000757D0 EtwGetTraceEnableLevel - 79 46 00074C20 EtwGetTraceLoggerHandle - 80 47 0007EB10 EtwLogTraceEvent - 81 48 00038930 EtwNotificationRegister - 82 49 0000E370 EtwNotificationUnregister - 83 4A 0000A160 EtwProcessPrivateLoggerRequest - 84 4B 00081720 EtwRegisterSecurityProvider - 85 4C 00069BE0 EtwRegisterTraceGuidsA - 86 4D 00069C20 EtwRegisterTraceGuidsW - 87 4E 00002A90 EtwReplyNotification - 88 4F 0000EA20 EtwSendNotification - 89 50 000F3EF0 EtwSetMark - 90 51 000F3F20 EtwTraceEventInstance - 91 52 0000E4E0 EtwTraceMessage - 92 53 0000E510 EtwTraceMessageVa - 93 54 0000E310 EtwUnregisterTraceGuids - 94 55 0006DE30 EtwWriteUMSecurityEvent - 95 56 00076080 EtwpCreateEtwThread - 96 57 0000CAA0 EtwpGetCpuSpeed - 97 58 000F4EB0 EvtIntReportAuthzEventAndSourceAsync - 98 59 0000E5E0 EvtIntReportEventAndSourceAsync - 99 5A 00094FF0 ExpInterlockedPopEntrySListEnd - 100 5B 00094FE7 ExpInterlockedPopEntrySListFault - 101 5C 00094FD7 ExpInterlockedPopEntrySListResume - 102 5D 00095310 KiRaiseUserExceptionDispatcher - 103 5E 00095150 KiUserApcDispatcher - 104 5F 00095250 KiUserCallbackDispatcher - 105 60 000952A0 KiUserExceptionDispatcher - 106 61 00157320 KiUserInvertedFunctionTable - 107 62 00073690 LdrAccessResource - 108 63 00059690 LdrAddDllDirectory - 109 64 0006AE70 LdrAddLoadAsDataTable - 110 65 0007C880 LdrAddRefDll - 111 66 000BAE40 LdrAppxHandleIntegrityFailure - 112 67 0006F270 LdrDisableThreadCalloutsForDll - 113 68 000CB040 LdrEnumResources - 114 69 000754A0 LdrEnumerateLoadedModules - 115 6A 000BC670 LdrFastFailInLoaderCallout - 116 6B 00069A90 LdrFindEntryForAddress - 117 6C 000CB310 LdrFindResourceDirectory_U - 118 6D 00074A00 LdrFindResourceEx_U - 119 6E 0006FE80 LdrFindResource_U - 120 6F 00080390 LdrFlushAlternateResourceModules - 121 70 00072060 LdrGetDllDirectory - 122 71 0006C070 LdrGetDllFullName - 123 72 00018950 LdrGetDllHandle - 124 73 0006BD10 LdrGetDllHandleByMapping - 125 74 0006CB20 LdrGetDllHandleByName - 126 75 000185D0 LdrGetDllHandleEx - 127 76 00036750 LdrGetDllPath - 128 77 000BC6A0 LdrGetFailureData - 129 78 000CB330 LdrGetFileNameFromLoadAsDataTable - 130 79 00074080 LdrGetKnownDllSectionHandle - 131 7A 00003560 LdrGetProcedureAddress - 132 7B 00079CC0 LdrGetProcedureAddressEx - 133 7C 00016020 LdrGetProcedureAddressForCaller - 134 7D 000BDBA0 LdrInitShimEngineDynamic - 135 7E 0006B9A0 LdrInitializeThunk - 136 7F 00066340 LdrLoadAlternateResourceModule - 137 80 0001C360 LdrLoadAlternateResourceModuleEx - 138 81 0001AF60 LdrLoadDll - 139 82 000086A0 LdrLockLoaderLock - 140 83 000CBE70 LdrOpenImageFileOptionsKey - 141 84 000778D0 LdrProcessInitializationComplete - 142 85 000CBF60 LdrProcessRelocationBlock - 143 86 000CBF90 LdrProcessRelocationBlockEx - 144 87 00070D60 LdrQueryImageFileExecutionOptions - 145 88 00070DA0 LdrQueryImageFileExecutionOptionsEx - 146 89 000710F0 LdrQueryImageFileKeyOption - 147 8A 000BC6B0 LdrQueryModuleServiceTags - 148 8B 000BCCB0 LdrQueryOptionalDelayLoadedAPI - 149 8C 00002FF0 LdrQueryProcessModuleInformation - 150 8D 00078530 LdrRegisterDllNotification - 151 8E 000C9170 LdrRemoveDllDirectory - 152 8F 0006B320 LdrRemoveLoadAsDataTable - 153 90 000CC450 LdrResFindResource - 154 91 0006D940 LdrResFindResourceDirectory - 155 92 00056B30 LdrResGetRCConfig - 156 93 00080D20 LdrResRelease - 157 94 0001AAA0 LdrResSearchResource - 158 95 00016DF0 LdrResolveDelayLoadedAPI - 159 96 000BCD90 LdrResolveDelayLoadsFromDll - 160 97 0001A8A0 LdrRscIsTypeExist - 161 98 000759D0 LdrSetAppCompatDllRedirectionCallback - 162 99 00077980 LdrSetDefaultDllDirectories - 163 9A 00001540 LdrSetDllDirectory - 164 9B 00076DB0 LdrSetDllManifestProber - 165 9C 000BCB30 LdrSetImplicitPathOptions - 166 9D 00081760 LdrSetMUICacheType - 167 9E 00044390 LdrShutdownProcess - 168 9F 00021580 LdrShutdownThread - 169 A0 000756F0 LdrStandardizeSystemPath - 170 A1 00157290 LdrSystemDllInitBlock - 171 A2 00043260 LdrUnloadAlternateResourceModule - 172 A3 00043270 LdrUnloadAlternateResourceModuleEx - 173 A4 00038190 LdrUnloadDll - 174 A5 00070620 LdrUnlockLoaderLock - 175 A6 000BCB90 LdrUnregisterDllNotification - 176 A7 000BCC40 LdrVerifyImageMatchesChecksum - 177 A8 0007ED70 LdrVerifyImageMatchesChecksumEx - 178 A9 0001ADA0 LdrpResGetMappingSize - 179 AA 00018C10 LdrpResGetResourceDirectory - 180 AB 000F3910 MD4Final - 181 AC 000F39E0 MD4Init - 182 AD 000F3A10 MD4Update - 183 AE 00062340 MD5Final - 184 AF 000741E0 MD5Init - 185 B0 00062410 MD5Update - 186 B1 00144B42 NlsAnsiCodePage - 187 B2 00144FA3 NlsMbCodePageTag - 188 B3 00144FA2 NlsMbOemCodePageTag - 189 B4 00093390 NtAcceptConnectPort - 190 B5 00093370 NtAccessCheck - 191 B6 00093600 NtAccessCheckAndAuditAlarm - 192 B7 000939A0 NtAccessCheckByType - 193 B8 00093900 NtAccessCheckByTypeAndAuditAlarm - 194 B9 000939B0 NtAccessCheckByTypeResultList - 195 BA 000939C0 NtAccessCheckByTypeResultListAndAuditAlarm - 196 BB 000939D0 NtAccessCheckByTypeResultListAndAuditAlarmByHandle - 197 BC 000937E0 NtAddAtom - 198 BD 000939E0 NtAddAtomEx - 199 BE 000939F0 NtAddBootEntry - 200 BF 00093A00 NtAddDriverEntry - 201 C0 00093A10 NtAdjustGroupsToken - 202 C1 00093780 NtAdjustPrivilegesToken - 203 C2 00093A20 NtAdjustTokenClaimsAndDeviceGroups - 204 C3 00093A30 NtAlertResumeThread - 205 C4 00093A40 NtAlertThread - 206 C5 00093A50 NtAlertThreadByThreadId - 207 C6 00093A60 NtAllocateLocallyUniqueId - 208 C7 00093A70 NtAllocateReserveObject - 209 C8 00093A80 NtAllocateUserPhysicalPages - 210 C9 00093A90 NtAllocateUuids - 211 CA 000934F0 NtAllocateVirtualMemory - 212 CB 00093AA0 NtAlpcAcceptConnectPort - 213 CC 00093AB0 NtAlpcCancelMessage - 214 CD 00093AC0 NtAlpcConnectPort - 215 CE 00093AD0 NtAlpcConnectPortEx - 216 CF 00093AE0 NtAlpcCreatePort - 217 D0 00093AF0 NtAlpcCreatePortSection - 218 D1 00093B00 NtAlpcCreateResourceReserve - 219 D2 00093B10 NtAlpcCreateSectionView - 220 D3 00093B20 NtAlpcCreateSecurityContext - 221 D4 00093B30 NtAlpcDeletePortSection - 222 D5 00093B40 NtAlpcDeleteResourceReserve - 223 D6 00093B50 NtAlpcDeleteSectionView - 224 D7 00093B60 NtAlpcDeleteSecurityContext - 225 D8 00093B70 NtAlpcDisconnectPort - 226 D9 00093B80 NtAlpcImpersonateClientContainerOfPort - 227 DA 00093B90 NtAlpcImpersonateClientOfPort - 228 DB 00093BA0 NtAlpcOpenSenderProcess - 229 DC 00093BB0 NtAlpcOpenSenderThread - 230 DD 00093BC0 NtAlpcQueryInformation - 231 DE 00093BD0 NtAlpcQueryInformationMessage - 232 DF 00093BE0 NtAlpcRevokeSecurityContext - 233 E0 00093BF0 NtAlpcSendWaitReceivePort - 234 E1 00093C00 NtAlpcSetInformation - 235 E2 00093830 NtApphelpCacheControl - 236 E3 00093C10 NtAreMappedFilesTheSame - 237 E4 00093C20 NtAssignProcessToJobObject - 238 E5 00093C30 NtAssociateWaitCompletionPacket - 239 E6 000933C0 NtCallbackReturn - 240 E7 00093940 NtCancelIoFile - 241 E8 00093C40 NtCancelIoFileEx - 242 E9 00093C50 NtCancelSynchronousIoFile - 243 EA 00093980 NtCancelTimer - 244 EB 00093C60 NtCancelTimer2 - 245 EC 00093C70 NtCancelWaitCompletionPacket - 246 ED 00093750 NtClearEvent - 247 EE 00093460 NtClose - 248 EF 00093720 NtCloseObjectAuditAlarm - 249 F0 00093C80 NtCommitComplete - 250 F1 00093C90 NtCommitEnlistment - 251 F2 00093CA0 NtCommitTransaction - 252 F3 00093CB0 NtCompactKeys - 253 F4 00093CC0 NtCompareObjects - 254 F5 00093CD0 NtCompareTokens - 255 F6 00093CE0 NtCompleteConnectPort - 256 F7 00093CF0 NtCompressKey - 257 F8 00093D00 NtConnectPort - 258 F9 000937A0 NtContinue - 259 FA 00093D10 NtCreateDebugObject - 260 FB 00093D20 NtCreateDirectoryObject - 261 FC 00093D30 NtCreateDirectoryObjectEx - 262 FD 00093D40 NtCreateEnlistment - 263 FE 000937F0 NtCreateEvent - 264 FF 00093D50 NtCreateEventPair - 265 100 000938C0 NtCreateFile - 266 101 00093D60 NtCreateIRTimer - 267 102 00093D70 NtCreateIoCompletion - 268 103 00093D80 NtCreateJobObject - 269 104 00093D90 NtCreateJobSet - 270 105 00093540 NtCreateKey - 271 106 00093DA0 NtCreateKeyTransacted - 272 107 00093DB0 NtCreateKeyedEvent - 273 108 00093DC0 NtCreateLowBoxToken - 274 109 00093DD0 NtCreateMailslotFile - 275 10A 00093DE0 NtCreateMutant - 276 10B 00093DF0 NtCreateNamedPipeFile - 277 10C 00093E00 NtCreatePagingFile - 278 10D 00093E10 NtCreatePartition - 279 10E 00093E20 NtCreatePort - 280 10F 00093E30 NtCreatePrivateNamespace - 281 110 00093E40 NtCreateProcess - 282 111 00093840 NtCreateProcessEx - 283 112 00093E50 NtCreateProfile - 284 113 00093E60 NtCreateProfileEx - 285 114 00093E70 NtCreateResourceManager - 286 115 00093810 NtCreateSection - 287 116 00093E80 NtCreateSemaphore - 288 117 00093E90 NtCreateSymbolicLinkObject - 289 118 00093850 NtCreateThread - 290 119 00093EA0 NtCreateThreadEx - 291 11A 00093EB0 NtCreateTimer - 292 11B 00093EC0 NtCreateTimer2 - 293 11C 00093ED0 NtCreateToken - 294 11D 00093EE0 NtCreateTokenEx - 295 11E 00093EF0 NtCreateTransaction - 296 11F 00093F00 NtCreateTransactionManager - 297 120 00093F10 NtCreateUserProcess - 298 121 00093F20 NtCreateWaitCompletionPacket - 299 122 00093F30 NtCreateWaitablePort - 300 123 00093F40 NtCreateWnfStateName - 301 124 00093F50 NtCreateWorkerFactory - 302 125 00093F60 NtDebugActiveProcess - 303 126 00093F70 NtDebugContinue - 304 127 000936B0 NtDelayExecution - 305 128 00093F80 NtDeleteAtom - 306 129 00093F90 NtDeleteBootEntry - 307 12A 00093FA0 NtDeleteDriverEntry - 308 12B 00093FB0 NtDeleteFile - 309 12C 00093FC0 NtDeleteKey - 310 12D 00093FD0 NtDeleteObjectAuditAlarm - 311 12E 00093FE0 NtDeletePrivateNamespace - 312 12F 00093FF0 NtDeleteValueKey - 313 130 00094000 NtDeleteWnfStateData - 314 131 00094010 NtDeleteWnfStateName - 315 132 000933E0 NtDeviceIoControlFile - 316 133 00094020 NtDisableLastKnownGood - 317 134 00094030 NtDisplayString - 318 135 00094040 NtDrawText - 319 136 00093730 NtDuplicateObject - 320 137 00093790 NtDuplicateToken - 321 138 00094050 NtEnableLastKnownGood - 322 139 00094060 NtEnumerateBootEntries - 323 13A 00094070 NtEnumerateDriverEntries - 324 13B 00093690 NtEnumerateKey - 325 13C 00094080 NtEnumerateSystemEnvironmentValuesEx - 326 13D 00094090 NtEnumerateTransactionObject - 327 13E 000934A0 NtEnumerateValueKey - 328 13F 000940A0 NtExtendSection - 329 140 000940B0 NtFilterBootOption - 330 141 000940C0 NtFilterToken - 331 142 000940D0 NtFilterTokenEx - 332 143 000934B0 NtFindAtom - 333 144 00093820 NtFlushBuffersFile - 334 145 000940E0 NtFlushBuffersFileEx - 335 146 000940F0 NtFlushInstallUILanguage - 336 147 00094100 NtFlushInstructionCache - 337 148 00094110 NtFlushKey - 338 149 00094120 NtFlushProcessWriteBuffers - 339 14A 00094130 NtFlushVirtualMemory - 340 14B 00094140 NtFlushWriteBuffer - 341 14C 00094150 NtFreeUserPhysicalPages - 342 14D 00093550 NtFreeVirtualMemory - 343 14E 00094160 NtFreezeRegistry - 344 14F 00094170 NtFreezeTransactions - 345 150 00093700 NtFsControlFile - 346 151 00094180 NtGetCachedSigningLevel - 347 152 00094190 NtGetCompleteWnfStateSubscription - 348 153 000941A0 NtGetContextThread - 349 154 000941B0 NtGetCurrentProcessorNumber - 350 155 000941C0 NtGetCurrentProcessorNumberEx - 351 156 000941D0 NtGetDevicePowerState - 352 157 000941E0 NtGetMUIRegistryInfo - 353 158 000941F0 NtGetNextProcess - 354 159 00094200 NtGetNextThread - 355 15A 00094210 NtGetNlsSectionPtr - 356 15B 00094220 NtGetNotificationResourceManager - 357 15C 000CE160 NtGetTickCount - 358 15D 00094230 NtGetWriteWatch - 359 15E 00094240 NtImpersonateAnonymousToken - 360 15F 00093560 NtImpersonateClientOfPort - 361 160 00094250 NtImpersonateThread - 362 161 00094260 NtInitializeNlsFiles - 363 162 00094270 NtInitializeRegistry - 364 163 00094280 NtInitiatePowerAction - 365 164 00093860 NtIsProcessInJob - 366 165 00094290 NtIsSystemResumeAutomatic - 367 166 000942A0 NtIsUILanguageComitted - 368 167 000942B0 NtListenPort - 369 168 000942C0 NtLoadDriver - 370 169 000942D0 NtLoadKey - 371 16A 000942E0 NtLoadKey2 - 372 16B 00094F00 NtLoadKey3 - 373 16C 000942F0 NtLoadKeyEx - 374 16D 00094300 NtLockFile - 375 16E 00094310 NtLockProductActivationKeys - 376 16F 00094320 NtLockRegistryKey - 377 170 00094330 NtLockVirtualMemory - 378 171 00094340 NtMakePermanentObject - 379 172 00094350 NtMakeTemporaryObject - 380 173 00094360 NtManagePartition - 381 174 00094370 NtMapCMFModule - 382 175 00094380 NtMapUserPhysicalPages - 383 176 000933A0 NtMapUserPhysicalPagesScatter - 384 177 000935F0 NtMapViewOfSection - 385 178 00094390 NtModifyBootEntry - 386 179 000943A0 NtModifyDriverEntry - 387 17A 000943B0 NtNotifyChangeDirectoryFile - 388 17B 000943C0 NtNotifyChangeKey - 389 17C 000943D0 NtNotifyChangeMultipleKeys - 390 17D 000943E0 NtNotifyChangeSession - 391 17E 000938F0 NtOpenDirectoryObject - 392 17F 000943F0 NtOpenEnlistment - 393 180 00093770 NtOpenEvent - 394 181 00094400 NtOpenEventPair - 395 182 000936A0 NtOpenFile - 396 183 00094410 NtOpenIoCompletion - 397 184 00094420 NtOpenJobObject - 398 185 00093490 NtOpenKey - 399 186 00094430 NtOpenKeyEx - 400 187 00094440 NtOpenKeyTransacted - 401 188 00094450 NtOpenKeyTransactedEx - 402 189 00094460 NtOpenKeyedEvent - 403 18A 00094470 NtOpenMutant - 404 18B 00094480 NtOpenObjectAuditAlarm - 405 18C 00094490 NtOpenPartition - 406 18D 000944A0 NtOpenPrivateNamespace - 407 18E 000935D0 NtOpenProcess - 408 18F 000944B0 NtOpenProcessToken - 409 190 00093670 NtOpenProcessTokenEx - 410 191 000944C0 NtOpenResourceManager - 411 192 000936E0 NtOpenSection - 412 193 000944D0 NtOpenSemaphore - 413 194 000944E0 NtOpenSession - 414 195 000944F0 NtOpenSymbolicLinkObject - 415 196 00094500 NtOpenThread - 416 197 000935B0 NtOpenThreadToken - 417 198 00093660 NtOpenThreadTokenEx - 418 199 00094510 NtOpenTimer - 419 19A 00094520 NtOpenTransaction - 420 19B 00094530 NtOpenTransactionManager - 421 19C 00094540 NtPlugPlayControl - 422 19D 00093960 NtPowerInformation - 423 19E 00094550 NtPrePrepareComplete - 424 19F 00094560 NtPrePrepareEnlistment - 425 1A0 00094570 NtPrepareComplete - 426 1A1 00094580 NtPrepareEnlistment - 427 1A2 00094590 NtPrivilegeCheck - 428 1A3 000945A0 NtPrivilegeObjectAuditAlarm - 429 1A4 000945B0 NtPrivilegedServiceAuditAlarm - 430 1A5 000945C0 NtPropagationComplete - 431 1A6 000945D0 NtPropagationFailed - 432 1A7 00093870 NtProtectVirtualMemory - 433 1A8 000945E0 NtPulseEvent - 434 1A9 00093740 NtQueryAttributesFile - 435 1AA 000945F0 NtQueryBootEntryOrder - 436 1AB 00094600 NtQueryBootOptions - 437 1AC 00094610 NtQueryDebugFilterState - 438 1AD 000934C0 NtQueryDefaultLocale - 439 1AE 000937B0 NtQueryDefaultUILanguage - 440 1AF 000936C0 NtQueryDirectoryFile - 441 1B0 00094620 NtQueryDirectoryObject - 442 1B1 00094630 NtQueryDriverEntryOrder - 443 1B2 00094640 NtQueryEaFile - 444 1B3 000938D0 NtQueryEvent - 445 1B4 00094650 NtQueryFullAttributesFile - 446 1B5 00094660 NtQueryInformationAtom - 447 1B6 00094670 NtQueryInformationEnlistment - 448 1B7 00093480 NtQueryInformationFile - 449 1B8 00094680 NtQueryInformationJobObject - 450 1B9 00094690 NtQueryInformationPort - 451 1BA 00093500 NtQueryInformationProcess - 452 1BB 000946A0 NtQueryInformationResourceManager - 453 1BC 000935C0 NtQueryInformationThread - 454 1BD 00093580 NtQueryInformationToken - 455 1BE 000946B0 NtQueryInformationTransaction - 456 1BF 000946C0 NtQueryInformationTransactionManager - 457 1C0 000946D0 NtQueryInformationWorkerFactory - 458 1C1 000946E0 NtQueryInstallUILanguage - 459 1C2 000946F0 NtQueryIntervalProfile - 460 1C3 00094700 NtQueryIoCompletion - 461 1C4 000934D0 NtQueryKey - 462 1C5 00094710 NtQueryLicenseValue - 463 1C6 00094720 NtQueryMultipleValueKey - 464 1C7 00094730 NtQueryMutant - 465 1C8 00093470 NtQueryObject - 466 1C9 00094740 NtQueryOpenSubKeys - 467 1CA 00094750 NtQueryOpenSubKeysEx - 468 1CB 00093680 NtQueryPerformanceCounter - 469 1CC 00094760 NtQueryPortInformationProcess - 470 1CD 00094770 NtQueryQuotaInformationFile - 471 1CE 00093880 NtQuerySection - 472 1CF 00094780 NtQuerySecurityAttributesToken - 473 1D0 00094790 NtQuerySecurityObject - 474 1D1 000947A0 NtQuerySemaphore - 475 1D2 000947B0 NtQuerySymbolicLinkObject - 476 1D3 000947C0 NtQuerySystemEnvironmentValue - 477 1D4 000947D0 NtQuerySystemEnvironmentValueEx - 478 1D5 000936D0 NtQuerySystemInformation - 479 1D6 000947E0 NtQuerySystemInformationEx - 480 1D7 00093910 NtQuerySystemTime - 481 1D8 000936F0 NtQueryTimer - 482 1D9 000947F0 NtQueryTimerResolution - 483 1DA 000934E0 NtQueryValueKey - 484 1DB 000935A0 NtQueryVirtualMemory - 485 1DC 00093800 NtQueryVolumeInformationFile - 486 1DD 00094800 NtQueryWnfStateData - 487 1DE 00094810 NtQueryWnfStateNameInformation - 488 1DF 000937C0 NtQueueApcThread - 489 1E0 00094820 NtQueueApcThreadEx - 490 1E1 00094830 NtRaiseException - 491 1E2 00094840 NtRaiseHardError - 492 1E3 000933D0 NtReadFile - 493 1E4 00093650 NtReadFileScatter - 494 1E5 00094850 NtReadOnlyEnlistment - 495 1E6 000938B0 NtReadRequestData - 496 1E7 00093760 NtReadVirtualMemory - 497 1E8 00094860 NtRecoverEnlistment - 498 1E9 00094870 NtRecoverResourceManager - 499 1EA 00094880 NtRecoverTransactionManager - 500 1EB 00094890 NtRegisterProtocolAddressInformation - 501 1EC 000948A0 NtRegisterThreadTerminatePort - 502 1ED 000948B0 NtReleaseKeyedEvent - 503 1EE 00093570 NtReleaseMutant - 504 1EF 00093410 NtReleaseSemaphore - 505 1F0 000948C0 NtReleaseWorkerFactoryWorker - 506 1F1 00093400 NtRemoveIoCompletion - 507 1F2 000948D0 NtRemoveIoCompletionEx - 508 1F3 000948E0 NtRemoveProcessDebug - 509 1F4 000948F0 NtRenameKey - 510 1F5 00094900 NtRenameTransactionManager - 511 1F6 00094910 NtReplaceKey - 512 1F7 00094920 NtReplacePartitionUnit - 513 1F8 00093430 NtReplyPort - 514 1F9 00093420 NtReplyWaitReceivePort - 515 1FA 00093620 NtReplyWaitReceivePortEx - 516 1FB 00094930 NtReplyWaitReplyPort - 517 1FC 00094940 NtRequestPort - 518 1FD 00093590 NtRequestWaitReplyPort - 519 1FE 00094950 NtResetEvent - 520 1FF 00094960 NtResetWriteWatch - 521 200 00094970 NtRestoreKey - 522 201 00094980 NtResumeProcess - 523 202 00093890 NtResumeThread - 524 203 00094990 NtRevertContainerImpersonation - 525 204 000949A0 NtRollbackComplete - 526 205 000949B0 NtRollbackEnlistment - 527 206 000949C0 NtRollbackTransaction - 528 207 000949D0 NtRollforwardTransactionManager - 529 208 000949E0 NtSaveKey - 530 209 000949F0 NtSaveKeyEx - 531 20A 00094A00 NtSaveMergedKeys - 532 20B 00094A10 NtSecureConnectPort - 533 20C 00094A20 NtSerializeBoot - 534 20D 00094A30 NtSetBootEntryOrder - 535 20E 00094A40 NtSetBootOptions - 536 20F 00094A50 NtSetCachedSigningLevel - 537 210 00094A60 NtSetContextThread - 538 211 00094A70 NtSetDebugFilterState - 539 212 00094A80 NtSetDefaultHardErrorPort - 540 213 00094A90 NtSetDefaultLocale - 541 214 00094AA0 NtSetDefaultUILanguage - 542 215 00094AB0 NtSetDriverEntryOrder - 543 216 00094AC0 NtSetEaFile - 544 217 00093450 NtSetEvent - 545 218 00093640 NtSetEventBoostPriority - 546 219 00094AD0 NtSetHighEventPair - 547 21A 00094AE0 NtSetHighWaitLowEventPair - 548 21B 00094AF0 NtSetIRTimer - 549 21C 00094B00 NtSetInformationDebugObject - 550 21D 00094B10 NtSetInformationEnlistment - 551 21E 000935E0 NtSetInformationFile - 552 21F 00094B20 NtSetInformationJobObject - 553 220 00094B30 NtSetInformationKey - 554 221 00093930 NtSetInformationObject - 555 222 00093530 NtSetInformationProcess - 556 223 00094B40 NtSetInformationResourceManager - 557 224 00094B50 NtSetInformationSymbolicLink - 558 225 00093440 NtSetInformationThread - 559 226 00094B60 NtSetInformationToken - 560 227 00094B70 NtSetInformationTransaction - 561 228 00094B80 NtSetInformationTransactionManager - 562 229 00094B90 NtSetInformationVirtualMemory - 563 22A 00094BA0 NtSetInformationWorkerFactory - 564 22B 00094BB0 NtSetIntervalProfile - 565 22C 00094BC0 NtSetIoCompletion - 566 22D 00094BD0 NtSetIoCompletionEx - 567 22E 00094BE0 NtSetLdtEntries - 568 22F 00094BF0 NtSetLowEventPair - 569 230 00094C00 NtSetLowWaitHighEventPair - 570 231 00094C10 NtSetQuotaInformationFile - 571 232 00094C20 NtSetSecurityObject - 572 233 00094C30 NtSetSystemEnvironmentValue - 573 234 00094C40 NtSetSystemEnvironmentValueEx - 574 235 00094C50 NtSetSystemInformation - 575 236 00094C60 NtSetSystemPowerState - 576 237 00094C70 NtSetSystemTime - 577 238 00094C80 NtSetThreadExecutionState - 578 239 00093990 NtSetTimer - 579 23A 00094C90 NtSetTimer2 - 580 23B 00094CA0 NtSetTimerEx - 581 23C 00094CB0 NtSetTimerResolution - 582 23D 00094CC0 NtSetUuidSeed - 583 23E 00093970 NtSetValueKey - 584 23F 00094CD0 NtSetVolumeInformationFile - 585 240 00094CE0 NtSetWnfProcessNotificationEvent - 586 241 00094CF0 NtShutdownSystem - 587 242 00094D00 NtShutdownWorkerFactory - 588 243 00094D10 NtSignalAndWaitForSingleObject - 589 244 00094D20 NtSinglePhaseReject - 590 245 00094D30 NtStartProfile - 591 246 00094D40 NtStopProfile - 592 247 00094D50 NtSubscribeWnfStateChange - 593 248 00094D60 NtSuspendProcess - 594 249 00094D70 NtSuspendThread - 595 24A 00094D80 NtSystemDebugControl - 596 24B 00094D90 NtTerminateJobObject - 597 24C 00093630 NtTerminateProcess - 598 24D 000938A0 NtTerminateThread - 599 24E 00094DA0 NtTestAlert - 600 24F 00094DB0 NtThawRegistry - 601 250 00094DC0 NtThawTransactions - 602 251 00094DD0 NtTraceControl - 603 252 00093950 NtTraceEvent - 604 253 00094DE0 NtTranslateFilePath - 605 254 00094DF0 NtUmsThreadYield - 606 255 00094E00 NtUnloadDriver - 607 256 00094E10 NtUnloadKey - 608 257 00094E20 NtUnloadKey2 - 609 258 00094E30 NtUnloadKeyEx - 610 259 00094E40 NtUnlockFile - 611 25A 00094E50 NtUnlockVirtualMemory - 612 25B 00093610 NtUnmapViewOfSection - 613 25C 00094E60 NtUnmapViewOfSectionEx - 614 25D 00094E70 NtUnsubscribeWnfStateChange - 615 25E 00094E80 NtUpdateWnfStateData - 616 25F 00094E90 NtVdmControl - 617 260 00094EA0 NtWaitForAlertByThreadId - 618 261 00094EB0 NtWaitForDebugEvent - 619 262 00094EC0 NtWaitForKeyedEvent - 620 263 00093920 NtWaitForMultipleObjects - 621 264 00093510 NtWaitForMultipleObjects32 - 622 265 000933B0 NtWaitForSingleObject - 623 266 00094ED0 NtWaitForWorkViaWorkerFactory - 624 267 00094EE0 NtWaitHighEventPair - 625 268 00094EF0 NtWaitLowEventPair - 626 269 00093380 NtWorkerFactoryWorkerReady - 627 26A 000933F0 NtWriteFile - 628 26B 00093520 NtWriteFileGather - 629 26C 000938E0 NtWriteRequestData - 630 26D 00093710 NtWriteVirtualMemory - 631 26E 000937D0 NtYieldExecution - 632 26F 00093060 NtdllDefWindowProc_A - 633 270 00093070 NtdllDefWindowProc_W - 634 271 00093120 NtdllDialogWndProc_A - 635 272 00093130 NtdllDialogWndProc_W - 636 273 000CE430 PfxFindPrefix - 637 274 000CE510 PfxInitialize - 638 275 000CE530 PfxInsertPrefix - 639 276 000CE650 PfxRemovePrefix - 640 277 00058B60 PssNtCaptureSnapshot - 641 278 000833D0 PssNtDuplicateSnapshot - 642 279 000F6620 PssNtFreeRemoteSnapshot - 643 27A 000593C0 PssNtFreeSnapshot - 644 27B 00083440 PssNtFreeWalkMarker - 645 27C 00081EA0 PssNtQuerySnapshot - 646 27D 00059530 PssNtValidateDescriptor - 647 27E 000817F0 PssNtWalkSnapshot - 648 27F 0007DED0 RtlAbortRXact - 649 280 00063EB0 RtlAbsoluteToSelfRelativeSD - 650 281 00038170 RtlAcquirePebLock - 651 282 0006E1E0 RtlAcquirePrivilege - 652 283 0006C4E0 RtlAcquireReleaseSRWLockExclusive - 653 284 000618F0 RtlAcquireResourceExclusive - 654 285 000617A0 RtlAcquireResourceShared - 655 286 0002A1D0 RtlAcquireSRWLockExclusive - 656 287 00030590 RtlAcquireSRWLockShared - 657 288 000532D0 RtlActivateActivationContext - 658 289 00053320 RtlActivateActivationContextEx - 659 28A 00021A70 RtlActivateActivationContextUnsafeFast - 660 28B 0001FAC0 RtlAddAccessAllowedAce - 661 28C 00070BA0 RtlAddAccessAllowedAceEx - 662 28D 00073900 RtlAddAccessAllowedObjectAce - 663 28E 00078EC0 RtlAddAccessDeniedAce - 664 28F 00078940 RtlAddAccessDeniedAceEx - 665 290 00073850 RtlAddAccessDeniedObjectAce - 666 291 00066920 RtlAddAce - 667 292 00075B40 RtlAddActionToRXact - 668 293 00051DA0 RtlAddAtomToAtomTable - 669 294 00075BC0 RtlAddAttributeActionToRXact - 670 295 00078360 RtlAddAuditAccessAce - 671 296 00077340 RtlAddAuditAccessAceEx - 672 297 000738A0 RtlAddAuditAccessObjectAce - 673 298 000D0500 RtlAddCompoundAce - 674 299 000723F0 RtlAddFunctionTable - 675 29A 00062E80 RtlAddGrowableFunctionTable - 676 29B 000D1E70 RtlAddIntegrityLabelToBoundaryDescriptor - 677 29C 0004AA90 RtlAddMandatoryAce - 678 29D 00080750 RtlAddProcessTrustLabelAce - 679 29E 0003E5E0 RtlAddRefActivationContext - 680 29F 000759D0 RtlAddRefMemoryStream - 681 2A0 000D0670 RtlAddResourceAttributeAce - 682 2A1 00052A80 RtlAddSIDToBoundaryDescriptor - 683 2A2 000D09D0 RtlAddScopedPolicyIDAce - 684 2A3 00083610 RtlAddVectoredContinueHandler - 685 2A4 00066CB0 RtlAddVectoredExceptionHandler - 686 2A5 00017410 RtlAddressInSectionTable - 687 2A6 0006F080 RtlAdjustPrivilege - 688 2A7 0006C960 RtlAllocateActivationContextStack - 689 2A8 0004EFA0 RtlAllocateAndInitializeSid - 690 2A9 000CE700 RtlAllocateAndInitializeSidEx - 691 2AA 00052430 RtlAllocateHandle - 692 2AB 0002EAB0 RtlAllocateHeap - 693 2AC 000FD010 RtlAllocateMemoryBlockLookaside - 694 2AD 000FD0F0 RtlAllocateMemoryZone - 695 2AE 00076DD0 RtlAllocateWnfSerializationGroup - 696 2AF 00023800 RtlAnsiCharToUnicodeChar - 697 2B0 000D2500 RtlAnsiStringToUnicodeSize - 698 2B1 00023710 RtlAnsiStringToUnicodeString - 699 2B2 000D2560 RtlAppendAsciizToString - 700 2B3 000BB960 RtlAppendPathElement - 701 2B4 000D25D0 RtlAppendStringToString - 702 2B5 0003FE70 RtlAppendUnicodeStringToString - 703 2B6 0001F7D0 RtlAppendUnicodeToString - 704 2B7 000C6C60 RtlApplicationVerifierStop - 705 2B8 0007DDF0 RtlApplyRXact - 706 2B9 0007DEA0 RtlApplyRXactNoFlush - 707 2BA 000BB470 RtlAppxIsFileOwnedByTrustedInstaller - 708 2BB 00071710 RtlAreAllAccessesGranted - 709 2BC 000CE7D0 RtlAreAnyAccessesGranted - 710 2BD 00077690 RtlAreBitsClear - 711 2BE 00063950 RtlAreBitsSet - 712 2BF 000D3800 RtlAssert - 713 2C0 000745B0 RtlAvlInsertNodeEx - 714 2C1 00074210 RtlAvlRemoveNode - 715 2C2 000D3930 RtlBarrier - 716 2C3 000D3A70 RtlBarrierForDelete - 717 2C4 000F5FC0 RtlCancelTimer - 718 2C5 0005D5A0 RtlCanonicalizeDomainName - 719 2C6 0004A510 RtlCapabilityCheck - 720 2C7 000953F0 RtlCaptureContext - 721 2C8 00012600 RtlCaptureStackBackTrace - 722 2C9 0006DAB0 RtlCharToInteger - 723 2CA 0006C9F0 RtlCheckForOrphanedCriticalSections - 724 2CB 0000CED0 RtlCheckPortableOperatingSystem - 725 2CC 0000D540 RtlCheckRegistryKey - 726 2CD 000C2C70 RtlCheckSandboxedToken - 727 2CE 0004A810 RtlCheckTokenCapability - 728 2CF 000CE7E0 RtlCheckTokenMembership - 729 2D0 0004AC70 RtlCheckTokenMembershipEx - 730 2D1 00047350 RtlCleanUpTEBLangLists - 731 2D2 00058740 RtlClearAllBits - 732 2D3 000D26A0 RtlClearBit - 733 2D4 00056360 RtlClearBits - 734 2D5 000C14B0 RtlCloneMemoryStream - 735 2D6 000C23C0 RtlCloneUserProcess - 736 2D7 000D7C10 RtlCmDecodeMemIoResource - 737 2D8 000D7C80 RtlCmEncodeMemIoResource - 738 2D9 000C3580 RtlCommitDebugInfo - 739 2DA 000C14B0 RtlCommitMemoryStream - 740 2DB 000789C0 RtlCompactHeap - 741 2DC 000DB7F0 RtlCompareAltitudes - 742 2DD 00095950 RtlCompareMemory - 743 2DE 000959D0 RtlCompareMemoryUlong - 744 2DF 0007FA20 RtlCompareString - 745 2E0 00035550 RtlCompareUnicodeString - 746 2E1 00035590 RtlCompareUnicodeStrings - 747 2E2 000C26A0 RtlCompleteProcessCloning - 748 2E3 0005B050 RtlCompressBuffer - 749 2E4 0005D1D0 RtlComputeCrc32 - 750 2E5 000CA9B0 RtlComputeImportTableHash - 751 2E6 000C1150 RtlComputePrivatizedDllName_U - 752 2E7 000804F0 RtlConnectToSm - 753 2E8 00071720 RtlConsoleMultiByteToUnicodeN - 754 2E9 00074AA0 RtlContractHashTable - 755 2EA 000455C0 RtlConvertDeviceFamilyInfoToString - 756 2EB 00075A50 RtlConvertExclusiveToShared - 757 2EC 000D4710 RtlConvertLCIDToString - 758 2ED 000D0430 RtlConvertSRWLockExclusiveToShared - 759 2EE 00061890 RtlConvertSharedToExclusive - 760 2EF 0001FAF0 RtlConvertSidToUnicodeString - 761 2F0 000C2FD0 RtlConvertToAutoInheritSecurityObject - 762 2F1 000D26B0 RtlCopyBitMap - 763 2F2 00066E30 RtlCopyContext - 764 2F3 000DBC70 RtlCopyExtendedContext - 765 2F4 0006C9E0 RtlCopyLuid - 766 2F5 000CE800 RtlCopyLuidAndAttributesArray - 767 2F6 00076F60 RtlCopyMappedMemory - 768 2F7 00097C40 RtlCopyMemory - 769 2F8 00095A00 RtlCopyMemoryNonTemporal - 770 2F9 000C14B0 RtlCopyMemoryStreamTo - 771 2FA 000C14B0 RtlCopyOutOfProcessMemoryStreamTo - 772 2FB 00063C40 RtlCopySecurityDescriptor - 773 2FC 0004E670 RtlCopySid - 774 2FD 000CE830 RtlCopySidAndAttributesArray - 775 2FE 00077640 RtlCopyString - 776 2FF 0001FA40 RtlCopyUnicodeString - 777 300 000DC3E0 RtlCrc32 - 778 301 000DC400 RtlCrc64 - 779 302 0004C940 RtlCreateAcl - 780 303 00056410 RtlCreateActivationContext - 781 304 0007FC10 RtlCreateAndSetSD - 782 305 000789B0 RtlCreateAtomTable - 783 306 000DC8C0 RtlCreateBootStatusDataFile - 784 307 00076A30 RtlCreateBoundaryDescriptor - 785 308 00045F30 RtlCreateEnvironment - 786 309 00046570 RtlCreateEnvironmentEx - 787 30A 00065460 RtlCreateHashTable - 788 30B 000DBB90 RtlCreateHashTableEx - 789 30C 00005330 RtlCreateHeap - 790 30D 00072720 RtlCreateMemoryBlockLookaside - 791 30E 000728F0 RtlCreateMemoryZone - 792 30F 000C27B0 RtlCreateProcessParameters - 793 310 00045F50 RtlCreateProcessParametersEx - 794 311 000C15C0 RtlCreateProcessReflection - 795 312 00052C80 RtlCreateQueryDebugBuffer - 796 313 000D4050 RtlCreateRegistryKey - 797 314 0004E5C0 RtlCreateSecurityDescriptor - 798 315 0004EE80 RtlCreateServiceSid - 799 316 0007F270 RtlCreateSystemVolumeInformationFolder - 800 317 00003610 RtlCreateTagHeap - 801 318 0007C410 RtlCreateTimer - 802 319 0007A9C0 RtlCreateTimerQueue - 803 31A 000DDC20 RtlCreateUmsCompletionList - 804 31B 000DDD40 RtlCreateUmsThreadContext - 805 31C 00020B50 RtlCreateUnicodeString - 806 31D 00020C20 RtlCreateUnicodeStringFromAsciiz - 807 31E 0007FF60 RtlCreateUserProcess - 808 31F 000C2FE0 RtlCreateUserSecurityObject - 809 320 00001780 RtlCreateUserStack - 810 321 000760F0 RtlCreateUserThread - 811 322 00052A90 RtlCreateVirtualAccountSid - 812 323 0001EEE0 RtlCultureNameToLCID - 813 324 000CD1A0 RtlCustomCPToUnicodeN - 814 325 0005CB50 RtlCutoverTimeToSystemTime - 815 326 000C3590 RtlDeCommitDebugInfo - 816 327 000C2820 RtlDeNormalizeProcessParams - 817 328 00063700 RtlDeactivateActivationContext - 818 329 00023B70 RtlDeactivateActivationContextUnsafeFast - 819 32A 000756F0 RtlDebugPrintTimes - 820 32B 00065F20 RtlDecodePointer - 821 32C 000C74B0 RtlDecodeRemotePointer - 822 32D 000777E0 RtlDecodeSystemPointer - 823 32E 0005A4C0 RtlDecompressBuffer - 824 32F 0005A560 RtlDecompressBufferEx - 825 330 000DB9F0 RtlDecompressFragment - 826 331 00050950 RtlDefaultNpAcl - 827 332 00061280 RtlDelete - 828 333 0006EFA0 RtlDeleteAce - 829 334 00051CA0 RtlDeleteAtomFromAtomTable - 830 335 000D3BC0 RtlDeleteBarrier - 831 336 00029F80 RtlDeleteBoundaryDescriptor - 832 337 000081B0 RtlDeleteCriticalSection - 833 338 00060D50 RtlDeleteElementGenericTable - 834 339 000604B0 RtlDeleteElementGenericTableAvl - 835 33A 00060750 RtlDeleteElementGenericTableAvlEx - 836 33B 000701E0 RtlDeleteFunctionTable - 837 33C 000706B0 RtlDeleteGrowableFunctionTable - 838 33D 00077D20 RtlDeleteHashTable - 839 33E 00061320 RtlDeleteNoSplay - 840 33F 00081660 RtlDeleteRegistryValue - 841 340 00008160 RtlDeleteResource - 842 341 000705B0 RtlDeleteSecurityObject - 843 342 0007C2C0 RtlDeleteTimer - 844 343 000F5FD0 RtlDeleteTimerQueue - 845 344 0007A630 RtlDeleteTimerQueueEx - 846 345 000DDE50 RtlDeleteUmsCompletionList - 847 346 000DDEB0 RtlDeleteUmsThreadContext - 848 347 000DDF10 RtlDequeueUmsCompletionListItems - 849 348 000DE880 RtlDeregisterSecureMemoryCacheCallback - 850 349 0007A620 RtlDeregisterWait - 851 34A 0007B3C0 RtlDeregisterWaitEx - 852 34B 00050D00 RtlDeriveCapabilitySidsFromName - 853 34C 000D1C10 RtlDestroyAtomTable - 854 34D 00046550 RtlDestroyEnvironment - 855 34E 00078E30 RtlDestroyHandleTable - 856 34F 00004920 RtlDestroyHeap - 857 350 00078870 RtlDestroyMemoryBlockLookaside - 858 351 000788D0 RtlDestroyMemoryZone - 859 352 00074990 RtlDestroyProcessParameters - 860 353 00069220 RtlDestroyQueryDebugBuffer - 861 354 00044990 RtlDetectHeapLeaks - 862 355 00057720 RtlDetermineDosPathNameType_U - 863 356 000BB660 RtlDisableThreadProfiling - 864 357 00038910 RtlDllShutdownInProgress - 865 358 0006CF30 RtlDnsHostNameToComputerName - 866 359 00079060 RtlDoesFileExists_U - 867 35A 00024620 RtlDosApplyFileIsolationRedirection_Ustr - 868 35B 0006DB60 RtlDosPathNameToNtPathName_U - 869 35C 0001BFF0 RtlDosPathNameToNtPathName_U_WithStatus - 870 35D 0001BD70 RtlDosPathNameToRelativeNtPathName_U - 871 35E 00025870 RtlDosPathNameToRelativeNtPathName_U_WithStatus - 872 35F 00057510 RtlDosSearchPath_U - 873 360 0005F890 RtlDosSearchPath_Ustr - 874 361 000D2040 RtlDowncaseUnicodeChar - 875 362 0006A620 RtlDowncaseUnicodeString - 876 363 000C1F00 RtlDumpResource - 877 364 0006B800 RtlDuplicateUnicodeString - 878 365 000D1CF0 RtlEmptyAtomTable - 879 366 000C1F50 RtlEnableEarlyCriticalSectionEventCreation - 880 367 000BB6D0 RtlEnableThreadProfiling - 881 368 00066DE0 RtlEncodePointer - 882 369 000C7520 RtlEncodeRemotePointer - 883 36A 00077D00 RtlEncodeSystemPointer - 884 36B 00073640 RtlEndEnumerationHashTable - 885 36C 000756F0 RtlEndStrongEnumerationHashTable - 886 36D 000DBBA0 RtlEndWeakEnumerationHashTable - 887 36E 00034F30 RtlEnterCriticalSection - 888 36F 000DDFA0 RtlEnterUmsSchedulingMode - 889 370 000D8080 RtlEnumProcessHeaps - 890 371 00065360 RtlEnumerateEntryHashTable - 891 372 00060CC0 RtlEnumerateGenericTable - 892 373 00062270 RtlEnumerateGenericTableAvl - 893 374 000DE620 RtlEnumerateGenericTableLikeADirectory - 894 375 00061720 RtlEnumerateGenericTableWithoutSplaying - 895 376 00062290 RtlEnumerateGenericTableWithoutSplayingAvl - 896 377 0005D4E0 RtlEqualComputerName - 897 378 0005D520 RtlEqualDomainName - 898 379 000CE8F0 RtlEqualLuid - 899 37A 0004D4E0 RtlEqualPrefixSid - 900 37B 0004A430 RtlEqualSid - 901 37C 00064E70 RtlEqualString - 902 37D 00023CC0 RtlEqualUnicodeString - 903 37E 000790C0 RtlEqualWnfChangeStamps - 904 37F 00083480 RtlEraseUnicodeString - 905 380 000DF690 RtlEthernetAddressToStringA - 906 381 000DF8F0 RtlEthernetAddressToStringW - 907 382 000DF960 RtlEthernetStringToAddressA - 908 383 000DFAB0 RtlEthernetStringToAddressW - 909 384 000DE080 RtlExecuteUmsThread - 910 385 000442C0 RtlExitUserProcess - 911 386 00009FA0 RtlExitUserThread - 912 387 00038310 RtlExpandEnvironmentStrings - 913 388 0000F480 RtlExpandEnvironmentStrings_U - 914 389 00064FA0 RtlExpandHashTable - 915 38A 000D1E80 RtlExtendMemoryBlockLookaside - 916 38B 000D1EF0 RtlExtendMemoryZone - 917 38C 000D28B0 RtlExtractBitMap - 918 38D 00095B20 RtlFillMemory - 919 38E 000756F0 RtlFinalReleaseOutOfProcessMemoryStream - 920 38F 0004D7F0 RtlFindAceByType - 921 390 000240F0 RtlFindActivationContextSectionGuid - 922 391 00024ED0 RtlFindActivationContextSectionString - 923 392 00026DA0 RtlFindCharInUnicodeString - 924 393 00001010 RtlFindClearBits - 925 394 00055DD0 RtlFindClearBitsAndSet - 926 395 000D2A50 RtlFindClearRuns - 927 396 000D7D70 RtlFindClosestEncodableLength - 928 397 00059F40 RtlFindLastBackwardRunClear - 929 398 00078220 RtlFindLeastSignificantBit - 930 399 000D2D10 RtlFindLongestRunClear - 931 39A 000655B0 RtlFindMessage - 932 39B 00078340 RtlFindMostSignificantBit - 933 39C 00003180 RtlFindNextForwardRunClear - 934 39D 00081040 RtlFindSetBits - 935 39E 000D2D50 RtlFindSetBitsAndClear - 936 39F 000D20A0 RtlFindUnicodeSubstring - 937 3A0 00094FC0 RtlFirstEntrySList - 938 3A1 0001FF30 RtlFirstFreeAce - 939 3A2 00055BF0 RtlFlsAlloc - 940 3A3 00056230 RtlFlsFree - 941 3A4 000094D0 RtlFlushHeaps - 942 3A5 000DE940 RtlFlushSecureMemoryCache - 943 3A6 0001F8D0 RtlFormatCurrentUserKeyPath - 944 3A7 000DFBF0 RtlFormatMessage - 945 3A8 00010330 RtlFormatMessageEx - 946 3A9 00063620 RtlFreeActivationContextStack - 947 3AA 00027180 RtlFreeAnsiString - 948 3AB 00051C60 RtlFreeHandle - 949 3AC 0002A900 RtlFreeHeap - 950 3AD 000FD150 RtlFreeMemoryBlockLookaside - 951 3AE 00076E70 RtlFreeOemString - 952 3AF 0006D900 RtlFreeSid - 953 3B0 000635E0 RtlFreeThreadActivationContextStack - 954 3B1 00027180 RtlFreeUnicodeString - 955 3B2 00002EB0 RtlFreeUserStack - 956 3B3 000648E0 RtlGUIDFromString - 957 3B4 000DFDF0 RtlGenerate8dot3Name - 958 3B5 0006BB40 RtlGetAce - 959 3B6 0003DA60 RtlGetActiveActivationContext - 960 3B7 0003EB80 RtlGetAppContainerNamedObjectPath - 961 3B8 000030B0 RtlGetAppContainerParent - 962 3B9 0004A790 RtlGetAppContainerSidType - 963 3BA 000D3CE0 RtlGetCallersAddress - 964 3BB 00073720 RtlGetCompressionWorkSpaceSize - 965 3BC 00070090 RtlGetControlSecurityDescriptor - 966 3BD 00068600 RtlGetCriticalSectionRecursionCount - 967 3BE 0006F630 RtlGetCurrentDirectory_U - 968 3BF 0007EBA0 RtlGetCurrentPeb - 969 3C0 00092F60 RtlGetCurrentProcessorNumber - 970 3C1 00092F90 RtlGetCurrentProcessorNumberEx - 971 3C2 00069F90 RtlGetCurrentTransaction - 972 3C3 00061680 RtlGetCurrentUmsThread - 973 3C4 0006C720 RtlGetDaclSecurityDescriptor - 974 3C5 000456A0 RtlGetDeviceFamilyInfoEnum - 975 3C6 00074AE0 RtlGetElementGenericTable - 976 3C7 000DE750 RtlGetElementGenericTableAvl - 977 3C8 000778B0 RtlGetEnabledExtendedFeatures - 978 3C9 00076DF0 RtlGetExePath - 979 3CA 000670B0 RtlGetExtendedContextLength - 980 3CB 00077930 RtlGetExtendedFeaturesMask - 981 3CC 000542E0 RtlGetFileMUIPath - 982 3CD 000BC4E0 RtlGetFrame - 983 3CE 00054A30 RtlGetFullPathName_U - 984 3CF 0001BDA0 RtlGetFullPathName_UEx - 985 3D0 0005FE20 RtlGetFullPathName_UstrEx - 986 3D1 00079110 RtlGetFunctionTableListHead - 987 3D2 000705E0 RtlGetGroupSecurityDescriptor - 988 3D3 00052230 RtlGetIntegerAtom - 989 3D4 000CE0A0 RtlGetInterruptTimePrecise - 990 3D5 00078050 RtlGetLastNtStatus - 991 3D6 00079040 RtlGetLastWin32Error - 992 3D7 00061E70 RtlGetLengthWithoutLastFullDosOrNtPathElement - 993 3D8 00062210 RtlGetLengthWithoutTrailingPathSeperators - 994 3D9 00048C00 RtlGetLocaleFileMappingAddress - 995 3DA 00077CF0 RtlGetLongestNtPathLength - 996 3DB 000936D0 RtlGetNativeSystemInformation - 997 3DC 00071470 RtlGetNextEntryHashTable - 998 3DD 000DE220 RtlGetNextUmsListItem - 999 3DE 000D4090 RtlGetNtGlobalFlags - 1000 3DF 00042670 RtlGetNtProductType - 1001 3E0 00074B80 RtlGetNtVersionNumbers - 1002 3E1 0006F370 RtlGetOwnerSecurityDescriptor - 1003 3E2 00049F00 RtlGetParentLocaleName - 1004 3E3 0007EC00 RtlGetProcessHeaps - 1005 3E4 000D4820 RtlGetProcessPreferredUILanguages - 1006 3E5 00072990 RtlGetProductInfo - 1007 3E6 0006EF40 RtlGetSaclSecurityDescriptor - 1008 3E7 00075670 RtlGetSearchPath - 1009 3E8 00075DA0 RtlGetSecurityDescriptorRMControl - 1010 3E9 00078070 RtlGetSetBootStatusData - 1011 3EA 0006BE50 RtlGetSystemPreferredUILanguages - 1012 3EB 00059070 RtlGetSystemTimePrecise - 1013 3EC 00072CC0 RtlGetThreadErrorMode - 1014 3ED 000D4920 RtlGetThreadLangIdByIndex - 1015 3EE 0001D130 RtlGetThreadPreferredUILanguages - 1016 3EF 000D49F0 RtlGetUILanguageInfo - 1017 3F0 000DE250 RtlGetUmsCompletionListEvent - 1018 3F1 000BCCA0 RtlGetUnloadEventTrace - 1019 3F2 00078F90 RtlGetUnloadEventTraceEx - 1020 3F3 000578B0 RtlGetUserInfoHeap - 1021 3F4 0006CBC0 RtlGetUserPreferredUILanguages - 1022 3F5 00041EE0 RtlGetVersion - 1023 3F6 000CAEC0 RtlGrowFunctionTable - 1024 3F7 00026CA0 RtlHashUnicodeString - 1025 3F8 000E0E80 RtlHeapTrkInitialize - 1026 3F9 0006F260 RtlIdentifierAuthoritySid - 1027 3FA 0005D4F0 RtlIdnToAscii - 1028 3FB 000E2330 RtlIdnToNameprepUnicode - 1029 3FC 0005E4D0 RtlIdnToUnicode - 1030 3FD 00016860 RtlImageDirectoryEntryToData - 1031 3FE 00016830 RtlImageNtHeader - 1032 3FF 00015E10 RtlImageNtHeaderEx - 1033 400 00017440 RtlImageRvaToSection - 1034 401 000716A0 RtlImageRvaToVa - 1035 402 0006E430 RtlImpersonateSelf - 1036 403 0006E440 RtlImpersonateSelfEx - 1037 404 0006A390 RtlInitAnsiString - 1038 405 00020BE0 RtlInitAnsiStringEx - 1039 406 000D3C10 RtlInitBarrier - 1040 407 00077480 RtlInitCodePageTable - 1041 408 00065170 RtlInitEnumerationHashTable - 1042 409 000756F0 RtlInitMemoryStream - 1043 40A 000CD410 RtlInitNlsTables - 1044 40B 000756F0 RtlInitOutOfProcessMemoryStream - 1045 40C 0006A390 RtlInitString - 1046 40D 000D2630 RtlInitStringEx - 1047 40E 000DBBB0 RtlInitStrongEnumerationHashTable - 1048 40F 0001F140 RtlInitUnicodeString - 1049 410 0001F880 RtlInitUnicodeStringEx - 1050 411 000DBBF0 RtlInitWeakEnumerationHashTable - 1051 412 000759D0 RtlInitializeAtomPackage - 1052 413 0006C060 RtlInitializeBitMap - 1053 414 00064CE0 RtlInitializeConditionVariable - 1054 415 000E2370 RtlInitializeContext - 1055 416 00060AC0 RtlInitializeCriticalSection - 1056 417 000603B0 RtlInitializeCriticalSectionAndSpinCount - 1057 418 00007900 RtlInitializeCriticalSectionEx - 1058 419 00066F90 RtlInitializeExtendedContext - 1059 41A 00073810 RtlInitializeGenericTable - 1060 41B 00075D40 RtlInitializeGenericTableAvl - 1061 41C 00072BB0 RtlInitializeHandleTable - 1062 41D 00083790 RtlInitializeNtUserPfn - 1063 41E 0007F0A0 RtlInitializeRXact - 1064 41F 000076C0 RtlInitializeResource - 1065 420 00065F80 RtlInitializeSListHead - 1066 421 00064CE0 RtlInitializeSRWLock - 1067 422 0004E850 RtlInitializeSid - 1068 423 0004EE20 RtlInitializeSidEx - 1069 424 00060DF0 RtlInsertElementGenericTable - 1070 425 000604F0 RtlInsertElementGenericTableAvl - 1071 426 00060E60 RtlInsertElementGenericTableFull - 1072 427 00060560 RtlInsertElementGenericTableFullAvl - 1073 428 000651E0 RtlInsertEntryHashTable - 1074 429 00073E50 RtlInstallFunctionTableCallback - 1075 42A 000D3D40 RtlInt64ToUnicodeString - 1076 42B 000213F0 RtlIntegerToChar - 1077 42C 000214F0 RtlIntegerToUnicodeString - 1078 42D 0006E7A0 RtlInterlockedClearBitRun - 1079 42E 00068430 RtlInterlockedFlushSList - 1080 42F 00094FD0 RtlInterlockedPopEntrySList - 1081 430 00060B50 RtlInterlockedPushEntrySList - 1082 431 00095080 RtlInterlockedPushListSList - 1083 432 000E2630 RtlInterlockedPushListSListEx - 1084 433 000D3100 RtlInterlockedSetBitRun - 1085 434 000D7E20 RtlIoDecodeMemIoResource - 1086 435 000D7EC0 RtlIoEncodeMemIoResource - 1087 436 000772C0 RtlIpv4AddressToStringA - 1088 437 000DF700 RtlIpv4AddressToStringExA - 1089 438 00071C40 RtlIpv4AddressToStringExW - 1090 439 00071D10 RtlIpv4AddressToStringW - 1091 43A 0006FCB0 RtlIpv4StringToAddressA - 1092 43B 0006FC40 RtlIpv4StringToAddressExA - 1093 43C 0005E180 RtlIpv4StringToAddressExW - 1094 43D 0005E2C0 RtlIpv4StringToAddressW - 1095 43E 0000FDD0 RtlIpv6AddressToStringA - 1096 43F 000DF7C0 RtlIpv6AddressToStringExA - 1097 440 0000F9F0 RtlIpv6AddressToStringExW - 1098 441 0000FB40 RtlIpv6AddressToStringW - 1099 442 00068090 RtlIpv6StringToAddressA - 1100 443 00067FE0 RtlIpv6StringToAddressExA - 1101 444 0005D7A0 RtlIpv6StringToAddressExW - 1102 445 0005D920 RtlIpv6StringToAddressW - 1103 446 000C9EB0 RtlIsActivationContextActive - 1104 447 0004E6B0 RtlIsCapabilitySid - 1105 448 000C1F80 RtlIsCriticalSectionLocked - 1106 449 00040920 RtlIsCriticalSectionLockedByThread - 1107 44A 000C28E0 RtlIsCurrentThreadAttachExempt - 1108 44B 0006FF00 RtlIsDosDeviceName_U - 1109 44C 00060D40 RtlIsGenericTableEmpty - 1110 44D 000DE870 RtlIsGenericTableEmptyAvl - 1111 44E 0004A170 RtlIsMultiSessionSku - 1112 44F 000E2690 RtlIsNameInExpression - 1113 450 000E0270 RtlIsNameLegalDOS8Dot3 - 1114 451 000E3F10 RtlIsNormalizedString - 1115 452 00075AF0 RtlIsPackageSid - 1116 453 00047B30 RtlIsParentOfChildAppContainer - 1117 454 00071F20 RtlIsProcessorFeaturePresent - 1118 455 0005A000 RtlIsTextUnicode - 1119 456 00076D70 RtlIsThreadWithinLoaderCallout - 1120 457 000CE910 RtlIsUntrustedObject - 1121 458 00052370 RtlIsValidHandle - 1122 459 00052330 RtlIsValidIndexHandle - 1123 45A 000E0570 RtlIsValidLocaleName - 1124 45B 0004E600 RtlIsValidProcessTrustLabelSid - 1125 45C 00003020 RtlKnownExceptionFilter - 1126 45D 0001EA10 RtlLCIDToCultureName - 1127 45E 000D3DE0 RtlLargeIntegerToChar - 1128 45F 0001F190 RtlLcidToLocaleName - 1129 460 00034480 RtlLeaveCriticalSection - 1130 461 0004F0B0 RtlLengthRequiredSid - 1131 462 00066770 RtlLengthSecurityDescriptor - 1132 463 00061700 RtlLengthSid - 1133 464 0001F9E0 RtlLengthSidAsUnicodeString - 1134 465 00066110 RtlLoadString - 1135 466 000CE180 RtlLocalTimeToSystemTime - 1136 467 0001F480 RtlLocaleNameToLcid - 1137 468 000DBC90 RtlLocateExtendedFeature - 1138 469 000756B0 RtlLocateLegacyContext - 1139 46A 00078CF0 RtlLockBootStatusData - 1140 46B 00077AD0 RtlLockCurrentThread - 1141 46C 000271B0 RtlLockHeap - 1142 46D 00074EE0 RtlLockMemoryBlockLookaside - 1143 46E 000C14B0 RtlLockMemoryStreamRegion - 1144 46F 00074F50 RtlLockMemoryZone - 1145 470 000752B0 RtlLockModuleSection - 1146 471 000E4780 RtlLogStackBackTrace - 1147 472 00051FC0 RtlLookupAtomInAtomTable - 1148 473 00060F80 RtlLookupElementGenericTable - 1149 474 00060B60 RtlLookupElementGenericTableAvl - 1150 475 000DE5D0 RtlLookupElementGenericTableFull - 1151 476 00060470 RtlLookupElementGenericTableFullAvl - 1152 477 00065270 RtlLookupEntryHashTable - 1153 478 00014E40 RtlLookupFunctionEntry - 1154 479 000CAFC0 RtlLookupFunctionTable - 1155 47A 00063ED0 RtlMakeSelfRelativeSD - 1156 47B 0004D5A0 RtlMapGenericMask - 1157 47C 00079070 RtlMapSecurityErrorToNtStatus - 1158 47D 00097C40 RtlMoveMemory - 1159 47E 00068440 RtlMultiAppendUnicodeStringBuffer - 1160 47F 00023880 RtlMultiByteToUnicodeN - 1161 480 00077310 RtlMultiByteToUnicodeSize - 1162 481 000D82F0 RtlMultipleAllocateHeap - 1163 482 000D8370 RtlMultipleFreeHeap - 1164 483 000C3060 RtlNewInstanceSecurityObject - 1165 484 000C3170 RtlNewSecurityGrantedAccess - 1166 485 00047BE0 RtlNewSecurityObject - 1167 486 0004AC00 RtlNewSecurityObjectEx - 1168 487 00048A00 RtlNewSecurityObjectWithMultipleInheritance - 1169 488 000802F0 RtlNormalizeProcessParams - 1170 489 0005EC40 RtlNormalizeString - 1171 48A 000BBBC0 RtlNtPathNameToDosPathName - 1172 48B 0000F0C0 RtlNtStatusToDosError - 1173 48C 0006DB90 RtlNtStatusToDosErrorNoTeb - 1174 48D 0010CB20 RtlNtdllName - 1175 48E 00077680 RtlNumberGenericTableElements - 1176 48F 00077040 RtlNumberGenericTableElementsAvl - 1177 490 000D31C0 RtlNumberOfClearBits - 1178 491 000D31E0 RtlNumberOfClearBitsInRange - 1179 492 000D3210 RtlNumberOfSetBits - 1180 493 000D33C0 RtlNumberOfSetBitsInRange - 1181 494 00078DD0 RtlNumberOfSetBitsUlongPtr - 1182 495 000D2500 RtlOemStringToUnicodeSize - 1183 496 0006D030 RtlOemStringToUnicodeString - 1184 497 0006D120 RtlOemToUnicodeN - 1185 498 00049900 RtlOpenCurrentUser - 1186 499 000E51D0 RtlOsDeploymentState - 1187 49A 0007ED60 RtlOwnerAcesPresent - 1188 49B 00018580 RtlPcToFileHeader - 1189 49C 000D1DB0 RtlPinAtomInAtomTable - 1190 49D 00063930 RtlPopFrame - 1191 49E 00064DE0 RtlPrefixString - 1192 49F 00062130 RtlPrefixUnicodeString - 1193 4A0 000C2920 RtlPrepareForProcessCloning - 1194 4A1 00044810 RtlProcessFlsData - 1195 4A2 00005E30 RtlProtectHeap - 1196 4A3 00072E70 RtlPublishWnfStateData - 1197 4A4 00063340 RtlPushFrame - 1198 4A5 00071510 RtlQueryActivationContextApplicationSettings - 1199 4A6 000527A0 RtlQueryAtomInAtomTable - 1200 4A7 000C1FA0 RtlQueryCriticalSectionOwner - 1201 4A8 00064C70 RtlQueryDepthSList - 1202 4A9 000D40B0 RtlQueryDynamicTimeZoneInformation - 1203 4AA 000726E0 RtlQueryElevationFlags - 1204 4AB 00035150 RtlQueryEnvironmentVariable - 1205 4AC 00046840 RtlQueryEnvironmentVariable_U - 1206 4AD 00078680 RtlQueryHeapInformation - 1207 4AE 0006FBB0 RtlQueryInformationAcl - 1208 4AF 0003DF30 RtlQueryInformationActivationContext - 1209 4B0 00074B50 RtlQueryInformationActiveActivationContext - 1210 4B1 000C14B0 RtlQueryInterfaceMemoryStream - 1211 4B2 000CC1F0 RtlQueryModuleInformation - 1212 4B3 00064510 RtlQueryPackageClaims - 1213 4B4 00064450 RtlQueryPackageIdentity - 1214 4B5 000644A0 RtlQueryPackageIdentityEx - 1215 4B6 00059130 RtlQueryPerformanceCounter - 1216 4B7 00065FB0 RtlQueryPerformanceFrequency - 1217 4B8 000C35A0 RtlQueryProcessBackTraceInformation - 1218 4B9 00068620 RtlQueryProcessDebugInformation - 1219 4BA 000C3730 RtlQueryProcessHeapInformation - 1220 4BB 000C3B10 RtlQueryProcessLockInformation - 1221 4BC 00078970 RtlQueryProtectedPolicy - 1222 4BD 000D40C0 RtlQueryRegistryValues - 1223 4BE 0000D730 RtlQueryRegistryValuesEx - 1224 4BF 00004FE0 RtlQueryResourcePolicy - 1225 4C0 000C32B0 RtlQuerySecurityObject - 1226 4C1 000D83E0 RtlQueryTagHeap - 1227 4C2 000BB7D0 RtlQueryThreadProfiling - 1228 4C3 0000CF90 RtlQueryTimeZoneInformation - 1229 4C4 000DE2B0 RtlQueryUmsThreadInformation - 1230 4C5 000713A0 RtlQueryUnbiasedInterruptTime - 1231 4C6 000E55F0 RtlQueryValidationRunlevel - 1232 4C7 00078260 RtlQueryWnfMetaNotification - 1233 4C8 0006D830 RtlQueryWnfStateData - 1234 4C9 00076E90 RtlQueryWnfStateDataWithExplicitScope - 1235 4CA 000C6E80 RtlQueueApcWow64Thread - 1236 4CB 0007BFA0 RtlQueueWorkItem - 1237 4CC 00011EA0 RtlRaiseException - 1238 4CD 00092D30 RtlRaiseStatus - 1239 4CE 0006E120 RtlRandom - 1240 4CF 0006E120 RtlRandomEx - 1241 4D0 000277C0 RtlRbInsertNodeEx - 1242 4D1 00027E20 RtlRbRemoveNode - 1243 4D2 0002D790 RtlReAllocateHeap - 1244 4D3 000C14B0 RtlReadMemoryStream - 1245 4D4 000C14B0 RtlReadOutOfProcessMemoryStream - 1246 4D5 000BB800 RtlReadThreadProfilingData - 1247 4D6 000DE550 RtlRealPredecessor - 1248 4D7 00061530 RtlRealSuccessor - 1249 4D8 00076C70 RtlRegisterForWnfMetaNotification - 1250 4D9 000DE9B0 RtlRegisterSecureMemoryCacheCallback - 1251 4DA 00072280 RtlRegisterThreadWithCsrss - 1252 4DB 0007B9A0 RtlRegisterWait - 1253 4DC 0003D740 RtlReleaseActivationContext - 1254 4DD 000759D0 RtlReleaseMemoryStream - 1255 4DE 00035800 RtlReleasePath - 1256 4DF 00038010 RtlReleasePebLock - 1257 4E0 000770B0 RtlReleasePrivilege - 1258 4E1 000542A0 RtlReleaseRelativeName - 1259 4E2 000619F0 RtlReleaseResource - 1260 4E3 000331E0 RtlReleaseSRWLockExclusive - 1261 4E4 000304B0 RtlReleaseSRWLockShared - 1262 4E5 000E24A0 RtlRemoteCall - 1263 4E6 00070D00 RtlRemoveEntryHashTable - 1264 4E7 0007FAD0 RtlRemovePrivileges - 1265 4E8 000C4B50 RtlRemoveVectoredContinueHandler - 1266 4E9 000758E0 RtlRemoveVectoredExceptionHandler - 1267 4EA 000CEAA0 RtlReplaceSidInSd - 1268 4EB 000C75D0 RtlReportException - 1269 4EC 00044600 RtlReportSilentProcessExit - 1270 4ED 000C7CE0 RtlReportSqmEscalation - 1271 4EE 000D1E90 RtlResetMemoryBlockLookaside - 1272 4EF 000D1FF0 RtlResetMemoryZone - 1273 4F0 00083970 RtlResetNtUserPfn - 1274 4F1 000CD480 RtlResetRtlTranslations - 1275 4F2 000714B0 RtlRestoreContext - 1276 4F3 0000F090 RtlRestoreLastWin32Error - 1277 4F4 000839F0 RtlRetrieveNtUserPfn - 1278 4F5 000C14B0 RtlRevertMemoryStream - 1279 4F6 00077FF0 RtlRunDecodeUnicodeString - 1280 4F7 00077A30 RtlRunEncodeUnicodeString - 1281 4F8 00034B00 RtlRunOnceBeginInitialize - 1282 4F9 0006C850 RtlRunOnceComplete - 1283 4FA 00034BE0 RtlRunOnceExecuteOnce - 1284 4FB 00064CE0 RtlRunOnceInitialize - 1285 4FC 000736A0 RtlSecondsSince1970ToTime - 1286 4FD 000CE1F0 RtlSecondsSince1980ToTime - 1287 4FE 000C14B0 RtlSeekMemoryStream - 1288 4FF 00063CF0 RtlSelfRelativeToAbsoluteSD - 1289 500 00063AE0 RtlSelfRelativeToAbsoluteSD2 - 1290 501 00080680 RtlSendMsgToSm - 1291 502 00072340 RtlSetAllBits - 1292 503 000CEDC0 RtlSetAttributesSecurityDescriptor - 1293 504 00067FD0 RtlSetBit - 1294 505 00056120 RtlSetBits - 1295 506 00075AA0 RtlSetControlSecurityDescriptor - 1296 507 00069F40 RtlSetCriticalSectionSpinCount - 1297 508 0006F750 RtlSetCurrentDirectory_U - 1298 509 000787A0 RtlSetCurrentEnvironment - 1299 50A 000641F0 RtlSetCurrentTransaction - 1300 50B 0004AEF0 RtlSetDaclSecurityDescriptor - 1301 50C 000D40F0 RtlSetDynamicTimeZoneInformation - 1302 50D 00074E10 RtlSetEnvironmentStrings - 1303 50E 00046900 RtlSetEnvironmentVar - 1304 50F 000468B0 RtlSetEnvironmentVariable - 1305 510 00077900 RtlSetExtendedFeaturesMask - 1306 511 0004E500 RtlSetGroupSecurityDescriptor - 1307 512 0006F3B0 RtlSetHeapInformation - 1308 513 000D0C50 RtlSetInformationAcl - 1309 514 0007E110 RtlSetIoCompletionCallback - 1310 515 0000F090 RtlSetLastWin32Error - 1311 516 0000F070 RtlSetLastWin32ErrorAndNtStatusFromNtStatus - 1312 517 000C14B0 RtlSetMemoryStreamSize - 1313 518 0004E560 RtlSetOwnerSecurityDescriptor - 1314 519 000D4010 RtlSetPortableOperatingSystem - 1315 51A 000C3DA0 RtlSetProcessDebugInformation - 1316 51B 000815E0 RtlSetProcessIsCritical - 1317 51C 0006ABB0 RtlSetProcessPreferredUILanguages - 1318 51D 000E5310 RtlSetProtectedPolicy - 1319 51E 0006E850 RtlSetSaclSecurityDescriptor - 1320 51F 000598A0 RtlSetSearchPathMode - 1321 520 00078240 RtlSetSecurityDescriptorRMControl - 1322 521 00047BB0 RtlSetSecurityObject - 1323 522 00047500 RtlSetSecurityObjectEx - 1324 523 00045EC0 RtlSetThreadErrorMode - 1325 524 00080310 RtlSetThreadIsCritical - 1326 525 00076D90 RtlSetThreadPoolStartFunc - 1327 526 0001C020 RtlSetThreadPreferredUILanguages - 1328 527 0003C080 RtlSetThreadSubProcessTag - 1329 528 000D4100 RtlSetTimeZoneInformation - 1330 529 000F5FE0 RtlSetTimer - 1331 52A 000DE360 RtlSetUmsThreadInformation - 1332 52B 00066DC0 RtlSetUnhandledExceptionFilter - 1333 52C 000D8670 RtlSetUserFlagsHeap - 1334 52D 00057C60 RtlSetUserValueHeap - 1335 52E 0004A190 RtlSidDominates - 1336 52F 0004E470 RtlSidDominatesForTrust - 1337 530 000CEDF0 RtlSidEqualLevel - 1338 531 0006A570 RtlSidHashInitialize - 1339 532 0006A9A0 RtlSidHashLookup - 1340 533 000CEE80 RtlSidIsHigherLevel - 1341 534 0002A380 RtlSizeHeap - 1342 535 00065CB0 RtlSleepConditionVariableCS - 1343 536 00065B30 RtlSleepConditionVariableSRW - 1344 537 00061070 RtlSplay - 1345 538 00072B50 RtlStartRXact - 1346 539 000C14B0 RtlStatMemoryStream - 1347 53A 000649E0 RtlStringFromGUID - 1348 53B 000649F0 RtlStringFromGUIDEx - 1349 53C 000DBC00 RtlStronglyEnumerateEntryHashTable - 1350 53D 00065750 RtlSubAuthorityCountSid - 1351 53E 00064C50 RtlSubAuthoritySid - 1352 53F 0000A870 RtlSubscribeWnfStateChangeNotification - 1353 540 00061500 RtlSubtreePredecessor - 1354 541 000DE5A0 RtlSubtreeSuccessor - 1355 542 00042010 RtlSwitchedVVI - 1356 543 00071400 RtlSystemTimeToLocalTime - 1357 544 00077400 RtlTestAndPublishWnfStateData - 1358 545 000D3640 RtlTestBit - 1359 546 000816D0 RtlTestProtectedAccess - 1360 547 0005CCF0 RtlTimeFieldsToTime - 1361 548 0006E560 RtlTimeToElapsedTimeFields - 1362 549 0006E690 RtlTimeToSecondsSince1970 - 1363 54A 0006E650 RtlTimeToSecondsSince1980 - 1364 54B 0005CF00 RtlTimeToTimeFields - 1365 54C 000E5A40 RtlTraceDatabaseAdd - 1366 54D 000E5AC0 RtlTraceDatabaseCreate - 1367 54E 000E5BF0 RtlTraceDatabaseDestroy - 1368 54F 000E5C70 RtlTraceDatabaseEnumerate - 1369 550 000E5D50 RtlTraceDatabaseFind - 1370 551 000E5DD0 RtlTraceDatabaseLock - 1371 552 000E5E00 RtlTraceDatabaseUnlock - 1372 553 000E5E20 RtlTraceDatabaseValidate - 1373 554 00008860 RtlTryAcquirePebLock - 1374 555 0000BE80 RtlTryAcquireSRWLockExclusive - 1375 556 00070830 RtlTryAcquireSRWLockShared - 1376 557 000D0480 RtlTryConvertSRWLockSharedToExclusiveOrRelease - 1377 558 00008880 RtlTryEnterCriticalSection - 1378 559 0005C520 RtlUTF8ToUnicodeN - 1379 55A 000DE3A0 RtlUmsThreadYield - 1380 55B 000E3FF0 RtlUnhandledExceptionFilter - 1381 55C 000E4010 RtlUnhandledExceptionFilter2 - 1382 55D 000D2530 RtlUnicodeStringToAnsiSize - 1383 55E 00023E30 RtlUnicodeStringToAnsiString - 1384 55F 000D2140 RtlUnicodeStringToCountedOemString - 1385 560 0006A3D0 RtlUnicodeStringToInteger - 1386 561 000D2530 RtlUnicodeStringToOemSize - 1387 562 000630A0 RtlUnicodeStringToOemString - 1388 563 000CD650 RtlUnicodeToCustomCPN - 1389 564 00023F10 RtlUnicodeToMultiByteN - 1390 565 0006FF30 RtlUnicodeToMultiByteSize - 1391 566 00063170 RtlUnicodeToOemN - 1392 567 00059980 RtlUnicodeToUTF8N - 1393 568 00071ED0 RtlUniform - 1394 569 00078EF0 RtlUnlockBootStatusData - 1395 56A 00077B90 RtlUnlockCurrentThread - 1396 56B 000330E0 RtlUnlockHeap - 1397 56C 00075090 RtlUnlockMemoryBlockLookaside - 1398 56D 000C14B0 RtlUnlockMemoryStreamRegion - 1399 56E 000750F0 RtlUnlockMemoryZone - 1400 56F 000753B0 RtlUnlockModuleSection - 1401 570 0000B080 RtlUnsubscribeWnfNotificationWaitForCompletion - 1402 571 0000AEE0 RtlUnsubscribeWnfNotificationWithCompletionCallback - 1403 572 0000B0E0 RtlUnsubscribeWnfStateChangeNotification - 1404 573 000E5180 RtlUnwind - 1405 574 00014200 RtlUnwindEx - 1406 575 000507F0 RtlUpcaseUnicodeChar - 1407 576 00050850 RtlUpcaseUnicodeString - 1408 577 000D2290 RtlUpcaseUnicodeStringToAnsiString - 1409 578 000D23B0 RtlUpcaseUnicodeStringToCountedOemString - 1410 579 0006CE30 RtlUpcaseUnicodeStringToOemString - 1411 57A 000CD880 RtlUpcaseUnicodeToCustomCPN - 1412 57B 0006F520 RtlUpcaseUnicodeToMultiByteN - 1413 57C 0006D3A0 RtlUpcaseUnicodeToOemN - 1414 57D 00044770 RtlUpdateClonedCriticalSection - 1415 57E 00059670 RtlUpdateClonedSRWLock - 1416 57F 0007A8D0 RtlUpdateTimer - 1417 580 00064F10 RtlUpperChar - 1418 581 000D2640 RtlUpperString - 1419 582 00009F30 RtlUserThreadStart - 1420 583 000200D0 RtlValidAcl - 1421 584 000CBF10 RtlValidProcessProtection - 1422 585 00069430 RtlValidRelativeSecurityDescriptor - 1423 586 0001FF90 RtlValidSecurityDescriptor - 1424 587 00020090 RtlValidSid - 1425 588 000384A0 RtlValidateHeap - 1426 589 000D87D0 RtlValidateProcessHeaps - 1427 58A 0006B950 RtlValidateUnicodeString - 1428 58B 00045350 RtlVerifyVersionInfo - 1429 58C 00011740 RtlVirtualUnwind - 1430 58D 00076B00 RtlWaitForWnfMetaNotification - 1431 58E 00077FD0 RtlWaitOnAddress - 1432 58F 00036540 RtlWakeAddressAll - 1433 590 000E6170 RtlWakeAddressAllNoFence - 1434 591 00003090 RtlWakeAddressSingle - 1435 592 000E6180 RtlWakeAddressSingleNoFence - 1436 593 00009A40 RtlWakeAllConditionVariable - 1437 594 000634A0 RtlWakeConditionVariable - 1438 595 000126A0 RtlWalkFrameChain - 1439 596 000D8900 RtlWalkHeap - 1440 597 000DBC60 RtlWeaklyEnumerateEntryHashTable - 1441 598 00001C20 RtlWerpReportException - 1442 599 000C8BD0 RtlWnfCompareChangeStamp - 1443 59A 0000C5F0 RtlWnfDllUnloadCallback - 1444 59B 000671B0 RtlWoW64GetCpuAreaInfo - 1445 59C 00067130 RtlWoW64GetCurrentCpuArea - 1446 59D 00078FC0 RtlWow64CallFunction64 - 1447 59E 00078FC0 RtlWow64EnableFsRedirection - 1448 59F 00078FC0 RtlWow64EnableFsRedirectionEx - 1449 5A0 000C6EA0 RtlWow64GetThreadContext - 1450 5A1 000C6ED0 RtlWow64GetThreadSelectorEntry - 1451 5A2 000C2A40 RtlWow64LogMessageInEventLogger - 1452 5A3 000C7070 RtlWow64SetThreadContext - 1453 5A4 000C7090 RtlWow64SuspendThread - 1454 5A5 000C70A0 RtlWow64SuspendThreadEx - 1455 5A6 000C14B0 RtlWriteMemoryStream - 1456 5A7 0007EA40 RtlWriteRegistryValue - 1457 5A8 000DCA80 RtlZeroHeap - 1458 5A9 00095B50 RtlZeroMemory - 1459 5AA 000C9BC0 RtlZombifyActivationContext - 1460 5AB 00061DC0 RtlpApplyLengthFunction - 1461 5AC 0000D1B0 RtlpCheckDynamicTimeZoneInformation - 1462 5AD 000D5500 RtlpCleanupRegistryKeys - 1463 5AE 000D0C90 RtlpConvertAbsoluteToRelativeSecurityAttribute - 1464 5AF 000D5A20 RtlpConvertCultureNamesToLCIDs - 1465 5B0 000D5C40 RtlpConvertLCIDsToCultureNames - 1466 5B1 000D0FF0 RtlpConvertRelativeToAbsoluteSecurityAttribute - 1467 5B2 0001DAD0 RtlpCreateProcessRegistryInfo - 1468 5B3 00068550 RtlpEnsureBufferSize - 1469 5B4 00095B71 RtlpExecuteUmsThread - 1470 5B5 00147198 RtlpFreezeTimeBias - 1471 5B6 000456B0 RtlpGetDeviceFamilyInfoEnum - 1472 5B7 00074940 RtlpGetLCIDFromLangInfoNode - 1473 5B8 00072DD0 RtlpGetNameFromLangInfoNode - 1474 5B9 0001F6A0 RtlpGetSystemDefaultUILanguage - 1475 5BA 000E6190 RtlpGetUserOrMachineUILanguage4NLS - 1476 5BB 00048CA0 RtlpInitializeLangRegistryInfo - 1477 5BC 00054F50 RtlpIsQualifiedLanguage - 1478 5BD 00048A60 RtlpLoadMachineUIByPolicy - 1479 5BE 000499E0 RtlpLoadUserUIByPolicy - 1480 5BF 000025A0 RtlpMergeSecurityAttributeInformation - 1481 5C0 00047980 RtlpMuiFreeLangRegistryInfo - 1482 5C1 000E6FB0 RtlpMuiRegCreateRegistryInfo - 1483 5C2 00048F20 RtlpMuiRegFreeRegistryInfo - 1484 5C3 00048E30 RtlpMuiRegLoadRegistryInfo - 1485 5C4 000C21A0 RtlpNotOwnerCriticalSection - 1486 5C5 0007EB60 RtlpNtCreateKey - 1487 5C6 000733D0 RtlpNtEnumerateSubKey - 1488 5C7 000EA340 RtlpNtMakeTemporaryKey - 1489 5C8 000735A0 RtlpNtOpenKey - 1490 5C9 00071200 RtlpNtQueryValueKey - 1491 5CA 0007EAE0 RtlpNtSetValueKey - 1492 5CB 00048770 RtlpQueryDefaultUILanguage - 1493 5CC 000C4160 RtlpQueryProcessDebugInformationFromWow64 - 1494 5CD 000E87D0 RtlpRefreshCachedUILanguage - 1495 5CE 000D6730 RtlpSetInstallLanguage - 1496 5CF 000D6E70 RtlpSetPreferredUILanguages - 1497 5D0 000D6E70 RtlpSetUserPreferredUILanguages - 1498 5D1 00095E96 RtlpUmsExecuteYieldThreadEnd - 1499 5D2 00095DA3 RtlpUmsThreadYield - 1500 5D3 000364F0 RtlpUnWaitCriticalSection - 1501 5D4 00080A30 RtlpVerifyAndCommitUILanguageSettings - 1502 5D5 000756F0 RtlpWaitForCriticalSection - 1503 5D6 000D2500 RtlxAnsiStringToUnicodeSize - 1504 5D7 000D2500 RtlxOemStringToUnicodeSize - 1505 5D8 000D2530 RtlxUnicodeStringToAnsiSize - 1506 5D9 000D2530 RtlxUnicodeStringToOemSize - 1507 5DA 000F6320 SbExecuteProcedure - 1508 5DB 00041A90 SbSelectProcedure - 1509 5DC 000C81A0 ShipAssert - 1510 5DD 000C82C0 ShipAssertGetBufferInfo - 1511 5DE 000C82F0 ShipAssertMsgA - 1512 5DF 000C82F0 ShipAssertMsgW - 1513 5E0 0007A400 TpAllocAlpcCompletion - 1514 5E1 0007AC20 TpAllocAlpcCompletionEx - 1515 5E2 000734D0 TpAllocCleanupGroup - 1516 5E3 0007AC50 TpAllocIoCompletion - 1517 5E4 0007A430 TpAllocJobNotification - 1518 5E5 0007B340 TpAllocPool - 1519 5E6 0003C430 TpAllocTimer - 1520 5E7 0007CBB0 TpAllocWait - 1521 5E8 0003D920 TpAllocWork - 1522 5E9 00079160 TpAlpcRegisterCompletionList - 1523 5EA 00079120 TpAlpcUnregisterCompletionList - 1524 5EB 000F59F0 TpCallbackDetectedUnrecoverableError - 1525 5EC 00079230 TpCallbackIndependent - 1526 5ED 00078F60 TpCallbackLeaveCriticalSectionOnCompletion - 1527 5EE 0003BB00 TpCallbackMayRunLong - 1528 5EF 000F5A20 TpCallbackReleaseMutexOnCompletion - 1529 5F0 000F5A60 TpCallbackReleaseSemaphoreOnCompletion - 1530 5F1 00061AF0 TpCallbackSendAlpcMessageOnCompletion - 1531 5F2 00072B10 TpCallbackSendPendingAlpcMessage - 1532 5F3 000782B0 TpCallbackSetEventOnCompletion - 1533 5F4 000749C0 TpCallbackUnloadDllOnCompletion - 1534 5F5 0006F300 TpCancelAsyncIoOperation - 1535 5F6 00066710 TpCaptureCaller - 1536 5F7 0000A000 TpCheckTerminateWorker - 1537 5F8 000F5AA0 TpDbgDumpHeapUsage - 1538 5F9 000756F0 TpDbgSetLogRoutine - 1539 5FA 000782F0 TpDisablePoolCallbackChecks - 1540 5FB 00074D90 TpDisassociateCallback - 1541 5FC 0003CB90 TpIsTimerSet - 1542 5FD 00027420 TpPostWork - 1543 5FE 000F5690 TpQueryPoolStackInformation - 1544 5FF 0007A7A0 TpReleaseAlpcCompletion - 1545 600 000759E0 TpReleaseCleanupGroup - 1546 601 0007D660 TpReleaseCleanupGroupMembers - 1547 602 000725C0 TpReleaseIoCompletion - 1548 603 0007A240 TpReleaseJobNotification - 1549 604 00073AE0 TpReleasePool - 1550 605 0003EAD0 TpReleaseTimer - 1551 606 0007CEB0 TpReleaseWait - 1552 607 0003C790 TpReleaseWork - 1553 608 000F5700 TpSetDefaultPoolMaxThreads - 1554 609 0007A040 TpSetDefaultPoolStackInformation - 1555 60A 0007B270 TpSetPoolMaxThreads - 1556 60B 000736D0 TpSetPoolMaxThreadsSoftLimit - 1557 60C 00077520 TpSetPoolMinThreads - 1558 60D 0007A160 TpSetPoolStackInformation - 1559 60E 00078E60 TpSetPoolThreadBasePriority - 1560 60F 0007B2E0 TpSetPoolWorkerThreadIdleTimeout - 1561 610 0003CBD0 TpSetTimer - 1562 611 0003CBE0 TpSetTimerEx - 1563 612 0003C530 TpSetWait - 1564 613 0003C5A0 TpSetWaitEx - 1565 614 0007D460 TpSimpleTryPost - 1566 615 0003C540 TpStartAsyncIoOperation - 1567 616 0007C7B0 TpTimerOutstandingCallbackCount - 1568 617 00065760 TpTrimPools - 1569 618 0007A190 TpWaitForAlpcCompletion - 1570 619 00076FD0 TpWaitForIoCompletion - 1571 61A 0007A200 TpWaitForJobNotification - 1572 61B 0007D140 TpWaitForTimer - 1573 61C 0007D010 TpWaitForWait - 1574 61D 0007D100 TpWaitForWork - 1575 61E 000696D0 VerSetConditionMask - 1576 61F 000C87D0 WerReportSQMEvent - 1577 620 000756F0 WinSqmAddToAverageDWORD - 1578 621 000756F0 WinSqmAddToStream - 1579 622 000756F0 WinSqmAddToStreamEx - 1580 623 000759D0 WinSqmCheckEscalationAddToStreamEx - 1581 624 000759D0 WinSqmCheckEscalationSetDWORD - 1582 625 000759D0 WinSqmCheckEscalationSetDWORD64 - 1583 626 000759D0 WinSqmCheckEscalationSetString - 1584 627 00042FF0 WinSqmCommonDatapointDelete - 1585 628 00042FF0 WinSqmCommonDatapointSetDWORD - 1586 629 00042FF0 WinSqmCommonDatapointSetDWORD64 - 1587 62A 00042FF0 WinSqmCommonDatapointSetStreamEx - 1588 62B 00042FF0 WinSqmCommonDatapointSetString - 1589 62C 000756F0 WinSqmEndSession - 1590 62D 000759D0 WinSqmEventEnabled - 1591 62E 000759D0 WinSqmEventWrite - 1592 62F 000759D0 WinSqmGetEscalationRuleStatus - 1593 630 000C8BB0 WinSqmGetInstrumentationProperty - 1594 631 000756F0 WinSqmIncrementDWORD - 1595 632 000759D0 WinSqmIsOptedIn - 1596 633 000759D0 WinSqmIsOptedInEx - 1597 634 00042FF0 WinSqmIsSessionDisabled - 1598 635 000756F0 WinSqmSetDWORD - 1599 636 000756F0 WinSqmSetDWORD64 - 1600 637 00042FF0 WinSqmSetEscalationInfo - 1601 638 000756F0 WinSqmSetIfMaxDWORD - 1602 639 000756F0 WinSqmSetIfMinDWORD - 1603 63A 000756F0 WinSqmSetString - 1604 63B 00078FD0 WinSqmStartSession - 1605 63C 00078FD0 WinSqmStartSessionForPartner - 1606 63D 000759D0 WinSqmStartSqmOptinListener - 1607 63E 00093390 ZwAcceptConnectPort - 1608 63F 00093370 ZwAccessCheck - 1609 640 00093600 ZwAccessCheckAndAuditAlarm - 1610 641 000939A0 ZwAccessCheckByType - 1611 642 00093900 ZwAccessCheckByTypeAndAuditAlarm - 1612 643 000939B0 ZwAccessCheckByTypeResultList - 1613 644 000939C0 ZwAccessCheckByTypeResultListAndAuditAlarm - 1614 645 000939D0 ZwAccessCheckByTypeResultListAndAuditAlarmByHandle - 1615 646 000937E0 ZwAddAtom - 1616 647 000939E0 ZwAddAtomEx - 1617 648 000939F0 ZwAddBootEntry - 1618 649 00093A00 ZwAddDriverEntry - 1619 64A 00093A10 ZwAdjustGroupsToken - 1620 64B 00093780 ZwAdjustPrivilegesToken - 1621 64C 00093A20 ZwAdjustTokenClaimsAndDeviceGroups - 1622 64D 00093A30 ZwAlertResumeThread - 1623 64E 00093A40 ZwAlertThread - 1624 64F 00093A50 ZwAlertThreadByThreadId - 1625 650 00093A60 ZwAllocateLocallyUniqueId - 1626 651 00093A70 ZwAllocateReserveObject - 1627 652 00093A80 ZwAllocateUserPhysicalPages - 1628 653 00093A90 ZwAllocateUuids - 1629 654 000934F0 ZwAllocateVirtualMemory - 1630 655 00093AA0 ZwAlpcAcceptConnectPort - 1631 656 00093AB0 ZwAlpcCancelMessage - 1632 657 00093AC0 ZwAlpcConnectPort - 1633 658 00093AD0 ZwAlpcConnectPortEx - 1634 659 00093AE0 ZwAlpcCreatePort - 1635 65A 00093AF0 ZwAlpcCreatePortSection - 1636 65B 00093B00 ZwAlpcCreateResourceReserve - 1637 65C 00093B10 ZwAlpcCreateSectionView - 1638 65D 00093B20 ZwAlpcCreateSecurityContext - 1639 65E 00093B30 ZwAlpcDeletePortSection - 1640 65F 00093B40 ZwAlpcDeleteResourceReserve - 1641 660 00093B50 ZwAlpcDeleteSectionView - 1642 661 00093B60 ZwAlpcDeleteSecurityContext - 1643 662 00093B70 ZwAlpcDisconnectPort - 1644 663 00093B80 ZwAlpcImpersonateClientContainerOfPort - 1645 664 00093B90 ZwAlpcImpersonateClientOfPort - 1646 665 00093BA0 ZwAlpcOpenSenderProcess - 1647 666 00093BB0 ZwAlpcOpenSenderThread - 1648 667 00093BC0 ZwAlpcQueryInformation - 1649 668 00093BD0 ZwAlpcQueryInformationMessage - 1650 669 00093BE0 ZwAlpcRevokeSecurityContext - 1651 66A 00093BF0 ZwAlpcSendWaitReceivePort - 1652 66B 00093C00 ZwAlpcSetInformation - 1653 66C 00093830 ZwApphelpCacheControl - 1654 66D 00093C10 ZwAreMappedFilesTheSame - 1655 66E 00093C20 ZwAssignProcessToJobObject - 1656 66F 00093C30 ZwAssociateWaitCompletionPacket - 1657 670 000933C0 ZwCallbackReturn - 1658 671 00093940 ZwCancelIoFile - 1659 672 00093C40 ZwCancelIoFileEx - 1660 673 00093C50 ZwCancelSynchronousIoFile - 1661 674 00093980 ZwCancelTimer - 1662 675 00093C60 ZwCancelTimer2 - 1663 676 00093C70 ZwCancelWaitCompletionPacket - 1664 677 00093750 ZwClearEvent - 1665 678 00093460 ZwClose - 1666 679 00093720 ZwCloseObjectAuditAlarm - 1667 67A 00093C80 ZwCommitComplete - 1668 67B 00093C90 ZwCommitEnlistment - 1669 67C 00093CA0 ZwCommitTransaction - 1670 67D 00093CB0 ZwCompactKeys - 1671 67E 00093CC0 ZwCompareObjects - 1672 67F 00093CD0 ZwCompareTokens - 1673 680 00093CE0 ZwCompleteConnectPort - 1674 681 00093CF0 ZwCompressKey - 1675 682 00093D00 ZwConnectPort - 1676 683 000937A0 ZwContinue - 1677 684 00093D10 ZwCreateDebugObject - 1678 685 00093D20 ZwCreateDirectoryObject - 1679 686 00093D30 ZwCreateDirectoryObjectEx - 1680 687 00093D40 ZwCreateEnlistment - 1681 688 000937F0 ZwCreateEvent - 1682 689 00093D50 ZwCreateEventPair - 1683 68A 000938C0 ZwCreateFile - 1684 68B 00093D60 ZwCreateIRTimer - 1685 68C 00093D70 ZwCreateIoCompletion - 1686 68D 00093D80 ZwCreateJobObject - 1687 68E 00093D90 ZwCreateJobSet - 1688 68F 00093540 ZwCreateKey - 1689 690 00093DA0 ZwCreateKeyTransacted - 1690 691 00093DB0 ZwCreateKeyedEvent - 1691 692 00093DC0 ZwCreateLowBoxToken - 1692 693 00093DD0 ZwCreateMailslotFile - 1693 694 00093DE0 ZwCreateMutant - 1694 695 00093DF0 ZwCreateNamedPipeFile - 1695 696 00093E00 ZwCreatePagingFile - 1696 697 00093E10 ZwCreatePartition - 1697 698 00093E20 ZwCreatePort - 1698 699 00093E30 ZwCreatePrivateNamespace - 1699 69A 00093E40 ZwCreateProcess - 1700 69B 00093840 ZwCreateProcessEx - 1701 69C 00093E50 ZwCreateProfile - 1702 69D 00093E60 ZwCreateProfileEx - 1703 69E 00093E70 ZwCreateResourceManager - 1704 69F 00093810 ZwCreateSection - 1705 6A0 00093E80 ZwCreateSemaphore - 1706 6A1 00093E90 ZwCreateSymbolicLinkObject - 1707 6A2 00093850 ZwCreateThread - 1708 6A3 00093EA0 ZwCreateThreadEx - 1709 6A4 00093EB0 ZwCreateTimer - 1710 6A5 00093EC0 ZwCreateTimer2 - 1711 6A6 00093ED0 ZwCreateToken - 1712 6A7 00093EE0 ZwCreateTokenEx - 1713 6A8 00093EF0 ZwCreateTransaction - 1714 6A9 00093F00 ZwCreateTransactionManager - 1715 6AA 00093F10 ZwCreateUserProcess - 1716 6AB 00093F20 ZwCreateWaitCompletionPacket - 1717 6AC 00093F30 ZwCreateWaitablePort - 1718 6AD 00093F40 ZwCreateWnfStateName - 1719 6AE 00093F50 ZwCreateWorkerFactory - 1720 6AF 00093F60 ZwDebugActiveProcess - 1721 6B0 00093F70 ZwDebugContinue - 1722 6B1 000936B0 ZwDelayExecution - 1723 6B2 00093F80 ZwDeleteAtom - 1724 6B3 00093F90 ZwDeleteBootEntry - 1725 6B4 00093FA0 ZwDeleteDriverEntry - 1726 6B5 00093FB0 ZwDeleteFile - 1727 6B6 00093FC0 ZwDeleteKey - 1728 6B7 00093FD0 ZwDeleteObjectAuditAlarm - 1729 6B8 00093FE0 ZwDeletePrivateNamespace - 1730 6B9 00093FF0 ZwDeleteValueKey - 1731 6BA 00094000 ZwDeleteWnfStateData - 1732 6BB 00094010 ZwDeleteWnfStateName - 1733 6BC 000933E0 ZwDeviceIoControlFile - 1734 6BD 00094020 ZwDisableLastKnownGood - 1735 6BE 00094030 ZwDisplayString - 1736 6BF 00094040 ZwDrawText - 1737 6C0 00093730 ZwDuplicateObject - 1738 6C1 00093790 ZwDuplicateToken - 1739 6C2 00094050 ZwEnableLastKnownGood - 1740 6C3 00094060 ZwEnumerateBootEntries - 1741 6C4 00094070 ZwEnumerateDriverEntries - 1742 6C5 00093690 ZwEnumerateKey - 1743 6C6 00094080 ZwEnumerateSystemEnvironmentValuesEx - 1744 6C7 00094090 ZwEnumerateTransactionObject - 1745 6C8 000934A0 ZwEnumerateValueKey - 1746 6C9 000940A0 ZwExtendSection - 1747 6CA 000940B0 ZwFilterBootOption - 1748 6CB 000940C0 ZwFilterToken - 1749 6CC 000940D0 ZwFilterTokenEx - 1750 6CD 000934B0 ZwFindAtom - 1751 6CE 00093820 ZwFlushBuffersFile - 1752 6CF 000940E0 ZwFlushBuffersFileEx - 1753 6D0 000940F0 ZwFlushInstallUILanguage - 1754 6D1 00094100 ZwFlushInstructionCache - 1755 6D2 00094110 ZwFlushKey - 1756 6D3 00094120 ZwFlushProcessWriteBuffers - 1757 6D4 00094130 ZwFlushVirtualMemory - 1758 6D5 00094140 ZwFlushWriteBuffer - 1759 6D6 00094150 ZwFreeUserPhysicalPages - 1760 6D7 00093550 ZwFreeVirtualMemory - 1761 6D8 00094160 ZwFreezeRegistry - 1762 6D9 00094170 ZwFreezeTransactions - 1763 6DA 00093700 ZwFsControlFile - 1764 6DB 00094180 ZwGetCachedSigningLevel - 1765 6DC 00094190 ZwGetCompleteWnfStateSubscription - 1766 6DD 000941A0 ZwGetContextThread - 1767 6DE 000941B0 ZwGetCurrentProcessorNumber - 1768 6DF 000941C0 ZwGetCurrentProcessorNumberEx - 1769 6E0 000941D0 ZwGetDevicePowerState - 1770 6E1 000941E0 ZwGetMUIRegistryInfo - 1771 6E2 000941F0 ZwGetNextProcess - 1772 6E3 00094200 ZwGetNextThread - 1773 6E4 00094210 ZwGetNlsSectionPtr - 1774 6E5 00094220 ZwGetNotificationResourceManager - 1775 6E6 00094230 ZwGetWriteWatch - 1776 6E7 00094240 ZwImpersonateAnonymousToken - 1777 6E8 00093560 ZwImpersonateClientOfPort - 1778 6E9 00094250 ZwImpersonateThread - 1779 6EA 00094260 ZwInitializeNlsFiles - 1780 6EB 00094270 ZwInitializeRegistry - 1781 6EC 00094280 ZwInitiatePowerAction - 1782 6ED 00093860 ZwIsProcessInJob - 1783 6EE 00094290 ZwIsSystemResumeAutomatic - 1784 6EF 000942A0 ZwIsUILanguageComitted - 1785 6F0 000942B0 ZwListenPort - 1786 6F1 000942C0 ZwLoadDriver - 1787 6F2 000942D0 ZwLoadKey - 1788 6F3 000942E0 ZwLoadKey2 - 1789 6F4 00094F00 ZwLoadKey3 - 1790 6F5 000942F0 ZwLoadKeyEx - 1791 6F6 00094300 ZwLockFile - 1792 6F7 00094310 ZwLockProductActivationKeys - 1793 6F8 00094320 ZwLockRegistryKey - 1794 6F9 00094330 ZwLockVirtualMemory - 1795 6FA 00094340 ZwMakePermanentObject - 1796 6FB 00094350 ZwMakeTemporaryObject - 1797 6FC 00094360 ZwManagePartition - 1798 6FD 00094370 ZwMapCMFModule - 1799 6FE 00094380 ZwMapUserPhysicalPages - 1800 6FF 000933A0 ZwMapUserPhysicalPagesScatter - 1801 700 000935F0 ZwMapViewOfSection - 1802 701 00094390 ZwModifyBootEntry - 1803 702 000943A0 ZwModifyDriverEntry - 1804 703 000943B0 ZwNotifyChangeDirectoryFile - 1805 704 000943C0 ZwNotifyChangeKey - 1806 705 000943D0 ZwNotifyChangeMultipleKeys - 1807 706 000943E0 ZwNotifyChangeSession - 1808 707 000938F0 ZwOpenDirectoryObject - 1809 708 000943F0 ZwOpenEnlistment - 1810 709 00093770 ZwOpenEvent - 1811 70A 00094400 ZwOpenEventPair - 1812 70B 000936A0 ZwOpenFile - 1813 70C 00094410 ZwOpenIoCompletion - 1814 70D 00094420 ZwOpenJobObject - 1815 70E 00093490 ZwOpenKey - 1816 70F 00094430 ZwOpenKeyEx - 1817 710 00094440 ZwOpenKeyTransacted - 1818 711 00094450 ZwOpenKeyTransactedEx - 1819 712 00094460 ZwOpenKeyedEvent - 1820 713 00094470 ZwOpenMutant - 1821 714 00094480 ZwOpenObjectAuditAlarm - 1822 715 00094490 ZwOpenPartition - 1823 716 000944A0 ZwOpenPrivateNamespace - 1824 717 000935D0 ZwOpenProcess - 1825 718 000944B0 ZwOpenProcessToken - 1826 719 00093670 ZwOpenProcessTokenEx - 1827 71A 000944C0 ZwOpenResourceManager - 1828 71B 000936E0 ZwOpenSection - 1829 71C 000944D0 ZwOpenSemaphore - 1830 71D 000944E0 ZwOpenSession - 1831 71E 000944F0 ZwOpenSymbolicLinkObject - 1832 71F 00094500 ZwOpenThread - 1833 720 000935B0 ZwOpenThreadToken - 1834 721 00093660 ZwOpenThreadTokenEx - 1835 722 00094510 ZwOpenTimer - 1836 723 00094520 ZwOpenTransaction - 1837 724 00094530 ZwOpenTransactionManager - 1838 725 00094540 ZwPlugPlayControl - 1839 726 00093960 ZwPowerInformation - 1840 727 00094550 ZwPrePrepareComplete - 1841 728 00094560 ZwPrePrepareEnlistment - 1842 729 00094570 ZwPrepareComplete - 1843 72A 00094580 ZwPrepareEnlistment - 1844 72B 00094590 ZwPrivilegeCheck - 1845 72C 000945A0 ZwPrivilegeObjectAuditAlarm - 1846 72D 000945B0 ZwPrivilegedServiceAuditAlarm - 1847 72E 000945C0 ZwPropagationComplete - 1848 72F 000945D0 ZwPropagationFailed - 1849 730 00093870 ZwProtectVirtualMemory - 1850 731 000945E0 ZwPulseEvent - 1851 732 00093740 ZwQueryAttributesFile - 1852 733 000945F0 ZwQueryBootEntryOrder - 1853 734 00094600 ZwQueryBootOptions - 1854 735 00094610 ZwQueryDebugFilterState - 1855 736 000934C0 ZwQueryDefaultLocale - 1856 737 000937B0 ZwQueryDefaultUILanguage - 1857 738 000936C0 ZwQueryDirectoryFile - 1858 739 00094620 ZwQueryDirectoryObject - 1859 73A 00094630 ZwQueryDriverEntryOrder - 1860 73B 00094640 ZwQueryEaFile - 1861 73C 000938D0 ZwQueryEvent - 1862 73D 00094650 ZwQueryFullAttributesFile - 1863 73E 00094660 ZwQueryInformationAtom - 1864 73F 00094670 ZwQueryInformationEnlistment - 1865 740 00093480 ZwQueryInformationFile - 1866 741 00094680 ZwQueryInformationJobObject - 1867 742 00094690 ZwQueryInformationPort - 1868 743 00093500 ZwQueryInformationProcess - 1869 744 000946A0 ZwQueryInformationResourceManager - 1870 745 000935C0 ZwQueryInformationThread - 1871 746 00093580 ZwQueryInformationToken - 1872 747 000946B0 ZwQueryInformationTransaction - 1873 748 000946C0 ZwQueryInformationTransactionManager - 1874 749 000946D0 ZwQueryInformationWorkerFactory - 1875 74A 000946E0 ZwQueryInstallUILanguage - 1876 74B 000946F0 ZwQueryIntervalProfile - 1877 74C 00094700 ZwQueryIoCompletion - 1878 74D 000934D0 ZwQueryKey - 1879 74E 00094710 ZwQueryLicenseValue - 1880 74F 00094720 ZwQueryMultipleValueKey - 1881 750 00094730 ZwQueryMutant - 1882 751 00093470 ZwQueryObject - 1883 752 00094740 ZwQueryOpenSubKeys - 1884 753 00094750 ZwQueryOpenSubKeysEx - 1885 754 00093680 ZwQueryPerformanceCounter - 1886 755 00094760 ZwQueryPortInformationProcess - 1887 756 00094770 ZwQueryQuotaInformationFile - 1888 757 00093880 ZwQuerySection - 1889 758 00094780 ZwQuerySecurityAttributesToken - 1890 759 00094790 ZwQuerySecurityObject - 1891 75A 000947A0 ZwQuerySemaphore - 1892 75B 000947B0 ZwQuerySymbolicLinkObject - 1893 75C 000947C0 ZwQuerySystemEnvironmentValue - 1894 75D 000947D0 ZwQuerySystemEnvironmentValueEx - 1895 75E 000936D0 ZwQuerySystemInformation - 1896 75F 000947E0 ZwQuerySystemInformationEx - 1897 760 00093910 ZwQuerySystemTime - 1898 761 000936F0 ZwQueryTimer - 1899 762 000947F0 ZwQueryTimerResolution - 1900 763 000934E0 ZwQueryValueKey - 1901 764 000935A0 ZwQueryVirtualMemory - 1902 765 00093800 ZwQueryVolumeInformationFile - 1903 766 00094800 ZwQueryWnfStateData - 1904 767 00094810 ZwQueryWnfStateNameInformation - 1905 768 000937C0 ZwQueueApcThread - 1906 769 00094820 ZwQueueApcThreadEx - 1907 76A 00094830 ZwRaiseException - 1908 76B 00094840 ZwRaiseHardError - 1909 76C 000933D0 ZwReadFile - 1910 76D 00093650 ZwReadFileScatter - 1911 76E 00094850 ZwReadOnlyEnlistment - 1912 76F 000938B0 ZwReadRequestData - 1913 770 00093760 ZwReadVirtualMemory - 1914 771 00094860 ZwRecoverEnlistment - 1915 772 00094870 ZwRecoverResourceManager - 1916 773 00094880 ZwRecoverTransactionManager - 1917 774 00094890 ZwRegisterProtocolAddressInformation - 1918 775 000948A0 ZwRegisterThreadTerminatePort - 1919 776 000948B0 ZwReleaseKeyedEvent - 1920 777 00093570 ZwReleaseMutant - 1921 778 00093410 ZwReleaseSemaphore - 1922 779 000948C0 ZwReleaseWorkerFactoryWorker - 1923 77A 00093400 ZwRemoveIoCompletion - 1924 77B 000948D0 ZwRemoveIoCompletionEx - 1925 77C 000948E0 ZwRemoveProcessDebug - 1926 77D 000948F0 ZwRenameKey - 1927 77E 00094900 ZwRenameTransactionManager - 1928 77F 00094910 ZwReplaceKey - 1929 780 00094920 ZwReplacePartitionUnit - 1930 781 00093430 ZwReplyPort - 1931 782 00093420 ZwReplyWaitReceivePort - 1932 783 00093620 ZwReplyWaitReceivePortEx - 1933 784 00094930 ZwReplyWaitReplyPort - 1934 785 00094940 ZwRequestPort - 1935 786 00093590 ZwRequestWaitReplyPort - 1936 787 00094950 ZwResetEvent - 1937 788 00094960 ZwResetWriteWatch - 1938 789 00094970 ZwRestoreKey - 1939 78A 00094980 ZwResumeProcess - 1940 78B 00093890 ZwResumeThread - 1941 78C 00094990 ZwRevertContainerImpersonation - 1942 78D 000949A0 ZwRollbackComplete - 1943 78E 000949B0 ZwRollbackEnlistment - 1944 78F 000949C0 ZwRollbackTransaction - 1945 790 000949D0 ZwRollforwardTransactionManager - 1946 791 000949E0 ZwSaveKey - 1947 792 000949F0 ZwSaveKeyEx - 1948 793 00094A00 ZwSaveMergedKeys - 1949 794 00094A10 ZwSecureConnectPort - 1950 795 00094A20 ZwSerializeBoot - 1951 796 00094A30 ZwSetBootEntryOrder - 1952 797 00094A40 ZwSetBootOptions - 1953 798 00094A50 ZwSetCachedSigningLevel - 1954 799 00094A60 ZwSetContextThread - 1955 79A 00094A70 ZwSetDebugFilterState - 1956 79B 00094A80 ZwSetDefaultHardErrorPort - 1957 79C 00094A90 ZwSetDefaultLocale - 1958 79D 00094AA0 ZwSetDefaultUILanguage - 1959 79E 00094AB0 ZwSetDriverEntryOrder - 1960 79F 00094AC0 ZwSetEaFile - 1961 7A0 00093450 ZwSetEvent - 1962 7A1 00093640 ZwSetEventBoostPriority - 1963 7A2 00094AD0 ZwSetHighEventPair - 1964 7A3 00094AE0 ZwSetHighWaitLowEventPair - 1965 7A4 00094AF0 ZwSetIRTimer - 1966 7A5 00094B00 ZwSetInformationDebugObject - 1967 7A6 00094B10 ZwSetInformationEnlistment - 1968 7A7 000935E0 ZwSetInformationFile - 1969 7A8 00094B20 ZwSetInformationJobObject - 1970 7A9 00094B30 ZwSetInformationKey - 1971 7AA 00093930 ZwSetInformationObject - 1972 7AB 00093530 ZwSetInformationProcess - 1973 7AC 00094B40 ZwSetInformationResourceManager - 1974 7AD 00094B50 ZwSetInformationSymbolicLink - 1975 7AE 00093440 ZwSetInformationThread - 1976 7AF 00094B60 ZwSetInformationToken - 1977 7B0 00094B70 ZwSetInformationTransaction - 1978 7B1 00094B80 ZwSetInformationTransactionManager - 1979 7B2 00094B90 ZwSetInformationVirtualMemory - 1980 7B3 00094BA0 ZwSetInformationWorkerFactory - 1981 7B4 00094BB0 ZwSetIntervalProfile - 1982 7B5 00094BC0 ZwSetIoCompletion - 1983 7B6 00094BD0 ZwSetIoCompletionEx - 1984 7B7 00094BE0 ZwSetLdtEntries - 1985 7B8 00094BF0 ZwSetLowEventPair - 1986 7B9 00094C00 ZwSetLowWaitHighEventPair - 1987 7BA 00094C10 ZwSetQuotaInformationFile - 1988 7BB 00094C20 ZwSetSecurityObject - 1989 7BC 00094C30 ZwSetSystemEnvironmentValue - 1990 7BD 00094C40 ZwSetSystemEnvironmentValueEx - 1991 7BE 00094C50 ZwSetSystemInformation - 1992 7BF 00094C60 ZwSetSystemPowerState - 1993 7C0 00094C70 ZwSetSystemTime - 1994 7C1 00094C80 ZwSetThreadExecutionState - 1995 7C2 00093990 ZwSetTimer - 1996 7C3 00094C90 ZwSetTimer2 - 1997 7C4 00094CA0 ZwSetTimerEx - 1998 7C5 00094CB0 ZwSetTimerResolution - 1999 7C6 00094CC0 ZwSetUuidSeed - 2000 7C7 00093970 ZwSetValueKey - 2001 7C8 00094CD0 ZwSetVolumeInformationFile - 2002 7C9 00094CE0 ZwSetWnfProcessNotificationEvent - 2003 7CA 00094CF0 ZwShutdownSystem - 2004 7CB 00094D00 ZwShutdownWorkerFactory - 2005 7CC 00094D10 ZwSignalAndWaitForSingleObject - 2006 7CD 00094D20 ZwSinglePhaseReject - 2007 7CE 00094D30 ZwStartProfile - 2008 7CF 00094D40 ZwStopProfile - 2009 7D0 00094D50 ZwSubscribeWnfStateChange - 2010 7D1 00094D60 ZwSuspendProcess - 2011 7D2 00094D70 ZwSuspendThread - 2012 7D3 00094D80 ZwSystemDebugControl - 2013 7D4 00094D90 ZwTerminateJobObject - 2014 7D5 00093630 ZwTerminateProcess - 2015 7D6 000938A0 ZwTerminateThread - 2016 7D7 00094DA0 ZwTestAlert - 2017 7D8 00094DB0 ZwThawRegistry - 2018 7D9 00094DC0 ZwThawTransactions - 2019 7DA 00094DD0 ZwTraceControl - 2020 7DB 00093950 ZwTraceEvent - 2021 7DC 00094DE0 ZwTranslateFilePath - 2022 7DD 00094DF0 ZwUmsThreadYield - 2023 7DE 00094E00 ZwUnloadDriver - 2024 7DF 00094E10 ZwUnloadKey - 2025 7E0 00094E20 ZwUnloadKey2 - 2026 7E1 00094E30 ZwUnloadKeyEx - 2027 7E2 00094E40 ZwUnlockFile - 2028 7E3 00094E50 ZwUnlockVirtualMemory - 2029 7E4 00093610 ZwUnmapViewOfSection - 2030 7E5 00094E60 ZwUnmapViewOfSectionEx - 2031 7E6 00094E70 ZwUnsubscribeWnfStateChange - 2032 7E7 00094E80 ZwUpdateWnfStateData - 2033 7E8 00094E90 ZwVdmControl - 2034 7E9 00094EA0 ZwWaitForAlertByThreadId - 2035 7EA 00094EB0 ZwWaitForDebugEvent - 2036 7EB 00094EC0 ZwWaitForKeyedEvent - 2037 7EC 00093920 ZwWaitForMultipleObjects - 2038 7ED 00093510 ZwWaitForMultipleObjects32 - 2039 7EE 000933B0 ZwWaitForSingleObject - 2040 7EF 00094ED0 ZwWaitForWorkViaWorkerFactory - 2041 7F0 00094EE0 ZwWaitHighEventPair - 2042 7F1 00094EF0 ZwWaitLowEventPair - 2043 7F2 00093380 ZwWorkerFactoryWorkerReady - 2044 7F3 000933F0 ZwWriteFile - 2045 7F4 00093520 ZwWriteFileGather - 2046 7F5 000938E0 ZwWriteRequestData - 2047 7F6 00093710 ZwWriteVirtualMemory - 2048 7F7 000937D0 ZwYieldExecution - 2049 7F8 00083D50 __C_specific_handler - 2050 7F9 00096080 __chkstk - 2051 7FA 00083F10 __isascii - 2052 7FB 00083F30 __iscsym - 2053 7FC 00083F80 __iscsymf - 2054 7FD 000756F0 __misaligned_access - 2055 7FE 00083FC0 __toascii - 2056 7FF 000841E0 _atoi64 - 2057 800 000748E0 _errno - 2058 801 00140010 _fltused - 2059 802 00084250 _i64toa - 2060 803 0008DA60 _i64toa_s - 2061 804 00084430 _i64tow - 2062 805 0008DD50 _i64tow_s - 2063 806 00084290 _itoa - 2064 807 0008DA90 _itoa_s - 2065 808 00084470 _itow - 2066 809 0008DD80 _itow_s - 2067 80A 00084600 _lfind - 2068 80B 000846C0 _local_unwind - 2069 80C 000842C0 _ltoa - 2070 80D 0008DAC0 _ltoa_s - 2071 80E 000844A0 _ltow - 2072 80F 0008DDB0 _ltow_s - 2073 810 0008E070 _makepath_s - 2074 811 000846F0 _memccpy - 2075 812 00084780 _memicmp - 2076 813 00096DC0 _setjmp - 2077 814 00096E80 _setjmpex - 2078 815 000847A0 _snprintf - 2079 816 0008E1B0 _snprintf_s - 2080 817 0008E280 _snscanf_s - 2081 818 00084850 _snwprintf - 2082 819 0008E2C0 _snwprintf_s - 2083 81A 0008E3A0 _snwscanf_s - 2084 81B 00084930 _splitpath - 2085 81C 0008E3E0 _splitpath_s - 2086 81D 00084C80 _strcmpi - 2087 81E 00084C80 _stricmp - 2088 81F 00084C90 _strlwr - 2089 820 00084CC0 _strlwr_s - 2090 821 00084D80 _strnicmp - 2091 822 0008E680 _strnset_s - 2092 823 0008E710 _strset_s - 2093 824 00084D90 _strupr - 2094 825 00084DE0 _strupr_s - 2095 826 00084E50 _swprintf - 2096 827 000842F0 _ui64toa - 2097 828 0008DAF0 _ui64toa_s - 2098 829 000844D0 _ui64tow - 2099 82A 0008DDE0 _ui64tow_s - 2100 82B 00084350 _ultoa - 2101 82C 0008DB10 _ultoa_s - 2102 82D 000844F0 _ultow - 2103 82E 0008DE00 _ultow_s - 2104 82F 00084F10 _vscwprintf - 2105 830 00085080 _vsnprintf - 2106 831 0008E1E0 _vsnprintf_s - 2107 832 00085150 _vsnwprintf - 2108 833 0008E2F0 _vsnwprintf_s - 2109 834 00084FC0 _vswprintf - 2110 835 00085250 _wcsicmp - 2111 836 000852A0 _wcslwr - 2112 837 000852F0 _wcslwr_s - 2113 838 00085370 _wcsnicmp - 2114 839 000853D0 _wcsnset_s - 2115 83A 00085460 _wcsset_s - 2116 83B 000854C0 _wcstoi64 - 2117 83C 000854F0 _wcstoui64 - 2118 83D 00085790 _wcsupr - 2119 83E 000857D0 _wcsupr_s - 2120 83F 0008E770 _wmakepath_s - 2121 840 0008E8E0 _wsplitpath_s - 2122 841 00085850 _wtoi - 2123 842 00085880 _wtoi64 - 2124 843 000858A0 _wtol - 2125 844 000858C0 abs - 2126 845 000858D0 atan - 2127 846 00085B40 atan2 - 2128 847 00084200 atoi - 2129 848 00084230 atol - 2130 849 00086310 bsearch - 2131 84A 00086420 ceil - 2132 84B 00086540 cos - 2133 84C 00086E50 fabs - 2134 84D 00086F40 floor - 2135 84E 00083FD0 isalnum - 2136 84F 00084000 isalpha - 2137 850 00084030 iscntrl - 2138 851 00084060 isdigit - 2139 852 00084090 isgraph - 2140 853 000840C0 islower - 2141 854 000840F0 isprint - 2142 855 00084120 ispunct - 2143 856 00084150 isspace - 2144 857 00084180 isupper - 2145 858 00087070 iswalnum - 2146 859 00087080 iswalpha - 2147 85A 00087090 iswascii - 2148 85B 00087140 iswctype - 2149 85C 000870B0 iswdigit - 2150 85D 000870C0 iswgraph - 2151 85E 000870D0 iswlower - 2152 85F 000870E0 iswprint - 2153 860 000870F0 iswspace - 2154 861 00087100 iswxdigit - 2155 862 000841B0 isxdigit - 2156 863 000858C0 labs - 2157 864 00087170 log - 2158 865 00087460 longjmp - 2159 866 00087490 mbstowcs - 2160 867 00087560 memchr - 2161 868 00087590 memcmp - 2162 869 00097C40 memcpy - 2163 86A 0008EBA0 memcpy_s - 2164 86B 00097C40 memmove - 2165 86C 0008EC50 memmove_s - 2166 86D 00097F80 memset - 2167 86E 00096F20 pow - 2168 86F 00087670 qsort - 2169 870 00087A70 qsort_s - 2170 871 00086960 sin - 2171 872 00087EA0 sprintf - 2172 873 0008ECD0 sprintf_s - 2173 874 00087F40 sqrt - 2174 875 00088050 sscanf - 2175 876 0008ED50 sscanf_s - 2176 877 00088140 strcat - 2177 878 0008EDB0 strcat_s - 2178 879 000882A0 strchr - 2179 87A 000882D0 strcmp - 2180 87B 000881E0 strcpy - 2181 87C 0008EE50 strcpy_s - 2182 87D 00088390 strcspn - 2183 87E 00088440 strlen - 2184 87F 00088500 strncat - 2185 880 0008EEE0 strncat_s - 2186 881 000886B0 strncmp - 2187 882 00088780 strncpy - 2188 883 0008EFE0 strncpy_s - 2189 884 000888F0 strnlen - 2190 885 00088910 strpbrk - 2191 886 000889C0 strrchr - 2192 887 000889F0 strspn - 2193 888 00088AC0 strstr - 2194 889 0008F0D0 strtok_s - 2195 88A 00088D60 strtol - 2196 88B 00088DC0 strtoul - 2197 88C 00084E50 swprintf - 2198 88D 0008F1F0 swprintf_s - 2199 88E 0008F280 swscanf_s - 2200 88F 00088E00 tan - 2201 890 000892B0 tolower - 2202 891 000892F0 toupper - 2203 892 00089360 towlower - 2204 893 00089390 towupper - 2205 894 000CADA0 vDbgPrintEx - 2206 895 000CADD0 vDbgPrintExWithPrefix - 2207 896 00089420 vsprintf - 2208 897 0008ED00 vsprintf_s - 2209 898 0008F220 vswprintf_s - 2210 899 00089440 wcscat - 2211 89A 0008F2E0 wcscat_s - 2212 89B 000894B0 wcschr - 2213 89C 000894E0 wcscmp - 2214 89D 00089480 wcscpy - 2215 89E 0008F390 wcscpy_s - 2216 89F 00089520 wcscspn - 2217 8A0 00089570 wcslen - 2218 8A1 00089590 wcsncat - 2219 8A2 0008F420 wcsncat_s - 2220 8A3 000895E0 wcsncmp - 2221 8A4 00089620 wcsncpy - 2222 8A5 0008F530 wcsncpy_s - 2223 8A6 00089670 wcsnlen - 2224 8A7 000896A0 wcspbrk - 2225 8A8 000896F0 wcsrchr - 2226 8A9 00089730 wcsspn - 2227 8AA 00089780 wcsstr - 2228 8AB 0008F640 wcstok_s - 2229 8AC 00089A00 wcstol - 2230 8AD 00089AA0 wcstombs - 2231 8AE 00089A60 wcstoul - 8 00077370 [NONAME] - - Summary - - 9000 .data - 4000 .mrdata - E000 .pdata - 42000 .rdata - 1000 .reloc - 66000 .rsrc - FC000 .text - 1000 RT -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\oleaut32.dll - -File Type: DLL - - Section contains the following exports for OLEAUT32.dll - - 00000000 characteristics - 64A473E2 time date stamp Tue Jul 4 12:32:50 2023 - 0.00 version - 2 ordinal base - 499 number of functions - 425 number of names - - ordinal hint RVA name - - 286 0 0001AD60 BSTR_UserFree - 144 1 0001AD50 BSTR_UserFree64 - 284 2 00018470 BSTR_UserMarshal - 145 3 00014450 BSTR_UserMarshal64 - 283 4 00014110 BSTR_UserSize - 151 5 000144E0 BSTR_UserSize64 - 285 6 000179C0 BSTR_UserUnmarshal - 300 7 00016FE0 BSTR_UserUnmarshal64 - 414 8 00055710 BstrFromVector - 171 9 000477E0 ClearCustData - 31 A 000583F0 CreateDispTypeInfo - 202 B 00020080 CreateErrorInfo - 32 C 00058850 CreateStdDispatch - 160 D 0002E900 CreateTypeLib - 180 E 0001E980 CreateTypeLib2 - 146 F 00006D90 DispCallFunc - 29 10 0001B960 DispGetIDsOfNames - 28 11 00058860 DispGetParam - 30 12 000040A0 DispInvoke - 301 13 0001BD80 DllCanUnloadNow - 302 14 00011C10 DllGetClassObject - 320 15 00058F20 DllRegisterServer - 321 16 00059220 DllUnregisterServer - 14 17 0001EB40 DosDateTimeToVariantTime - 35 18 0001BED0 GetActiveObject - 332 19 00059740 GetAltMonthNames - 200 1A 00020090 GetErrorInfo - 322 1B 0005E670 GetRecordInfoFromGuids - 323 1C 0005E7F0 GetRecordInfoFromTypeInfo - 326 1D 0002F870 GetVarConversionLocaleSetting - 445 1E HWND_UserFree (forwarded to COMBASE.HWND_UserFree) - 449 1F HWND_UserFree64 (forwarded to COMBASE.HWND_UserFree64) - 446 20 HWND_UserMarshal (forwarded to COMBASE.HWND_UserMarshal) - 450 21 HWND_UserMarshal64 (forwarded to COMBASE.HWND_UserMarshal64) - 447 22 HWND_UserSize (forwarded to COMBASE.HWND_UserSize) - 451 23 HWND_UserSize64 (forwarded to COMBASE.HWND_UserSize64) - 448 24 HWND_UserUnmarshal (forwarded to COMBASE.HWND_UserUnmarshal) - 452 25 HWND_UserUnmarshal64 (forwarded to COMBASE.HWND_UserUnmarshal64) - 165 26 0001BCC0 LHashValOfNameSys - 166 27 000110A0 LHashValOfNameSysA - 296 28 00015430 LPSAFEARRAY_Marshal - 295 29 00015110 LPSAFEARRAY_Size - 297 2A 00016620 LPSAFEARRAY_Unmarshal - 294 2B 0001AC60 LPSAFEARRAY_UserFree - 324 2C 000554C0 LPSAFEARRAY_UserFree64 - 292 2D 00018510 LPSAFEARRAY_UserMarshal - 328 2E 000199A0 LPSAFEARRAY_UserMarshal64 - 291 2F 00018520 LPSAFEARRAY_UserSize - 350 30 0001A100 LPSAFEARRAY_UserSize64 - 293 31 00018500 LPSAFEARRAY_UserUnmarshal - 351 32 00018CA0 LPSAFEARRAY_UserUnmarshal64 - 162 33 00004DC0 LoadRegTypeLib - 161 34 0001BD90 LoadTypeLib - 183 35 000111C0 LoadTypeLibEx - 500 36 00014220 OACleanup - 352 37 0001E980 OACreateTypeLib2 - 170 38 00031850 OaBuildVersion - 444 39 0002F8A0 OaEnablePerUserTLibRegistration - 420 3A 0001BF20 OleCreateFontIndirect - 419 3B 00002860 OleCreatePictureIndirect - 417 3C 0005F4A0 OleCreatePropertyFrame - 416 3D 0005F500 OleCreatePropertyFrameIndirect - 415 3E 0005F540 OleIconToCursor - 418 3F 0005F590 OleLoadPicture - 401 40 0005F5C0 OleLoadPictureEx - 422 41 0005F650 OleLoadPictureFile - 402 42 0005F690 OleLoadPictureFileEx - 424 43 0005F710 OleLoadPicturePath - 423 44 0005F790 OleSavePictureFile - 421 45 0001BDA0 OleTranslateColor - 164 46 00030DA0 QueryPathOfRegTypeLib - 33 47 000592E0 RegisterActiveObject - 163 48 00030EA0 RegisterTypeLib - 442 49 00030F50 RegisterTypeLibForUser - 34 4A 00059340 RevokeActiveObject - 23 4B 000183D0 SafeArrayAccessData - 353 4C 0005FA20 SafeArrayAddRef - 37 4D 0000D050 SafeArrayAllocData - 36 4E 00014030 SafeArrayAllocDescriptor - 41 4F 0000D130 SafeArrayAllocDescriptorEx - 27 50 00010D70 SafeArrayCopy - 412 51 00010E70 SafeArrayCopyData - 15 52 0000CF90 SafeArrayCreate - 42 53 0005FAA0 SafeArrayCreateEx - 411 54 0000C850 SafeArrayCreateVector - 43 55 0005FBE0 SafeArrayCreateVectorEx - 16 56 0000CBD0 SafeArrayDestroy - 39 57 0005FEB0 SafeArrayDestroyData - 38 58 0001BBC0 SafeArrayDestroyDescriptor - 17 59 0001AB20 SafeArrayGetDim - 25 5A 0001A4E0 SafeArrayGetElement - 18 5B 0001B500 SafeArrayGetElemsize - 67 5C 0005FD70 SafeArrayGetIID - 20 5D 0001A710 SafeArrayGetLBound - 45 5E 0005FDA0 SafeArrayGetRecordInfo - 19 5F 0001A440 SafeArrayGetUBound - 77 60 0001A6C0 SafeArrayGetVartype - 21 61 00011070 SafeArrayLock - 148 62 0001A620 SafeArrayPtrOfIndex - 26 63 0000D360 SafeArrayPutElement - 40 64 0001B520 SafeArrayRedim - 354 65 0005FE00 SafeArrayReleaseData - 355 66 0005FE10 SafeArrayReleaseDescriptor - 57 67 0001B880 SafeArraySetIID - 44 68 0005FE20 SafeArraySetRecordInfo - 24 69 0001A4B0 SafeArrayUnaccessData - 22 6A 00011040 SafeArrayUnlock - 201 6B 000200A0 SetErrorInfo - 327 6C 0002F8C0 SetOaNoCache - 325 6D 0002F8E0 SetVarConversionLocaleSetting - 356 6E 00060020 SysAddRefString - 2 6F 00009F10 SysAllocString - 150 70 0000BEC0 SysAllocStringByteLen - 4 71 0000C280 SysAllocStringLen - 6 72 0000BF80 SysFreeString - 3 73 00001B00 SysReAllocString - 5 74 000181F0 SysReAllocStringLen - 357 75 00060030 SysReleaseString - 149 76 00014190 SysStringByteLen - 7 77 0001AB00 SysStringLen - 184 78 000050F0 SystemTimeToVariantTime - 186 79 0002F1B0 UnRegisterTypeLib - 443 7A 0002F240 UnRegisterTypeLibForUser - 290 7B 0001AB70 VARIANT_UserFree - 358 7C 0001AB60 VARIANT_UserFree64 - 288 7D 00018530 VARIANT_UserMarshal - 359 7E 000195C0 VARIANT_UserMarshal64 - 287 7F 00018950 VARIANT_UserSize - 380 80 00019E10 VARIANT_UserSize64 - 289 81 00017130 VARIANT_UserUnmarshal - 381 82 00015930 VARIANT_UserUnmarshal64 - 168 83 0004E820 VarAbs - 141 84 0004F620 VarAdd - 142 85 00051EA0 VarAnd - 124 86 000559E0 VarBoolFromCy - 123 87 00055A00 VarBoolFromDate - 236 88 00060060 VarBoolFromDec - 126 89 00055A10 VarBoolFromDisp - 233 8A 00055A60 VarBoolFromI1 - 119 8B 00055A70 VarBoolFromI2 - 120 8C 00055AF0 VarBoolFromI4 - 370 8D 00055A90 VarBoolFromI8 - 121 8E 00055AB0 VarBoolFromR4 - 122 8F 00055AD0 VarBoolFromR8 - 125 90 00004930 VarBoolFromStr - 118 91 00055A60 VarBoolFromUI1 - 234 92 00055A70 VarBoolFromUI2 - 235 93 00055AF0 VarBoolFromUI4 - 371 94 00055A90 VarBoolFromUI8 - 313 95 0001B280 VarBstrCat - 314 96 0001B330 VarBstrCmp - 116 97 000048C0 VarBstrFromBool - 113 98 00055B00 VarBstrFromCy - 114 99 0001BFC0 VarBstrFromDate - 232 9A 00001400 VarBstrFromDec - 115 9B 00055ED0 VarBstrFromDisp - 229 9C 00055F20 VarBstrFromI1 - 109 9D 00055F30 VarBstrFromI2 - 110 9E 00055FE0 VarBstrFromI4 - 368 9F 00056090 VarBstrFromI8 - 111 A0 00056150 VarBstrFromR4 - 112 A1 000056B0 VarBstrFromR8 - 108 A2 00056280 VarBstrFromUI1 - 230 A3 00056290 VarBstrFromUI2 - 231 A4 00004B40 VarBstrFromUI4 - 369 A5 00004110 VarBstrFromUI8 - 318 A6 00050010 VarCat - 176 A7 0001AD90 VarCmp - 306 A8 00052AF0 VarCyAbs - 299 A9 00052B30 VarCyAdd - 311 AA 00052B70 VarCyCmp - 312 AB 00052B90 VarCyCmpR8 - 307 AC 00052BF0 VarCyFix - 106 AD 00064430 VarCyFromBool - 103 AE 00064480 VarCyFromDate - 228 AF 00060090 VarCyFromDec - 105 B0 000562A0 VarCyFromDisp - 225 B1 000562F0 VarCyFromI1 - 99 B2 00064430 VarCyFromI2 - 100 B3 00064450 VarCyFromI4 - 366 B4 000646A0 VarCyFromI8 - 101 B5 00064470 VarCyFromR4 - 102 B6 00064480 VarCyFromR8 - 104 B7 00056310 VarCyFromStr - 98 B8 000563A0 VarCyFromUI1 - 226 B9 000563C0 VarCyFromUI2 - 227 BA 000563E0 VarCyFromUI4 - 367 BB 00056400 VarCyFromUI8 - 308 BC 00052C30 VarCyInt - 303 BD 00052CA0 VarCyMul - 304 BE 00052E10 VarCyMulI4 - 329 BF 000500E0 VarCyMulI8 - 309 C0 00052E90 VarCyNeg - 310 C1 0004EA80 VarCyRound - 305 C2 00052EC0 VarCySub - 96 C3 00056FD0 VarDateFromBool - 93 C4 00056420 VarDateFromCy - 224 C5 000603C0 VarDateFromDec - 95 C6 00056460 VarDateFromDisp - 221 C7 000564C0 VarDateFromI1 - 89 C8 00056FD0 VarDateFromI2 - 90 C9 00056500 VarDateFromI4 - 364 CA 00056540 VarDateFromI8 - 91 CB 00056580 VarDateFromR4 - 92 CC 000565B0 VarDateFromR8 - 94 CD 00063B90 VarDateFromStr - 88 CE 00057050 VarDateFromUI1 - 222 CF 000565E0 VarDateFromUI2 - 223 D0 00056620 VarDateFromUI4 - 365 D1 00056660 VarDateFromUI8 - 330 D2 00006160 VarDateFromUdate - 319 D3 00006180 VarDateFromUdateEx - 182 D4 00053490 VarDecAbs - 177 D5 000534C0 VarDecAdd - 204 D6 000022C0 VarDecCmp - 298 D7 00052A30 VarDecCmpR8 - 178 D8 000534D0 VarDecDiv - 187 D9 00053B10 VarDecFix - 199 DA 00060420 VarDecFromBool - 196 DB 00060450 VarDecFromCy - 195 DC 00060480 VarDecFromDate - 198 DD 00060490 VarDecFromDisp - 241 DE 000604F0 VarDecFromI1 - 191 DF 00060520 VarDecFromI2 - 192 E0 00002830 VarDecFromI4 - 374 E1 00060560 VarDecFromI8 - 193 E2 00001970 VarDecFromR4 - 194 E3 00001620 VarDecFromR8 - 197 E4 000605B0 VarDecFromStr - 190 E5 00060640 VarDecFromUI1 - 242 E6 00060660 VarDecFromUI2 - 243 E7 00060680 VarDecFromUI4 - 375 E8 000606A0 VarDecFromUI8 - 188 E9 00053B30 VarDecInt - 179 EA 00053B70 VarDecMul - 189 EB 00053DE0 VarDecNeg - 203 EC 000017A0 VarDecRound - 181 ED 00053E10 VarDecSub - 143 EE 00050150 VarDiv - 152 EF 00052030 VarEqv - 169 F0 0004EB00 VarFix - 87 F1 00065C50 VarFormat - 127 F2 00065D40 VarFormatCurrency - 97 F3 00065E60 VarFormatDateTime - 139 F4 00065EE0 VarFormatFromTokens - 107 F5 00067F50 VarFormatNumber - 117 F6 00068060 VarFormatPercent - 253 F7 000566A0 VarI1FromBool - 250 F8 000566B0 VarI1FromCy - 249 F9 000566E0 VarI1FromDate - 256 FA 000606C0 VarI1FromDec - 252 FB 000566F0 VarI1FromDisp - 245 FC 00056740 VarI1FromI2 - 246 FD 00056770 VarI1FromI4 - 376 FE 00056790 VarI1FromI8 - 247 FF 000567B0 VarI1FromR4 - 248 100 000567C0 VarI1FromR8 - 251 101 00056800 VarI1FromStr - 244 102 00056830 VarI1FromUI1 - 254 103 00056850 VarI1FromUI2 - 255 104 00056870 VarI1FromUI4 - 377 105 00056890 VarI1FromUI8 - 56 106 00057250 VarI2FromBool - 52 107 00064580 VarI2FromCy - 53 108 000568B0 VarI2FromDate - 208 109 00060740 VarI2FromDec - 55 10A 000568C0 VarI2FromDisp - 205 10B 00056910 VarI2FromI1 - 49 10C 00056920 VarI2FromI4 - 346 10D 00056940 VarI2FromI8 - 50 10E 00056970 VarI2FromR4 - 51 10F 00056980 VarI2FromR8 - 54 110 0001EA10 VarI2FromStr - 48 111 000573A0 VarI2FromUI1 - 206 112 000569C0 VarI2FromUI2 - 207 113 000569E0 VarI2FromUI4 - 347 114 00056A00 VarI2FromUI8 - 66 115 00056A20 VarI4FromBool - 62 116 000645D0 VarI4FromCy - 63 117 00056A30 VarI4FromDate - 212 118 000607C0 VarI4FromDec - 65 119 00056A40 VarI4FromDisp - 209 11A 00056A90 VarI4FromI1 - 59 11B 00056A20 VarI4FromI2 - 348 11C 00056AA0 VarI4FromI8 - 60 11D 00056AD0 VarI4FromR4 - 61 11E 000018F0 VarI4FromR8 - 64 11F 000055D0 VarI4FromStr - 58 120 000574F0 VarI4FromUI1 - 210 121 00056AE0 VarI4FromUI2 - 211 122 00056B00 VarI4FromUI4 - 349 123 00056B20 VarI4FromUI8 - 341 124 00056B40 VarI8FromBool - 337 125 000646E0 VarI8FromCy - 338 126 00056B50 VarI8FromDate - 345 127 00060840 VarI8FromDec - 340 128 00056B60 VarI8FromDisp - 342 129 00056BB0 VarI8FromI1 - 334 12A 00056B40 VarI8FromI2 - 335 12B 00056BC0 VarI8FromR4 - 336 12C 00056BD0 VarI8FromR8 - 339 12D 00056C10 VarI8FromStr - 333 12E 00057650 VarI8FromUI1 - 343 12F 00056D70 VarI8FromUI2 - 344 130 00056D80 VarI8FromUI4 - 427 131 00056D90 VarI8FromUI8 - 153 132 00052060 VarIdiv - 154 133 00052220 VarImp - 172 134 0004ECF0 VarInt - 155 135 00052310 VarMod - 129 136 00068150 VarMonthName - 156 137 000507E0 VarMul - 173 138 0004EEC0 VarNeg - 174 139 00052490 VarNot - 47 13A 000067C0 VarNumFromParseNum - 157 13B 00052530 VarOr - 46 13C 00005990 VarParseNumFromStr - 158 13D 000510C0 VarPow - 316 13E 00052AA0 VarR4CmpR8 - 76 13F 00056E50 VarR4FromBool - 72 140 00064650 VarR4FromCy - 73 141 00056DC0 VarR4FromDate - 216 142 000608E0 VarR4FromDec - 75 143 00056DD0 VarR4FromDisp - 213 144 00056E30 VarR4FromI1 - 69 145 00056E50 VarR4FromI2 - 70 146 00056E70 VarR4FromI4 - 360 147 00056E90 VarR4FromI8 - 71 148 000028C0 VarR4FromR8 - 74 149 00002100 VarR4FromStr - 68 14A 00056EB0 VarR4FromUI1 - 214 14B 00056ED0 VarR4FromUI2 - 215 14C 00056EF0 VarR4FromUI4 - 361 14D 00056F10 VarR4FromUI8 - 86 14E 00056FD0 VarR8FromBool - 82 14F 00064680 VarR8FromCy - 83 150 00056F40 VarR8FromDate - 220 151 00060930 VarR8FromDec - 85 152 00056F50 VarR8FromDisp - 217 153 00056FB0 VarR8FromI1 - 79 154 00056FD0 VarR8FromI2 - 80 155 00056FF0 VarR8FromI4 - 362 156 00057010 VarR8FromI8 - 81 157 00057030 VarR8FromR4 - 84 158 00005540 VarR8FromStr - 78 159 00057050 VarR8FromUI1 - 218 15A 00057070 VarR8FromUI2 - 219 15B 00057090 VarR8FromUI4 - 363 15C 000570B0 VarR8FromUI8 - 315 15D 00051230 VarR8Pow - 317 15E 0004F160 VarR8Round - 175 15F 0004F250 VarRound - 159 160 000512F0 VarSub - 140 161 00068220 VarTokenizeFormatString - 138 162 000566A0 VarUI1FromBool - 134 163 000570E0 VarUI1FromCy - 135 164 00057110 VarUI1FromDate - 240 165 000609C0 VarUI1FromDec - 137 166 00057120 VarUI1FromDisp - 237 167 00057170 VarUI1FromI1 - 130 168 00057190 VarUI1FromI2 - 131 169 00001E90 VarUI1FromI4 - 372 16A 00057230 VarUI1FromI8 - 132 16B 000571B0 VarUI1FromR4 - 133 16C 000571C0 VarUI1FromR8 - 136 16D 00057200 VarUI1FromStr - 238 16E 00057190 VarUI1FromUI2 - 239 16F 00001E90 VarUI1FromUI4 - 373 170 00057230 VarUI1FromUI8 - 266 171 00057250 VarUI2FromBool - 263 172 00057260 VarUI2FromCy - 262 173 00057290 VarUI2FromDate - 269 174 00060A40 VarUI2FromDec - 265 175 000572A0 VarUI2FromDisp - 267 176 000572F0 VarUI2FromI1 - 258 177 00057310 VarUI2FromI2 - 259 178 00005520 VarUI2FromI4 - 378 179 00057330 VarUI2FromI8 - 260 17A 00057350 VarUI2FromR4 - 261 17B 00057360 VarUI2FromR8 - 264 17C 000054F0 VarUI2FromStr - 257 17D 000573A0 VarUI2FromUI1 - 268 17E 00005520 VarUI2FromUI4 - 379 17F 00057330 VarUI2FromUI8 - 279 180 00056A20 VarUI4FromBool - 276 181 000573B0 VarUI4FromCy - 275 182 000573E0 VarUI4FromDate - 282 183 000027D0 VarUI4FromDec - 278 184 000573F0 VarUI4FromDisp - 280 185 00057440 VarUI4FromI1 - 271 186 00057460 VarUI4FromI2 - 272 187 00057480 VarUI4FromI4 - 425 188 00001E70 VarUI4FromI8 - 273 189 000574A0 VarUI4FromR4 - 274 18A 000574B0 VarUI4FromR8 - 277 18B 00004FA0 VarUI4FromStr - 270 18C 000574F0 VarUI4FromUI1 - 281 18D 00057500 VarUI4FromUI2 - 426 18E 00001E70 VarUI4FromUI8 - 437 18F 00056B40 VarUI8FromBool - 433 190 00057510 VarUI8FromCy - 434 191 00057540 VarUI8FromDate - 441 192 00060AC0 VarUI8FromDec - 436 193 00057550 VarUI8FromDisp - 438 194 000575A0 VarUI8FromI1 - 430 195 000575C0 VarUI8FromI2 - 428 196 000575E0 VarUI8FromI8 - 431 197 00057600 VarUI8FromR4 - 432 198 00057610 VarUI8FromR8 - 435 199 00004280 VarUI8FromStr - 429 19A 00057650 VarUI8FromUI1 - 439 19B 00056D70 VarUI8FromUI2 - 440 19C 00056D80 VarUI8FromUI4 - 331 19D 00006470 VarUdateFromDate - 128 19E 000684A0 VarWeekdayName - 167 19F 000526D0 VarXor - 12 1A0 00006CA0 VariantChangeType - 147 1A1 00009FF0 VariantChangeTypeEx - 9 1A2 0008C680 VariantClear - 10 1A3 0008C810 VariantCopy - 11 1A4 0008C6D0 VariantCopyInd - 8 1A5 0008C660 VariantInit - 13 1A6 00059230 VariantTimeToDosDateTime - 185 1A7 00005030 VariantTimeToSystemTime - 413 1A8 00002240 VectorFromBstr - - Summary - - 3000 .data - 1000 .didat - 9000 .pdata - 24000 .rdata - 3000 .reloc - 1000 .rsrc - 8C000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\secur32.dll - -File Type: DLL - - Section contains the following exports for Secur32.dll - - 00000000 characteristics - 559F300C time date stamp Thu Jul 9 19:38:04 2015 - 0.00 version - 1 ordinal base - 101 number of functions - 101 number of names - - ordinal hint RVA name - - 4 0 AcceptSecurityContext (forwarded to SSPICLI.AcceptSecurityContext) - 5 1 AcquireCredentialsHandleA (forwarded to SSPICLI.AcquireCredentialsHandleA) - 6 2 AcquireCredentialsHandleW (forwarded to SSPICLI.AcquireCredentialsHandleW) - 7 3 AddCredentialsA (forwarded to SSPICLI.AddCredentialsA) - 8 4 AddCredentialsW (forwarded to SSPICLI.AddCredentialsW) - 9 5 AddSecurityPackageA (forwarded to SSPICLI.AddSecurityPackageA) - 10 6 AddSecurityPackageW (forwarded to SSPICLI.AddSecurityPackageW) - 11 7 ApplyControlToken (forwarded to SSPICLI.ApplyControlToken) - 12 8 ChangeAccountPasswordA (forwarded to SSPICLI.ChangeAccountPasswordA) - 13 9 ChangeAccountPasswordW (forwarded to SSPICLI.ChangeAccountPasswordW) - 1 A 00002000 CloseLsaPerformanceData - 2 B 00001B00 CollectLsaPerformanceData - 14 C CompleteAuthToken (forwarded to SSPICLI.CompleteAuthToken) - 15 D CredMarshalTargetInfo (forwarded to SSPICLI.CredMarshalTargetInfo) - 16 E CredUnmarshalTargetInfo (forwarded to SSPICLI.CredUnmarshalTargetInfo) - 17 F DecryptMessage (forwarded to SSPICLI.DecryptMessage) - 18 10 DeleteSecurityContext (forwarded to SSPICLI.DeleteSecurityContext) - 19 11 DeleteSecurityPackageA (forwarded to SSPICLI.DeleteSecurityPackageA) - 20 12 DeleteSecurityPackageW (forwarded to SSPICLI.DeleteSecurityPackageW) - 21 13 EncryptMessage (forwarded to SSPICLI.EncryptMessage) - 22 14 EnumerateSecurityPackagesA (forwarded to SSPICLI.EnumerateSecurityPackagesA) - 23 15 EnumerateSecurityPackagesW (forwarded to SSPICLI.EnumerateSecurityPackagesW) - 24 16 ExportSecurityContext (forwarded to SSPICLI.ExportSecurityContext) - 25 17 FreeContextBuffer (forwarded to SSPICLI.FreeContextBuffer) - 26 18 FreeCredentialsHandle (forwarded to SSPICLI.FreeCredentialsHandle) - 27 19 000036A0 GetComputerObjectNameA - 28 1A 00001080 GetComputerObjectNameW - 29 1B GetSecurityUserInfo (forwarded to SSPICLI.GetSecurityUserInfo) - 30 1C GetUserNameExA (forwarded to SSPICLI.GetUserNameExA) - 31 1D GetUserNameExW (forwarded to SSPICLI.GetUserNameExW) - 32 1E ImpersonateSecurityContext (forwarded to SSPICLI.ImpersonateSecurityContext) - 33 1F ImportSecurityContextA (forwarded to SSPICLI.ImportSecurityContextA) - 34 20 ImportSecurityContextW (forwarded to SSPICLI.ImportSecurityContextW) - 35 21 InitSecurityInterfaceA (forwarded to SSPICLI.InitSecurityInterfaceA) - 36 22 InitSecurityInterfaceW (forwarded to SSPICLI.InitSecurityInterfaceW) - 37 23 InitializeSecurityContextA (forwarded to SSPICLI.InitializeSecurityContextA) - 38 24 InitializeSecurityContextW (forwarded to SSPICLI.InitializeSecurityContextW) - 39 25 LsaCallAuthenticationPackage (forwarded to SSPICLI.LsaCallAuthenticationPackage) - 40 26 LsaConnectUntrusted (forwarded to SSPICLI.LsaConnectUntrusted) - 41 27 LsaDeregisterLogonProcess (forwarded to SSPICLI.LsaDeregisterLogonProcess) - 42 28 LsaEnumerateLogonSessions (forwarded to SSPICLI.LsaEnumerateLogonSessions) - 43 29 LsaFreeReturnBuffer (forwarded to SSPICLI.LsaFreeReturnBuffer) - 44 2A LsaGetLogonSessionData (forwarded to SSPICLI.LsaGetLogonSessionData) - 45 2B LsaLogonUser (forwarded to SSPICLI.LsaLogonUser) - 46 2C LsaLookupAuthenticationPackage (forwarded to SSPICLI.LsaLookupAuthenticationPackage) - 47 2D LsaRegisterLogonProcess (forwarded to SSPICLI.LsaRegisterLogonProcess) - 48 2E LsaRegisterPolicyChangeNotification (forwarded to SSPICLI.LsaRegisterPolicyChangeNotification) - 49 2F LsaUnregisterPolicyChangeNotification (forwarded to SSPICLI.LsaUnregisterPolicyChangeNotification) - 50 30 MakeSignature (forwarded to SSPICLI.MakeSignature) - 3 31 00001EF0 OpenLsaPerformanceData - 51 32 QueryContextAttributesA (forwarded to SSPICLI.QueryContextAttributesA) - 52 33 QueryContextAttributesW (forwarded to SSPICLI.QueryContextAttributesW) - 53 34 QueryCredentialsAttributesA (forwarded to SSPICLI.QueryCredentialsAttributesA) - 54 35 QueryCredentialsAttributesW (forwarded to SSPICLI.QueryCredentialsAttributesW) - 55 36 QuerySecurityContextToken (forwarded to SSPICLI.QuerySecurityContextToken) - 56 37 QuerySecurityPackageInfoA (forwarded to SSPICLI.QuerySecurityPackageInfoA) - 57 38 QuerySecurityPackageInfoW (forwarded to SSPICLI.QuerySecurityPackageInfoW) - 58 39 RevertSecurityContext (forwarded to SSPICLI.RevertSecurityContext) - 59 3A SaslAcceptSecurityContext (forwarded to SSPICLI.SaslAcceptSecurityContext) - 60 3B SaslEnumerateProfilesA (forwarded to SSPICLI.SaslEnumerateProfilesA) - 61 3C SaslEnumerateProfilesW (forwarded to SSPICLI.SaslEnumerateProfilesW) - 62 3D SaslGetContextOption (forwarded to SSPICLI.SaslGetContextOption) - 63 3E SaslGetProfilePackageA (forwarded to SSPICLI.SaslGetProfilePackageA) - 64 3F SaslGetProfilePackageW (forwarded to SSPICLI.SaslGetProfilePackageW) - 65 40 SaslIdentifyPackageA (forwarded to SSPICLI.SaslIdentifyPackageA) - 66 41 SaslIdentifyPackageW (forwarded to SSPICLI.SaslIdentifyPackageW) - 67 42 SaslInitializeSecurityContextA (forwarded to SSPICLI.SaslInitializeSecurityContextA) - 68 43 SaslInitializeSecurityContextW (forwarded to SSPICLI.SaslInitializeSecurityContextW) - 69 44 SaslSetContextOption (forwarded to SSPICLI.SaslSetContextOption) - 70 45 SealMessage (forwarded to SSPICLI.SealMessage) - 71 46 SeciAllocateAndSetCallFlags (forwarded to SSPICLI.SeciAllocateAndSetCallFlags) - 72 47 SeciAllocateAndSetIPAddress (forwarded to SSPICLI.SeciAllocateAndSetIPAddress) - 73 48 SeciFreeCallContext (forwarded to SSPICLI.SeciFreeCallContext) - 74 49 000024C0 SecpFreeMemory - 75 4A 000013E0 SecpTranslateName - 76 4B 00002070 SecpTranslateNameEx - 77 4C SetContextAttributesA (forwarded to SSPICLI.SetContextAttributesA) - 78 4D SetContextAttributesW (forwarded to SSPICLI.SetContextAttributesW) - 79 4E SetCredentialsAttributesA (forwarded to SSPICLI.SetCredentialsAttributesA) - 80 4F SetCredentialsAttributesW (forwarded to SSPICLI.SetCredentialsAttributesW) - 81 50 SspiCompareAuthIdentities (forwarded to SSPICLI.SspiCompareAuthIdentities) - 82 51 SspiCopyAuthIdentity (forwarded to SSPICLI.SspiCopyAuthIdentity) - 83 52 SspiDecryptAuthIdentity (forwarded to SSPICLI.SspiDecryptAuthIdentity) - 84 53 SspiEncodeAuthIdentityAsStrings (forwarded to SSPICLI.SspiEncodeAuthIdentityAsStrings) - 85 54 SspiEncodeStringsAsAuthIdentity (forwarded to SSPICLI.SspiEncodeStringsAsAuthIdentity) - 86 55 SspiEncryptAuthIdentity (forwarded to SSPICLI.SspiEncryptAuthIdentity) - 87 56 SspiExcludePackage (forwarded to SSPICLI.SspiExcludePackage) - 88 57 SspiFreeAuthIdentity (forwarded to SSPICLI.SspiFreeAuthIdentity) - 89 58 SspiGetTargetHostName (forwarded to SSPICLI.SspiGetTargetHostName) - 90 59 SspiIsAuthIdentityEncrypted (forwarded to SSPICLI.SspiIsAuthIdentityEncrypted) - 91 5A SspiLocalFree (forwarded to SSPICLI.SspiLocalFree) - 92 5B SspiMarshalAuthIdentity (forwarded to SSPICLI.SspiMarshalAuthIdentity) - 93 5C SspiPrepareForCredRead (forwarded to SSPICLI.SspiPrepareForCredRead) - 94 5D SspiPrepareForCredWrite (forwarded to SSPICLI.SspiPrepareForCredWrite) - 95 5E SspiUnmarshalAuthIdentity (forwarded to SSPICLI.SspiUnmarshalAuthIdentity) - 96 5F SspiValidateAuthIdentity (forwarded to SSPICLI.SspiValidateAuthIdentity) - 97 60 SspiZeroAuthIdentity (forwarded to SSPICLI.SspiZeroAuthIdentity) - 98 61 000037D0 TranslateNameA - 99 62 00003950 TranslateNameW - 100 63 UnsealMessage (forwarded to SSPICLI.UnsealMessage) - 101 64 VerifySignature (forwarded to SSPICLI.VerifySignature) - - Summary - - 1000 .data - 1000 .didat - 1000 .pdata - 3000 .rdata - 1000 .reloc - 1000 .rsrc - 3000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\userenv.dll - -File Type: DLL - - Section contains the following exports for USERENV.dll - - 00000000 characteristics - 5F73FC88 time date stamp Tue Sep 29 20:33:28 2020 - 0.00 version - 104 ordinal base - 116 number of functions - 59 number of names - - ordinal hint RVA name - - 106 0 0000E2E0 AreThereVisibleLogoffScripts - 107 1 0000E2F0 AreThereVisibleShutdownScripts - 108 2 00001140 CreateAppContainerProfile - 109 3 00003270 CreateEnvironmentBlock - 110 4 0000ED60 CreateProfile - 111 5 000010F0 DeleteAppContainerProfile - 112 6 0000FD20 DeleteProfileA - 113 7 0000F220 DeleteProfileW - 114 8 000032C0 DeriveAppContainerSidFromAppContainerName - 115 9 000010A0 DeriveRestrictedAppContainerSidFromAppContainerSidAndRestrictedName - 116 A 00003240 DestroyEnvironmentBlock - 117 B 000031C0 DllCanUnloadNow - 118 C 00003090 DllGetClassObject - 119 D 000107E0 DllRegisterServer - 120 E 00010820 DllUnregisterServer - 121 F 000033E0 EnterCriticalPolicySection - 123 10 0000FE30 ExpandEnvironmentStringsForUserA - 124 11 00003190 ExpandEnvironmentStringsForUserW - 125 12 0000E300 ForceSyncFgPolicy - 126 13 0000E310 FreeGPOListA - 127 14 0000E320 FreeGPOListW - 128 15 0000E330 GenerateGPNotification - 129 16 0000FF50 GetAllUsersProfileDirectoryA - 130 17 000100B0 GetAllUsersProfileDirectoryW - 131 18 00002FE0 GetAppContainerFolderPath - 132 19 00003120 GetAppContainerRegistryLocation - 133 1A 0000E340 GetAppliedGPOListA - 134 1B 0000E350 GetAppliedGPOListW - 136 1C 000100D0 GetDefaultUserProfileDirectoryA - 138 1D 00010230 GetDefaultUserProfileDirectoryW - 140 1E 0000E360 GetGPOListA - 141 1F 0000E370 GetGPOListW - 142 20 0000E380 GetNextFgPolicyRefreshInfo - 143 21 0000E390 GetPreviousFgPolicyRefreshInfo - 144 22 00002810 GetProfileType - 145 23 00010250 GetProfilesDirectoryA - 146 24 000033A0 GetProfilesDirectoryW - 147 25 000103B0 GetUserProfileDirectoryA - 148 26 000013A0 GetUserProfileDirectoryW - 149 27 0000E3A0 HasPolicyForegroundProcessingCompleted - 150 28 000033D0 LeaveCriticalPolicySection - 151 29 0000F6B0 LoadProfileExtender - 152 2A 00010520 LoadUserProfileA - 153 2B 00001820 LoadUserProfileW - 154 2C 0000E800 ProcessGroupPolicyCompleted - 155 2D 0000E850 ProcessGroupPolicyCompletedEx - 156 2E 0000E3B0 RefreshPolicy - 157 2F 0000E3C0 RefreshPolicyEx - 158 30 00003380 RegisterGPNotification - 159 31 0000E8B0 RsopAccessCheckByType - 160 32 0000E970 RsopFileAccessCheck - 105 33 0000E2D0 RsopLoggingEnabled - 161 34 0000E9E0 RsopResetPolicySettingStatus - 162 35 0000EA30 RsopSetPolicySettingStatus - 163 36 00003390 UnloadProfileExtender - 164 37 000016D0 UnloadUserProfile - 165 38 000033C0 UnregisterGPNotification - 166 39 0000E3D0 WaitForMachinePolicyForegroundProcessing - 167 3A 0000E3E0 WaitForUserPolicyForegroundProcessing - 104 0000E6D0 [NONAME] - 122 0000E710 [NONAME] - 135 000113E0 [NONAME] - 137 0000E5B0 [NONAME] - 139 0000E610 [NONAME] - 175 000111C0 [NONAME] - 202 0000D5C0 [NONAME] - 203 0000D190 [NONAME] - 206 0000E580 [NONAME] - 207 000059C0 [NONAME] - 208 0000F7B0 [NONAME] - 209 00003690 [NONAME] - 210 0000EAA0 [NONAME] - 211 0000E7C0 [NONAME] - 212 00003300 [NONAME] - 213 00001100 [NONAME] - 214 000034D0 [NONAME] - 217 000015F0 [NONAME] - 218 0000E770 [NONAME] - 219 0000D840 [NONAME] - - Summary - - 1000 .data - 1000 .didat - 1000 .pdata - 7000 .rdata - 1000 .reloc - 3000 .rsrc - 11000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\version.dll - -File Type: DLL - - Section contains the following exports for VERSION.dll - - 00000000 characteristics - 559F3095 time date stamp Thu Jul 9 19:40:21 2015 - 0.00 version - 1 ordinal base - 17 number of functions - 17 number of names - - ordinal hint RVA name - - 1 0 00001DB0 GetFileVersionInfoA - 2 1 00002160 GetFileVersionInfoByHandle - 3 2 00001DC0 GetFileVersionInfoExA - 4 3 00001040 GetFileVersionInfoExW - 5 4 00001010 GetFileVersionInfoSizeA - 6 5 00001DD0 GetFileVersionInfoSizeExA - 7 6 00001050 GetFileVersionInfoSizeExW - 8 7 00001060 GetFileVersionInfoSizeW - 9 8 00001070 GetFileVersionInfoW - 10 9 00001DE0 VerFindFileA - 11 A 00002330 VerFindFileW - 12 B 00001DF0 VerInstallFileA - 13 C 00003020 VerInstallFileW - 14 D VerLanguageNameA (forwarded to KERNEL32.VerLanguageNameA) - 15 E VerLanguageNameW (forwarded to KERNEL32.VerLanguageNameW) - 16 F 00001020 VerQueryValueA - 17 10 00001030 VerQueryValueW - - Summary - - 1000 .data - 1000 .pdata - 2000 .rdata - 1000 .reloc - 1000 .rsrc - 3000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\winhttp.dll - -File Type: DLL - - Section contains the following exports for WINHTTP.dll - - 00000000 characteristics - 5C5A3D83 time date stamp Tue Feb 5 17:50:59 2019 - 0.00 version - 1 ordinal base - 54 number of functions - 54 number of names - - ordinal hint RVA name - - 1 0 00073EA0 DllCanUnloadNow - 2 1 00073EC0 DllGetClassObject - 3 2 00067080 Private1 - 4 3 000371B0 SvchostPushServiceGlobals - 5 4 00017360 WinHttpAddRequestHeaders - 6 5 000371C0 WinHttpAutoProxySvcMain - 7 6 00041C80 WinHttpCheckPlatform - 8 7 00015860 WinHttpCloseHandle - 9 8 00019550 WinHttpConnect - 10 9 00069590 WinHttpConnectionDeleteProxyInfo - 11 A 00069610 WinHttpConnectionFreeNameList - 12 B 00069660 WinHttpConnectionFreeProxyInfo - 13 C 000696B0 WinHttpConnectionFreeProxyList - 14 D 00069700 WinHttpConnectionGetNameList - 15 E 00069760 WinHttpConnectionGetProxyInfo - 16 F 000697C0 WinHttpConnectionGetProxyList - 17 10 00069820 WinHttpConnectionSetProxyInfo - 18 11 00007530 WinHttpCrackUrl - 19 12 00024CA0 WinHttpCreateProxyResolver - 20 13 00006CA0 WinHttpCreateUrl - 21 14 0006A4D0 WinHttpDetectAutoProxyConfigUrl - 22 15 000305A0 WinHttpFreeProxyResult - 23 16 00025DE0 WinHttpGetDefaultProxyConfiguration - 24 17 000255D0 WinHttpGetIEProxyConfigForCurrentUser - 25 18 00024330 WinHttpGetProxyForUrl - 26 19 00024ED0 WinHttpGetProxyForUrlEx - 27 1A 0006A730 WinHttpGetProxyResult - 28 1B 0006A8A0 WinHttpGetTunnelSocket - 29 1C 0001BC40 WinHttpOpen - 30 1D 00019C10 WinHttpOpenRequest - 31 1E 00068410 WinHttpProbeConnectivity - 32 1F 0006AE90 WinHttpQueryAuthSchemes - 33 20 000268D0 WinHttpQueryDataAvailable - 34 21 00016D90 WinHttpQueryHeaders - 35 22 00001900 WinHttpQueryOption - 36 23 00014200 WinHttpReadData - 37 24 00018C80 WinHttpReceiveResponse - 38 25 000352A0 WinHttpResetAutoProxy - 39 26 00068480 WinHttpSaveProxyCredentials - 40 27 00018330 WinHttpSendRequest - 41 28 0006B070 WinHttpSetCredentials - 42 29 00069090 WinHttpSetDefaultProxyConfiguration - 43 2A 00017A20 WinHttpSetOption - 44 2B 00017D90 WinHttpSetStatusCallback - 45 2C 0001C2F0 WinHttpSetTimeouts - 46 2D 000252C0 WinHttpTimeFromSystemTime - 47 2E 00033080 WinHttpTimeToSystemTime - 48 2F 00076B10 WinHttpWebSocketClose - 49 30 00076F30 WinHttpWebSocketCompleteUpgrade - 50 31 00076C10 WinHttpWebSocketQueryCloseStatus - 51 32 00077950 WinHttpWebSocketReceive - 52 33 000780C0 WinHttpWebSocketSend - 53 34 000784F0 WinHttpWebSocketShutdown - 54 35 00016180 WinHttpWriteData - - Summary - - 2000 .data - 1000 .didat - 9000 .pdata - 21000 .rdata - 1000 .reloc - 5000 .rsrc - 9C000 .text - 6000 .wpp_sf -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\winmm.dll - -File Type: DLL - - Section contains the following exports for WINMM.dll - - 00000000 characteristics - 5A978C09 time date stamp Wed Feb 28 21:13:45 2018 - 0.00 version - 2 ordinal base - 181 number of functions - 180 number of names - - ordinal hint RVA name - - 4 0 00005B60 CloseDriver - 5 1 00005B70 DefDriverProc - 6 2 00005B80 DriverCallback - 7 3 00005B90 DrvGetModuleHandle - 8 4 00005BA0 GetDriverModuleHandle - 9 5 00005BC0 OpenDriver - 10 6 00005BB0 PlaySound - 11 7 0000E930 PlaySoundA - 12 8 00001900 PlaySoundW - 13 9 00005BD0 SendDriverMessage - 14 A 0000FCF0 WOWAppExit - 15 B 00005BE0 auxGetDevCapsA - 16 C 00005BF0 auxGetDevCapsW - 17 D 00005C00 auxGetNumDevs - 18 E 00005C10 auxGetVolume - 19 F 00005C20 auxOutMessage - 20 10 00005C30 auxSetVolume - 21 11 00005C40 joyConfigChanged - 22 12 00005C50 joyGetDevCapsA - 23 13 00005C60 joyGetDevCapsW - 24 14 00005C70 joyGetNumDevs - 25 15 00005C90 joyGetPos - 26 16 00005C80 joyGetPosEx - 27 17 00005CA0 joyGetThreshold - 28 18 00005CB0 joyReleaseCapture - 29 19 00005CC0 joySetCapture - 30 1A 00005CD0 joySetThreshold - 31 1B 0000C200 mciDriverNotify - 32 1C 0000C220 mciDriverYield - 3 1D 00006EA0 mciExecute - 33 1E 0000A130 mciFreeCommandResource - 34 1F 0000C690 mciGetCreatorTask - 35 20 0000C700 mciGetDeviceIDA - 36 21 0000C750 mciGetDeviceIDFromElementIDA - 37 22 0000C7A0 mciGetDeviceIDFromElementIDW - 38 23 0000C8A0 mciGetDeviceIDW - 39 24 0000C8D0 mciGetDriverData - 40 25 00008370 mciGetErrorStringA - 41 26 00008490 mciGetErrorStringW - 42 27 0000C970 mciGetYieldProc - 43 28 0000A320 mciLoadCommandResource - 44 29 00008790 mciSendCommandA - 45 2A 00009020 mciSendCommandW - 46 2B 00009150 mciSendStringA - 47 2C 00009360 mciSendStringW - 48 2D 0000CF60 mciSetDriverData - 49 2E 0000D010 mciSetYieldProc - 50 2F 00005CE0 midiConnect - 51 30 00005CF0 midiDisconnect - 52 31 00005D00 midiInAddBuffer - 53 32 00005D10 midiInClose - 54 33 00005D20 midiInGetDevCapsA - 55 34 00005D30 midiInGetDevCapsW - 56 35 00005D40 midiInGetErrorTextA - 57 36 00005D50 midiInGetErrorTextW - 58 37 00005D60 midiInGetID - 59 38 00005D70 midiInGetNumDevs - 60 39 00005D80 midiInMessage - 61 3A 00005D90 midiInOpen - 62 3B 00005DA0 midiInPrepareHeader - 63 3C 00005DB0 midiInReset - 64 3D 00005DC0 midiInStart - 65 3E 00005DD0 midiInStop - 66 3F 00005DE0 midiInUnprepareHeader - 67 40 00005DF0 midiOutCacheDrumPatches - 68 41 00005E00 midiOutCachePatches - 69 42 00005E10 midiOutClose - 70 43 00005E20 midiOutGetDevCapsA - 71 44 00005E30 midiOutGetDevCapsW - 72 45 00005E40 midiOutGetErrorTextA - 73 46 00005E50 midiOutGetErrorTextW - 74 47 00005E60 midiOutGetID - 75 48 00005E70 midiOutGetNumDevs - 76 49 00005E80 midiOutGetVolume - 77 4A 00005E90 midiOutLongMsg - 78 4B 00005EA0 midiOutMessage - 79 4C 00005EB0 midiOutOpen - 80 4D 00005EC0 midiOutPrepareHeader - 81 4E 00005ED0 midiOutReset - 82 4F 00005EE0 midiOutSetVolume - 83 50 00005EF0 midiOutShortMsg - 84 51 00005F00 midiOutUnprepareHeader - 85 52 00005F10 midiStreamClose - 86 53 00005F20 midiStreamOpen - 87 54 00005F30 midiStreamOut - 88 55 00005F40 midiStreamPause - 89 56 00005F50 midiStreamPosition - 90 57 00005F60 midiStreamProperty - 91 58 00005F70 midiStreamRestart - 92 59 00005F80 midiStreamStop - 93 5A 00005F90 mixerClose - 94 5B 00005FA0 mixerGetControlDetailsA - 95 5C 00005FB0 mixerGetControlDetailsW - 96 5D 00005FC0 mixerGetDevCapsA - 97 5E 00005FD0 mixerGetDevCapsW - 98 5F 00005FE0 mixerGetID - 99 60 00005FF0 mixerGetLineControlsA - 100 61 00006000 mixerGetLineControlsW - 101 62 00006010 mixerGetLineInfoA - 102 63 00006020 mixerGetLineInfoW - 103 64 00006030 mixerGetNumDevs - 104 65 00006040 mixerMessage - 105 66 00006050 mixerOpen - 106 67 00006060 mixerSetControlDetails - 107 68 00006070 mmDrvInstall - 108 69 00006080 mmGetCurrentTask - 109 6A 00006090 mmTaskBlock - 110 6B 000060A0 mmTaskCreate - 111 6C 000060B0 mmTaskSignal - 112 6D 000060C0 mmTaskYield - 113 6E 000060D0 mmioAdvance - 114 6F 000060E0 mmioAscend - 115 70 000060F0 mmioClose - 116 71 00006100 mmioCreateChunk - 117 72 00006110 mmioDescend - 118 73 00006120 mmioFlush - 119 74 00006130 mmioGetInfo - 120 75 00006140 mmioInstallIOProcA - 121 76 00006150 mmioInstallIOProcW - 122 77 00006160 mmioOpenA - 123 78 00006170 mmioOpenW - 124 79 00006180 mmioRead - 125 7A 00006190 mmioRenameA - 126 7B 000061A0 mmioRenameW - 127 7C 000061B0 mmioSeek - 128 7D 000061C0 mmioSendMessage - 129 7E 000061D0 mmioSetBuffer - 130 7F 000061E0 mmioSetInfo - 131 80 000061F0 mmioStringToFOURCCA - 132 81 00006200 mmioStringToFOURCCW - 133 82 00006210 mmioWrite - 134 83 0000FEC0 mmsystemGetVersion - 135 84 0000EE00 sndPlaySoundA - 136 85 0000EE10 sndPlaySoundW - 137 86 00003070 timeBeginPeriod - 138 87 00003080 timeEndPeriod - 139 88 00006220 timeGetDevCaps - 140 89 00006230 timeGetSystemTime - 141 8A 000030A0 timeGetTime - 142 8B 00002F70 timeKillEvent - 143 8C 00002B80 timeSetEvent - 144 8D 00006240 waveInAddBuffer - 145 8E 00006250 waveInClose - 146 8F 00006260 waveInGetDevCapsA - 147 90 00006270 waveInGetDevCapsW - 148 91 00006280 waveInGetErrorTextA - 149 92 00006290 waveInGetErrorTextW - 150 93 000062A0 waveInGetID - 151 94 000062B0 waveInGetNumDevs - 152 95 000062C0 waveInGetPosition - 153 96 000062D0 waveInMessage - 154 97 000062E0 waveInOpen - 155 98 000062F0 waveInPrepareHeader - 156 99 00006300 waveInReset - 157 9A 00006310 waveInStart - 158 9B 00006320 waveInStop - 159 9C 00006330 waveInUnprepareHeader - 160 9D 00006340 waveOutBreakLoop - 161 9E 00006350 waveOutClose - 162 9F 00006360 waveOutGetDevCapsA - 163 A0 00006370 waveOutGetDevCapsW - 164 A1 00006380 waveOutGetErrorTextA - 165 A2 00006390 waveOutGetErrorTextW - 166 A3 000063A0 waveOutGetID - 167 A4 000063B0 waveOutGetNumDevs - 168 A5 000063C0 waveOutGetPitch - 169 A6 000063D0 waveOutGetPlaybackRate - 170 A7 000063E0 waveOutGetPosition - 171 A8 000063F0 waveOutGetVolume - 172 A9 00006400 waveOutMessage - 173 AA 00006410 waveOutOpen - 174 AB 00006420 waveOutPause - 175 AC 00006430 waveOutPrepareHeader - 176 AD 00006440 waveOutReset - 177 AE 00006450 waveOutRestart - 178 AF 00006460 waveOutSetPitch - 179 B0 00006470 waveOutSetPlaybackRate - 180 B1 00006480 waveOutSetVolume - 181 B2 00006490 waveOutUnprepareHeader - 182 B3 000064A0 waveOutWrite - 2 00005BB0 [NONAME] - - Summary - - 2000 .data - 1000 .didat - 1000 .guids - 1000 .pdata - 7000 .rdata - 1000 .reloc - 5000 .rsrc - 10000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\winspool.drv - -File Type: DLL - - Section contains the following exports for WINSPOOL.DRV - - 00000000 characteristics - 64098C2B time date stamp Wed Mar 8 23:35:07 2023 - 0.00 version - 100 ordinal base - 269 number of functions - 197 number of names - - ordinal hint RVA name - - 101 0 00018F90 ADVANCEDSETUPDIALOG - 116 1 00024150 AbortPrinter - 117 2 0001A2C0 AddFormA - 118 3 000243A0 AddFormW - 119 4 0001A390 AddJobA - 120 5 00024570 AddJobW - 121 6 0001A430 AddMonitorA - 122 7 00024990 AddMonitorW - 123 8 0001A610 AddPortA - 124 9 0001A6C0 AddPortExA - 125 A 00024BC0 AddPortExW - 126 B 00024CC0 AddPortW - 127 C 0001A8A0 AddPrintProcessorA - 128 D 00024D20 AddPrintProcessorW - 129 E 0001A9D0 AddPrintProvidorA - 130 F 00024E80 AddPrintProvidorW - 131 10 0001AAF0 AddPrinterA - 132 11 0001AC00 AddPrinterConnection2A - 133 12 00037B40 AddPrinterConnection2W - 134 13 0001AC20 AddPrinterConnectionA - 135 14 00037DF0 AddPrinterConnectionW - 136 15 0001AC80 AddPrinterDriverA - 137 16 0001ACE0 AddPrinterDriverExA - 138 17 00025000 AddPrinterDriverExW - 139 18 00025750 AddPrinterDriverW - 140 19 0000EE60 AddPrinterW - 141 1A 0001AF00 AdvancedDocumentPropertiesA - 142 1B 000257B0 AdvancedDocumentPropertiesW - 102 1C 00018F90 AdvancedSetupDialog - 143 1D 00003080 ClosePrinter - 144 1E 00025850 CloseSpoolFileHandle - 145 1F 00025990 CommitSpoolData - 146 20 0001B0E0 ConfigurePortA - 147 21 00025B30 ConfigurePortW - 148 22 00026210 ConnectToPrinterDlg - 103 23 00019540 ConvertAnsiDevModeToUnicodeDevmode - 104 24 00019600 ConvertUnicodeDevModeToAnsiDevmode - 149 25 000388C0 CorePrinterDriverInstalledA - 150 26 000389B0 CorePrinterDriverInstalledW - 151 27 000384A0 CreatePrintAsyncNotifyChannel - 152 28 00026490 CreatePrinterIC - 153 29 0001B9F0 DEVICECAPABILITIES - 105 2A 000198B0 DEVICEMODE - 154 2B 0001B190 DeleteFormA - 155 2C 00026640 DeleteFormW - 156 2D 00039880 DeleteJobNamedProperty - 157 2E 0001B200 DeleteMonitorA - 158 2F 000267F0 DeleteMonitorW - 159 30 0001B390 DeletePortA - 160 31 000269D0 DeletePortW - 161 32 0001B440 DeletePrintProcessorA - 162 33 00026A30 DeletePrintProcessorW - 163 34 0001B530 DeletePrintProvidorA - 164 35 00026B70 DeletePrintProvidorW - 165 36 0000EB60 DeletePrinter - 166 37 0001B610 DeletePrinterConnectionA - 167 38 00037E40 DeletePrinterConnectionW - 168 39 0001B670 DeletePrinterDataA - 169 3A 0001B6F0 DeletePrinterDataExA - 170 3B 00026C90 DeletePrinterDataExW - 171 3C 00026E20 DeletePrinterDataW - 172 3D 0001B7A0 DeletePrinterDriverA - 173 3E 0001B880 DeletePrinterDriverExA - 174 3F 00026FA0 DeletePrinterDriverExW - 175 40 00038B50 DeletePrinterDriverPackageA - 176 41 00038C30 DeletePrinterDriverPackageW - 177 42 00027100 DeletePrinterDriverW - 178 43 00027240 DeletePrinterIC - 179 44 0001B970 DeletePrinterKeyA - 180 45 00027350 DeletePrinterKeyW - 181 46 000274D0 DevQueryPrint - 182 47 00027620 DevQueryPrintEx - 183 48 0001B9F0 DeviceCapabilities - 184 49 0001B9F0 DeviceCapabilitiesA - 185 4A 00027760 DeviceCapabilitiesW - 106 4B 000198B0 DeviceMode - 186 4C 0002B900 DevicePropertySheets - 107 4D 00005EE0 DocumentEvent - 187 4E 0001BD00 DocumentPropertiesA - 188 4F 0000B780 DocumentPropertiesW - 189 50 0000BC70 DocumentPropertySheets - 190 51 0001CCF0 EXTDEVICEMODE - 191 52 000053F0 EndDocPrinter - 192 53 000057F0 EndPagePrinter - 193 54 0001BE80 EnumFormsA - 194 55 00005940 EnumFormsW - 195 56 00039A10 EnumJobNamedProperties - 196 57 0001BF70 EnumJobsA - 197 58 000063C0 EnumJobsW - 198 59 0001C100 EnumMonitorsA - 199 5A 000277D0 EnumMonitorsW - 200 5B 0001C2E0 EnumPortsA - 225 5C 0000ED10 EnumPortsW - 232 5D 0001C3F0 EnumPrintProcessorDatatypesA - 235 5E 00027AA0 EnumPrintProcessorDatatypesW - 236 5F 0001C510 EnumPrintProcessorsA - 237 60 00027C30 EnumPrintProcessorsW - 238 61 0001C630 EnumPrinterDataA - 239 62 0001C730 EnumPrinterDataExA - 240 63 00027DE0 EnumPrinterDataExW - 241 64 00028010 EnumPrinterDataW - 242 65 0001C840 EnumPrinterDriversA - 243 66 0000DFA0 EnumPrinterDriversW - 244 67 0001CA50 EnumPrinterKeyA - 245 68 00028260 EnumPrinterKeyW - 246 69 0001CB90 EnumPrintersA - 247 6A 0000B5E0 EnumPrintersW - 248 6B 0001CCF0 ExtDeviceMode - 249 6C 0000DAC0 FindClosePrinterChangeNotification - 263 6D 0000AD70 FindFirstPrinterChangeNotification - 264 6E 0000BA60 FindNextPrinterChangeNotification - 265 6F 000284A0 FlushPrinter - 266 70 00039CD0 FreePrintNamedPropertyArray - 267 71 00039DB0 FreePrintPropertyValue - 268 72 0000DD10 FreePrinterNotifyInfo - 269 73 00038DA0 GetCorePrinterDriversA - 270 74 00039000 GetCorePrinterDriversW - 201 75 0001D030 GetDefaultPrinterA - 203 76 0000D130 GetDefaultPrinterW - 271 77 0001D0E0 GetFormA - 272 78 0000A320 GetFormW - 273 79 0001D1C0 GetJobA - 274 7A 00039E40 GetJobNamedPropertyValue - 275 7B 00028850 GetJobW - 276 7C 000294F0 GetPrintExecutionData - 277 7D 000295A0 GetPrintOutputInfo - 278 7E 0001D2E0 GetPrintProcessorDirectoryA - 279 7F 00029980 GetPrintProcessorDirectoryW - 280 80 0001D3D0 GetPrinterA - 281 81 0001D530 GetPrinterDataA - 282 82 0001D860 GetPrinterDataExA - 283 83 0000E9B0 GetPrinterDataExW - 284 84 00003A50 GetPrinterDataW - 285 85 0001AC00 GetPrinterDriver2A - 286 86 00029B20 GetPrinterDriver2W - 287 87 00009FE0 GetPrinterDriverA - 288 88 0001DC10 GetPrinterDriverDirectoryA - 289 89 000115A0 GetPrinterDriverDirectoryW - 290 8A 000391E0 GetPrinterDriverPackagePathA - 291 8B 000393D0 GetPrinterDriverPackagePathW - 292 8C 0000C990 GetPrinterDriverW - 293 8D 0000C390 GetPrinterW - 294 8E 00029B30 GetSpoolFileHandle - 295 8F 00039590 InstallPrinterDriverFromPackageA - 296 90 000110B0 InstallPrinterDriverFromPackageW - 297 91 0001DD00 IsValidDevmodeA - 298 92 00009F50 IsValidDevmodeW - 299 93 0001AC00 OpenPrinter2A - 300 94 000032A0 OpenPrinter2W - 301 95 0001DD50 OpenPrinterA - 302 96 00003240 OpenPrinterW - 108 97 0003BA20 PerfClose - 109 98 0003BA30 PerfCollect - 110 99 0003BB70 PerfOpen - 303 9A 0002A380 PlayGdiScriptOnPrinterIC - 304 9B 0001DE60 PrinterMessageBoxA - 305 9C 0002A4B0 PrinterMessageBoxW - 306 9D 0002A4C0 PrinterProperties - 111 9E 00022570 QueryColorProfile - 112 9F 00022740 QueryRemoteFonts - 113 A0 00022870 QuerySpoolMode - 307 A1 00005B90 ReadPrinter - 308 A2 00007DC0 RegisterForPrintAsyncNotifications - 309 A3 00038700 ReportJobProcessingProgress - 310 A4 0001E050 ResetPrinterA - 311 A5 00006610 ResetPrinterW - 312 A6 0002A500 ScheduleJob - 313 A7 00005D40 SeekPrinter - 202 A8 0001E130 SetDefaultPrinterA - 204 A9 0000F970 SetDefaultPrinterW - 314 AA 0001E190 SetFormA - 315 AB 0002A8B0 SetFormW - 316 AC 0001E290 SetJobA - 317 AD 000051D0 SetJobNamedProperty - 318 AE 0002AA90 SetJobW - 319 AF 0001E410 SetPortA - 320 B0 0002AD50 SetPortW - 321 B1 0001E520 SetPrinterA - 322 B2 0001E790 SetPrinterDataA - 323 B3 0001E890 SetPrinterDataExA - 324 B4 0002AEC0 SetPrinterDataExW - 325 B5 0000E880 SetPrinterDataW - 326 B6 0000E270 SetPrinterW - 327 B7 0002B0A0 SplDriverUnloadComplete - 114 B8 000234E0 SpoolerDevQueryPrintW - 328 B9 000113D0 SpoolerPrinterEvent - 329 BA 0001E9D0 StartDocDlgA - 115 BB 00023860 StartDocDlgW - 330 BC 0001EBA0 StartDocPrinterA - 331 BD 00006AB0 StartDocPrinterW - 332 BE 00005610 StartPagePrinter - 333 BF 00007EF0 UnRegisterForPrintAsyncNotifications - 334 C0 000396C0 UploadPrinterDriverPackageA - 335 C1 00010DC0 UploadPrinterDriverPackageW - 336 C2 0002E070 WaitForPrinterChange - 337 C3 00006B50 WritePrinter - 339 C4 0002B620 XcvDataW - 100 00028430 [NONAME] - 205 0000A960 [NONAME] - 206 0001A500 [NONAME] - 207 00024AF0 [NONAME] - 208 0001B2E0 [NONAME] - 209 00026930 [NONAME] - 210 0001C210 [NONAME] - 211 00027980 [NONAME] - 212 0000C180 [NONAME] - 213 0000C270 [NONAME] - 214 0000C090 [NONAME] - 215 00011750 [NONAME] - 216 0001DF30 [NONAME] - 217 00031FC0 [NONAME] - 218 0000A7C0 [NONAME] - 219 00021EB0 [NONAME] - 220 00021C30 [NONAME] - 221 00021710 [NONAME] - 222 0000E170 [NONAME] - 223 0002C6F0 [NONAME] - 224 00028450 [NONAME] - 226 00013750 [NONAME] - 227 00036600 [NONAME] - 228 000365F0 [NONAME] - 229 00021840 [NONAME] - 230 00021D60 [NONAME] - 231 00021FE0 [NONAME] - 233 00019B70 [NONAME] - 234 00020840 [NONAME] - 250 000371B0 [NONAME] - 251 00007F60 [NONAME] - 252 00020100 [NONAME] - 253 00002CC0 [NONAME] - 254 00002C60 [NONAME] - 255 000202C0 [NONAME] - 256 0000AA00 [NONAME] - 257 0002EED0 [NONAME] - 258 0003B5E0 [NONAME] - 259 0003B720 [NONAME] - 260 0003B500 [NONAME] - 261 00029C90 [NONAME] - 262 0002A220 [NONAME] - 338 0002EC90 [NONAME] - 368 00038210 [NONAME] - - Summary - - 2000 .data - 1000 .didat - 5000 .pdata - 1E000 .rdata - 1000 .reloc - 16000 .rsrc - 48000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\wintrust.dll - -File Type: DLL - - Section contains the following exports for WINTRUST.dll - - 00000000 characteristics - 644C9A48 time date stamp Fri Apr 28 21:17:12 2023 - 0.00 version - 1 ordinal base - 148 number of functions - 148 number of names - - ordinal hint RVA name - - 12 0 0002D2B0 AddPersonalTrustDBPages - 13 1 0001ABA0 CatalogCompactHashDatabase - 1 2 00027180 ComputeFirstPageHash - 14 3 0002DD00 ConfigCiFinalPolicy - 15 4 00018AC0 CryptCATAdminAcquireContext - 16 5 00007020 CryptCATAdminAcquireContext2 - 17 6 00027E60 CryptCATAdminAddCatalog - 18 7 000070D0 CryptCATAdminCalcHashFromFileHandle - 19 8 00006FD0 CryptCATAdminCalcHashFromFileHandle2 - 20 9 00016C70 CryptCATAdminEnumCatalogFromHash - 21 A 00028150 CryptCATAdminPauseServiceForBackup - 22 B 00018750 CryptCATAdminReleaseCatalogContext - 23 C 00014220 CryptCATAdminReleaseContext - 24 D 00028190 CryptCATAdminRemoveCatalog - 25 E 000281E0 CryptCATAdminResolveCatalogPath - 26 F 00017D70 CryptCATAllocSortedMemberInfo - 27 10 00004520 CryptCATCDFClose - 28 11 00028490 CryptCATCDFEnumAttributes - 29 12 00003B40 CryptCATCDFEnumAttributesWithCDFTag - 30 13 000021B0 CryptCATCDFEnumCatAttributes - 31 14 000284B0 CryptCATCDFEnumMembers - 32 15 00028510 CryptCATCDFEnumMembersByCDFTag - 33 16 000023D0 CryptCATCDFEnumMembersByCDFTagEx - 34 17 00002B20 CryptCATCDFOpen - 35 18 00018680 CryptCATCatalogInfoFromContext - 36 19 0000E280 CryptCATClose - 37 1A 00015770 CryptCATEnumerateAttr - 38 1B 00015670 CryptCATEnumerateCatAttr - 39 1C 000278F0 CryptCATEnumerateMember - 40 1D 00018A40 CryptCATFreeSortedMemberInfo - 41 1E 000156E0 CryptCATGetAttrInfo - 42 1F 000155F0 CryptCATGetCatAttrInfo - 43 20 000279F0 CryptCATGetMemberInfo - 44 21 00014A80 CryptCATHandleFromStore - 45 22 00013B70 CryptCATOpen - 46 23 00027AE0 CryptCATPersistStore - 47 24 00027B20 CryptCATPutAttrInfo - 48 25 000038C0 CryptCATPutCatAttrInfo - 49 26 00003580 CryptCATPutMemberInfo - 50 27 00014A80 CryptCATStoreFromHandle - 2 28 000278B0 CryptCATVerifyMember - 51 29 0000F150 CryptSIPCreateIndirectData - 52 2A 0000EFF0 CryptSIPGetCaps - 3 2B 00029050 CryptSIPGetInfo - 4 2C 00029040 CryptSIPGetRegWorkingFlags - 53 2D 00029090 CryptSIPGetSealedDigest - 54 2E 0000E650 CryptSIPGetSignedDataMsg - 55 2F 00001FF0 CryptSIPPutSignedDataMsg - 56 30 00001F40 CryptSIPRemoveSignedDataMsg - 57 31 0000EE60 CryptSIPVerifyIndirectData - 58 32 00023160 DllRegisterServer - 59 33 000231C0 DllUnregisterServer - 60 34 000151A0 DriverCleanupPolicy - 61 35 00014D60 DriverFinalPolicy - 62 36 000152A0 DriverInitializePolicy - 63 37 0002F900 FindCertsByIssuer - 5 38 0002C530 GenericChainCertificateTrust - 6 39 0002C860 GenericChainFinalProv - 64 3A 0002E310 GetAuthenticodeSha256Hash - 7 3B 00006A00 HTTPSCertificateTrust - 65 3C 000068E0 HTTPSFinalProv - 66 3D 00028740 IsCatalogFile - 67 3E 00013D90 MsCatConstructHashTag - 68 3F 00028950 MsCatFreeHashTag - 69 40 0002FCC0 OfficeCleanupPolicy - 70 41 0002FCC0 OfficeInitializePolicy - 71 42 0002D2D0 OpenPersonalTrustDBDialog - 72 43 0002D2E0 OpenPersonalTrustDBDialogEx - 73 44 0000CA60 SoftpubAuthenticode - 74 45 000149D0 SoftpubCheckCert - 75 46 0000B070 SoftpubCleanup - 8 47 0002D020 SoftpubDefCertInit - 76 48 0002FF70 SoftpubDllRegisterServer - 77 49 000301E0 SoftpubDllUnregisterServer - 78 4A 00030DE0 SoftpubDumpStructure - 9 4B 0002D120 SoftpubFreeDefUsageCallData - 79 4C 0000AEE0 SoftpubInitialize - 10 4D 0002D170 SoftpubLoadDefUsageCallData - 80 4E 0000A2B0 SoftpubLoadMessage - 81 4F 00009C80 SoftpubLoadSignature - 82 50 0000D7F0 TrustDecode - 83 51 000254E0 TrustFindIssuerCertificate - 84 52 000256D0 TrustFreeDecode - 85 53 00025700 TrustIsCertificateSelfSigned - 86 54 00025780 TrustOpenStores - 87 55 00005E00 WTGetSignatureInfo - 88 56 00026160 WTHelperCertCheckValidSignature - 11 57 00022E40 WTHelperCertFindIssuerCertificate - 89 58 00022E80 WTHelperCertIsSelfSigned - 90 59 00026180 WTHelperCheckCertUsage - 91 5A 000262C0 WTHelperGetAgencyInfo - 92 5B 000263A0 WTHelperGetFileHandle - 93 5C 00025F30 WTHelperGetFileHash - 94 5D 000263D0 WTHelperGetFileName - 95 5E 00026460 WTHelperGetKnownUsages - 96 5F 00006DF0 WTHelperGetProvCertFromChain - 97 60 000154A0 WTHelperGetProvPrivateDataFromChain - 98 61 0000DC00 WTHelperGetProvSignerFromChain - 99 62 00026500 WTHelperIsChainedToMicrosoft - 100 63 00026680 WTHelperIsChainedToMicrosoftFromStateData - 101 64 00026750 WTHelperIsInRootStore - 102 65 00026850 WTHelperOpenKnownStores - 103 66 00014A80 WTHelperProvDataFromStateData - 104 67 00017FC0 WVTAsn1CatMemberInfo2Decode - 105 68 000040B0 WVTAsn1CatMemberInfo2Encode - 106 69 000237E0 WVTAsn1CatMemberInfoDecode - 107 6A 000238B0 WVTAsn1CatMemberInfoEncode - 108 6B 00018070 WVTAsn1CatNameValueDecode - 109 6C 00003D50 WVTAsn1CatNameValueEncode - 110 6D 00023910 WVTAsn1IntentToSealAttributeDecode - 111 6E 000239B0 WVTAsn1IntentToSealAttributeEncode - 112 6F 000239F0 WVTAsn1SealingSignatureAttributeDecode - 113 70 00023AD0 WVTAsn1SealingSignatureAttributeEncode - 114 71 00023B90 WVTAsn1SealingTimestampAttributeDecode - 115 72 00023C70 WVTAsn1SealingTimestampAttributeEncode - 116 73 00023CD0 WVTAsn1SpcFinancialCriteriaInfoDecode - 117 74 00023D80 WVTAsn1SpcFinancialCriteriaInfoEncode - 118 75 00012670 WVTAsn1SpcIndirectDataContentDecode - 119 76 00003DC0 WVTAsn1SpcIndirectDataContentEncode - 120 77 00023DC0 WVTAsn1SpcLinkDecode - 121 78 00004150 WVTAsn1SpcLinkEncode - 122 79 00023EA0 WVTAsn1SpcMinimalCriteriaInfoDecode - 123 7A 00023F50 WVTAsn1SpcMinimalCriteriaInfoEncode - 124 7B 000134F0 WVTAsn1SpcPeImageDataDecode - 125 7C 00012B40 WVTAsn1SpcPeImageDataEncode - 126 7D 00005450 WVTAsn1SpcSigInfoDecode - 127 7E 00004020 WVTAsn1SpcSigInfoEncode - 128 7F 00023F80 WVTAsn1SpcSpAgencyInfoDecode - 129 80 00024210 WVTAsn1SpcSpAgencyInfoEncode - 130 81 00013220 WVTAsn1SpcSpOpusInfoDecode - 131 82 00003F60 WVTAsn1SpcSpOpusInfoEncode - 132 83 000243C0 WVTAsn1SpcStatementTypeDecode - 133 84 00003EA0 WVTAsn1SpcStatementTypeEncode - 134 85 000089C0 WinVerifyTrust - 135 86 00026020 WinVerifyTrustEx - 136 87 000244F0 WintrustAddActionID - 137 88 000258C0 WintrustAddDefaultForUsage - 138 89 0000C0B0 WintrustCertificateTrust - 139 8A 00025B40 WintrustGetDefaultForUsage - 140 8B 00024A60 WintrustGetRegPolicyFlags - 141 8C 00018240 WintrustLoadFunctionPointers - 142 8D 000246D0 WintrustRemoveActionID - 143 8E 00029ED0 WintrustSetDefaultIncludePEPageHashes - 144 8F 00024B00 WintrustSetRegPolicyFlags - 145 90 0000B070 mscat32DllRegisterServer - 146 91 0000B070 mscat32DllUnregisterServer - 147 92 00029180 mssip32DllRegisterServer - 148 93 000293A0 mssip32DllUnregisterServer - - Summary - - 1000 .data - 1000 .didat - 4000 .pdata - 13000 .rdata - 1000 .reloc - 2000 .rsrc - 37000 .text -Microsoft (R) COFF/PE Dumper Version 14.36.32538.0 -Copyright (C) Microsoft Corporation. All rights reserved. - - -Dump of file 10.0.10240\ws2_32.dll - -File Type: DLL - - Section contains the following exports for WS2_32.dll - - 00000000 characteristics - 57490AC3 time date stamp Fri May 27 20:04:35 2016 - 0.00 version - 1 ordinal base - 500 number of functions - 195 number of names - - ordinal hint RVA name - - 25 0 00001A60 FreeAddrInfoEx - 26 1 00001A60 FreeAddrInfoExW - 27 2 00014AA0 FreeAddrInfoW - 28 3 00025250 GetAddrInfoExA - 29 4 000167C0 GetAddrInfoExCancel - 30 5 00014B20 GetAddrInfoExOverlappedResult - 31 6 00013590 GetAddrInfoExW - 32 7 00010350 GetAddrInfoW - 33 8 00017B00 GetHostNameW - 34 9 00012F20 GetNameInfoW - 35 A 000179F0 InetNtopW - 36 B 00024640 InetPtonW - 37 C 00025430 SetAddrInfoExA - 38 D 000255B0 SetAddrInfoExW - 500 E 00018450 WEP - 39 F 00037070 WPUCompleteOverlappedRequest - 40 10 000173D0 WPUGetProviderPathEx - 41 11 00014140 WSAAccept - 42 12 00014560 WSAAddressToStringA - 43 13 00012400 WSAAddressToStringW - 44 14 00039A60 WSAAdvertiseProvider - 102 15 00029E40 WSAAsyncGetHostByAddr - 103 16 00029F70 WSAAsyncGetHostByName - 105 17 0002A0C0 WSAAsyncGetProtoByName - 104 18 0002A210 WSAAsyncGetProtoByNumber - 107 19 0002A310 WSAAsyncGetServByName - 106 1A 0002A470 WSAAsyncGetServByPort - 101 1B 00015350 WSAAsyncSelect - 108 1C 0002A580 WSACancelAsyncRequest - 113 1D 000285E0 WSACancelBlockingCall - 116 1E 000142E0 WSACleanup - 45 1F 00001740 WSACloseEvent - 46 20 00015E70 WSAConnect - 47 21 00035880 WSAConnectByList - 48 22 00036170 WSAConnectByNameA - 49 23 000363B0 WSAConnectByNameW - 50 24 00001790 WSACreateEvent - 58 25 000292A0 WSADuplicateSocketA - 59 26 00029330 WSADuplicateSocketW - 60 27 000321E0 WSAEnumNameSpaceProvidersA - 61 28 00032280 WSAEnumNameSpaceProvidersExA - 62 29 00032320 WSAEnumNameSpaceProvidersExW - 63 2A 00003FB0 WSAEnumNameSpaceProvidersW - 64 2B 00011B60 WSAEnumNetworkEvents - 65 2C 0003D8C0 WSAEnumProtocolsA - 66 2D 00016950 WSAEnumProtocolsW - 67 2E 00011970 WSAEventSelect - 111 2F 00001730 WSAGetLastError - 68 30 00014440 WSAGetOverlappedResult - 69 31 00030E10 WSAGetQOSByName - 70 32 000323C0 WSAGetServiceClassInfoA - 71 33 000324B0 WSAGetServiceClassInfoW - 72 34 00032640 WSAGetServiceClassNameByClassIdA - 73 35 00032950 WSAGetServiceClassNameByClassIdW - 74 36 000246D0 WSAHtonl - 75 37 00024800 WSAHtons - 76 38 00032C30 WSAInstallServiceClassA - 77 39 00032CF0 WSAInstallServiceClassW - 78 3A 000113F0 WSAIoctl - 114 3B 00028670 WSAIsBlocking - 79 3C 00036E00 WSAJoinLeaf - 80 3D 00032E50 WSALookupServiceBeginA - 81 3E 0000BB50 WSALookupServiceBeginW - 82 3F 0000B720 WSALookupServiceEnd - 83 40 00032F60 WSALookupServiceNextA - 84 41 0000C9B0 WSALookupServiceNextW - 85 42 00033180 WSANSPIoctl - 86 43 00024920 WSANtohl - 87 44 00024A50 WSANtohs - 88 45 00033EE0 WSAPoll - 89 46 00039C00 WSAProviderCompleteAsyncCall - 90 47 00016AA0 WSAProviderConfigChange - 91 48 0000FDE0 WSARecv - 92 49 00031BC0 WSARecvDisconnect - 93 4A 00017760 WSARecvFrom - 94 4B 000332B0 WSARemoveServiceClass - 95 4C 00016380 WSAResetEvent - 96 4D 0000F6E0 WSASend - 97 4E 000341C0 WSASendDisconnect - 98 4F 00011CE0 WSASendMsg - 99 50 00034290 WSASendTo - 109 51 00028710 WSASetBlockingHook - 100 52 00016A50 WSASetEvent - 112 53 000025F0 WSASetLastError - 117 54 00033410 WSASetServiceA - 118 55 000334D0 WSASetServiceW - 119 56 000168D0 WSASocketA - 120 57 00010C50 WSASocketW - 115 58 000035B0 WSAStartup - 121 59 000150A0 WSAStringToAddressA - 122 5A 00014CD0 WSAStringToAddressW - 123 5B 00039DB0 WSAUnadvertiseProvider - 110 5C 000287D0 WSAUnhookBlockingHook - 124 5D 00001A50 WSAWaitForMultipleEvents - 24 5E 00037340 WSApSetPostRoutine - 125 5F 0003DD60 WSCDeinstallProvider - 126 60 0003FCC0 WSCDeinstallProvider32 - 127 61 0003DD90 WSCDeinstallProviderEx - 128 62 0003FED0 WSCEnableNSProvider - 129 63 00040750 WSCEnableNSProvider32 - 130 64 000336A0 WSCEnumNameSpaceProviders32 - 131 65 000337F0 WSCEnumNameSpaceProvidersEx32 - 132 66 00002B30 WSCEnumProtocols - 133 67 0003DA70 WSCEnumProtocols32 - 134 68 00003050 WSCEnumProtocolsEx - 135 69 0003DFE0 WSCGetApplicationCategory - 136 6A 0003E030 WSCGetApplicationCategoryEx - 137 6B 0003E3A0 WSCGetProviderInfo - 138 6C 0003FCF0 WSCGetProviderInfo32 - 139 6D 00017D40 WSCGetProviderPath - 140 6E 0003DAA0 WSCGetProviderPath32 - 141 6F 00040040 WSCInstallNameSpace - 142 70 000408B0 WSCInstallNameSpace32 - 143 71 00040090 WSCInstallNameSpaceEx - 144 72 000400E0 WSCInstallNameSpaceEx2 - 145 73 00040900 WSCInstallNameSpaceEx32 - 146 74 0003E660 WSCInstallProvider - 147 75 0003FD30 WSCInstallProvider64_32 - 148 76 0002D470 WSCInstallProviderAndChains64_32 - 149 77 0003E6B0 WSCInstallProviderEx - 150 78 0003F0C0 WSCSetApplicationCategory - 152 79 0003F120 WSCSetApplicationCategoryEx - 153 7A 0003F5C0 WSCSetProviderInfo - 154 7B 0003FD80 WSCSetProviderInfo32 - 155 7C 00040390 WSCUnInstallNameSpace - 156 7D 00040950 WSCUnInstallNameSpace32 - 157 7E 000403C0 WSCUnInstallNameSpaceEx2 - 158 7F 0003F850 WSCUpdateProvider - 159 80 0003FDC0 WSCUpdateProvider32 - 160 81 0003F890 WSCUpdateProviderEx - 161 82 00040570 WSCWriteNameSpaceOrder - 162 83 00040980 WSCWriteNameSpaceOrder32 - 163 84 0003FA70 WSCWriteProviderOrder - 164 85 0003FE00 WSCWriteProviderOrder32 - 165 86 0003FAA0 WSCWriteProviderOrderEx - 166 87 00002810 WahCloseApcHelper - 167 88 0003C150 WahCloseHandleHelper - 168 89 0003CD20 WahCloseNotificationHandleHelper - 169 8A 0003C1A0 WahCloseSocketHandle - 170 8B 00012B50 WahCloseThread - 171 8C 0003C210 WahCompleteRequest - 172 8D 000032D0 WahCreateHandleContextTable - 173 8E 00016D30 WahCreateNotificationHandle - 174 8F 0003C300 WahCreateSocketHandle - 175 90 00015E00 WahDestroyHandleContextTable - 176 91 0003C4F0 WahDisableNonIFSHandleSupport - 177 92 0003C5E0 WahEnableNonIFSHandleSupport - 178 93 00001960 WahEnumerateHandleContexts - 179 94 00015690 WahInsertHandleContext - 180 95 0003CD60 WahNotifyAllProcesses - 181 96 00003570 WahOpenApcHelper - 182 97 00012AC0 WahOpenCurrentThread - 183 98 0003C7D0 WahOpenHandleHelper - 184 99 00016A60 WahOpenNotificationHandleHelper - 185 9A 0003B8B0 WahQueueUserApc - 186 9B 00001300 WahReferenceContextByHandle - 187 9C 00001380 WahRemoveHandleContext - 188 9D 00016C00 WahWaitForNotification - 189 9E 0003CFA0 WahWriteLSPEvent - 151 9F 00001030 __WSAFDIsSet - 1 A0 000142C0 accept - 2 A1 00012130 bind - 3 A2 0000F2B0 closesocket - 4 A3 00011E50 connect - 190 A4 00014AA0 freeaddrinfo - 191 A5 00012BC0 getaddrinfo - 51 A6 0002A620 gethostbyaddr - 52 A7 0002A7E0 gethostbyname - 57 A8 0002A9B0 gethostname - 192 A9 000130D0 getnameinfo - 5 AA 000149C0 getpeername - 53 AB 000297C0 getprotobyname - 54 AC 00029930 getprotobynumber - 55 AD 0002AB80 getservbyname - 56 AE 0002ADA0 getservbyport - 6 AF 00012660 getsockname - 7 B0 00001170 getsockopt - 8 B1 00001700 htonl - 9 B2 00001770 htons - 11 B3 00002100 inet_addr - 12 B4 00001CF0 inet_ntoa - 193 B5 00024B70 inet_ntop - 194 B6 00024BF0 inet_pton - 10 B7 000116B0 ioctlsocket - 13 B8 00014FF0 listen - 14 B9 00001700 ntohl - 15 BA 00001770 ntohs - 16 BB 0000F940 recv - 17 BC 00015F80 recvfrom - 18 BD 00010040 select - 19 BE 0000F4B0 send - 20 BF 00012280 sendto - 21 C0 0000FBA0 setsockopt - 22 C1 00013280 shutdown - 23 C2 00010B00 socket - - Summary - - 1000 .data - 1000 .didat - 4000 .pdata - D000 .rdata - 1000 .reloc - 11000 .rsrc - 43000 .text
diff --git a/chrome/updater/app/server/win/com_classes_legacy.cc b/chrome/updater/app/server/win/com_classes_legacy.cc index c9ca706..a2e95fd5 100644 --- a/chrome/updater/app/server/win/com_classes_legacy.cc +++ b/chrome/updater/app/server/win/com_classes_legacy.cc
@@ -72,28 +72,23 @@ return {}; } -template <typename T> -std::string GetStringFromValue(const T& value) { +std::string GetStringFromValue(const std::string& value) { return value; } -template <> std::string GetStringFromValue(const int& value) { return base::NumberToString(value); } -template <> std::string GetStringFromValue(const bool& value) { return value ? "true" : "false"; } -template <> std::string GetStringFromValue(const updater::UpdatesSuppressedTimes& value) { return base::StringPrintf("%d, %d, %d", value.start_hour_, value.start_minute_, value.duration_minute_); } -template <> std::string GetStringFromValue(const std::vector<std::string>& value) { return base::JoinString(value, ";"); }
diff --git a/chrome/updater/test/integration_tests.cc b/chrome/updater/test/integration_tests.cc index bc83769..9f852d2 100644 --- a/chrome/updater/test/integration_tests.cc +++ b/chrome/updater/test/integration_tests.cc
@@ -1444,13 +1444,7 @@ #endif #endif -// TODO(crbug.com/1488344): Re-enable this test. -#if BUILDFLAG(IS_WIN) && defined(ADDRESS_SANITIZER) -#define MAYBE_UpdateServiceStress DISABLED_UpdateServiceStress -#else -#define MAYBE_UpdateServiceStress UpdateServiceStress -#endif // BUILDFLAG(IS_WIN) && defined(ADDRESS_SANITIZER) -TEST_F(IntegrationTest, MAYBE_UpdateServiceStress) { +TEST_F(IntegrationTest, UpdateServiceStress) { ASSERT_NO_FATAL_FAILURE(Install()); ASSERT_NO_FATAL_FAILURE(ExpectInstalled()); ASSERT_NO_FATAL_FAILURE(StressUpdateService());
diff --git a/clank b/clank index 5c5f938..cb7ce7f 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 5c5f938d64e779438a837a026ff3234e7050b392 +Subproject commit cb7ce7fd96470a676aa91a7f942323c10f78da2f
diff --git a/components/BUILD.gn b/components/BUILD.gn index e971632..3fb7396 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn
@@ -410,6 +410,7 @@ "//components/captive_portal/content:unit_tests", "//components/cast_receiver:unit_tests", "//components/cast_streaming:unit_tests", + "//components/certificate_transparency:unit_tests", "//components/content_capture/browser:unit_tests", "//components/content_relationship_verification:unit_tests", "//components/contextual_search/core/browser:unit_tests", @@ -521,7 +522,6 @@ deps += [ "//components/background_sync:unit_tests", "//components/blocked_content:unit_tests", - "//components/certificate_transparency:unit_tests", "//components/content_settings/browser:unit_tests", "//components/content_settings/browser/ui:unit_tests", "//components/feed/core/v2:core_unit_tests",
diff --git a/components/certificate_transparency/BUILD.gn b/components/certificate_transparency/BUILD.gn index e8c5d80..eb1e1588 100644 --- a/components/certificate_transparency/BUILD.gn +++ b/components/certificate_transparency/BUILD.gn
@@ -58,4 +58,8 @@ "//testing/gmock", "//testing/gtest", ] + + if (is_ios) { + deps += [ "//net:net_test_bundle_data" ] + } }
diff --git a/components/color/DEPS b/components/color/DEPS index 6cda140..76ade98a 100644 --- a/components/color/DEPS +++ b/components/color/DEPS
@@ -1,5 +1,5 @@ include_rules = [ - "+components/eye_dropper", + "+components/eye_dropper/color_mixer.h", "+third_party/skia/include", "+ui/color", ]
diff --git a/components/exo/shell_surface_base.cc b/components/exo/shell_surface_base.cc index 90b6917..c8b3b3c 100644 --- a/components/exo/shell_surface_base.cc +++ b/components/exo/shell_surface_base.cc
@@ -1469,7 +1469,7 @@ if (window == parent_) SetParentInternal(nullptr); window->RemoveObserver(this); - if (widget_ && window == widget_->GetNativeWindow() && root_surface()) { + if (IsShellSurfaceWindow(window) && root_surface()) { root_surface()->ThrottleFrameRate(false); } } @@ -1477,19 +1477,21 @@ void ShellSurfaceBase::OnWindowPropertyChanged(aura::Window* window, const void* key, intptr_t old_value) { - if (IsShellSurfaceWindow(window)) { - if (key == aura::client::kSkipImeProcessing) { - SetSkipImeProcessingToDescendentSurfaces( - window, window->GetProperty(aura::client::kSkipImeProcessing)); - } else if (key == chromeos::kFrameRestoreLookKey) { - root_surface()->SetFrameLocked( - window->GetProperty(chromeos::kFrameRestoreLookKey)); - } else if (key == aura::client::kWindowWorkspaceKey) { - root_surface()->OnDeskChanged(GetWindowDeskStateChanged(window)); - } else if (key == ash::kFrameRateThrottleKey) { - root_surface()->ThrottleFrameRate( - window->GetProperty(ash::kFrameRateThrottleKey)); - } + if (!IsShellSurfaceWindow(window) || !root_surface()) { + return; + } + + if (key == aura::client::kSkipImeProcessing) { + SetSkipImeProcessingToDescendentSurfaces( + window, window->GetProperty(aura::client::kSkipImeProcessing)); + } else if (key == chromeos::kFrameRestoreLookKey) { + root_surface()->SetFrameLocked( + window->GetProperty(chromeos::kFrameRestoreLookKey)); + } else if (key == aura::client::kWindowWorkspaceKey) { + root_surface()->OnDeskChanged(GetWindowDeskStateChanged(window)); + } else if (key == ash::kFrameRateThrottleKey) { + root_surface()->ThrottleFrameRate( + window->GetProperty(ash::kFrameRateThrottleKey)); } } @@ -1502,7 +1504,7 @@ void ShellSurfaceBase::OnWindowParentChanged(aura::Window* window, aura::Window* parent) { - if (!IsShellSurfaceWindow(window)) { + if (!IsShellSurfaceWindow(window) || !root_surface()) { return; } root_surface()->OnDeskChanged(GetWindowDeskStateChanged(window));
diff --git a/components/exo/shell_surface_unittest.cc b/components/exo/shell_surface_unittest.cc index 9ff6f47..6725c56 100644 --- a/components/exo/shell_surface_unittest.cc +++ b/components/exo/shell_surface_unittest.cc
@@ -7,12 +7,14 @@ #include <sstream> #include <vector> -#include "ash/constants/ash_constants.h" +#include "ash/constants/app_types.h" #include "ash/frame/non_client_frame_view_ash.h" #include "ash/public/cpp/test/shell_test_api.h" #include "ash/public/cpp/window_properties.h" #include "ash/shell.h" #include "ash/test/test_widget_builder.h" +#include "ash/wm/overview/overview_controller.h" +#include "ash/wm/overview/overview_test_util.h" #include "ash/wm/resize_shadow.h" #include "ash/wm/resize_shadow_controller.h" #include "ash/wm/window_state.h" @@ -4070,4 +4072,36 @@ popup_shell_surface.reset(); } +TEST_F(ShellSurfaceTest, WindowPropertyChangedNotificationWithoutRootSurface) { + // Test OnWindowPropertyChanged() notification on a ShellSurface, whose root + // surface has gone. + + auto* overview_controller = ash::Shell::Get()->overview_controller(); + + std::unique_ptr<ShellSurface> shell_surface = + test::ShellSurfaceBuilder({256, 256}) + .SetAppType(ash::AppType::LACROS) + .BuildShellSurface(); + + std::unique_ptr<ShellSurface> shell_surface1 = + test::ShellSurfaceBuilder({256, 256}) + .SetAppType(ash::AppType::LACROS) + .BuildShellSurface(); + + overview_controller->StartOverview(ash::OverviewStartAction::kTests); + ash::WaitForOverviewEnterAnimation(); + + test::ShellSurfaceBuilder::DestroyRootSurface(shell_surface1.get()); + + // Destroying `shell_surface` will close its aura window, causing update of + // frame throttling in the overview mode for the remaining Lacros window(s). + // In this case, the remaining window is associated with `shell_surface1`. It + // receives OnWindowPropertyChanged() notification with + // ash::kFrameRateThrottleKey key. The root surface of `shell_surface1` has + // gone at this point. Verify that it doesn't cause crash. + shell_surface.reset(); + + overview_controller->EndOverview(ash::OverviewEndAction::kTests); +} + } // namespace exo
diff --git a/components/exo/test/shell_surface_builder.cc b/components/exo/test/shell_surface_builder.cc index d6735211..1ae4a1f 100644 --- a/components/exo/test/shell_surface_builder.cc +++ b/components/exo/test/shell_surface_builder.cc
@@ -229,6 +229,12 @@ return *this; } +ShellSurfaceBuilder& ShellSurfaceBuilder::SetAppType(ash::AppType app_type) { + DCHECK(!built_); + app_type_ = app_type; + return *this; +} + ShellSurfaceBuilder& ShellSurfaceBuilder::SetParent(ShellSurface* parent) { DCHECK(!built_); parent_shell_surface_ = parent; @@ -378,6 +384,11 @@ SetCommonPropertiesAndCommitIfNecessary(shell_surface.get()); + // The widget becomes available after the first commit. + if (shell_surface->GetWidget() && app_type_ != ash::AppType::NON_APP) { + shell_surface->GetWidget()->GetNativeWindow()->SetProperty( + aura::client::kAppType, static_cast<int>(app_type_)); + } return shell_surface; } @@ -444,6 +455,9 @@ // The widget becomes available after the first commit. if (shell_surface->GetWidget()) { + CHECK(app_type_ == ash::AppType::NON_APP || + app_type_ == ash::AppType::ARC_APP) + << "Incompatible app type is set for ClientControlledShellSurface."; shell_surface->GetWidget()->GetNativeWindow()->SetProperty( aura::client::kAppType, static_cast<int>(ash::AppType::ARC_APP)); }
diff --git a/components/exo/test/shell_surface_builder.h b/components/exo/test/shell_surface_builder.h index 16d0026d..56cfcd1 100644 --- a/components/exo/test/shell_surface_builder.h +++ b/components/exo/test/shell_surface_builder.h
@@ -7,12 +7,12 @@ #include <memory> +#include "ash/constants/app_types.h" #include "base/memory/raw_ptr.h" #include "cc/base/region.h" #include "components/exo/client_controlled_shell_surface.h" #include "components/exo/shell_surface.h" #include "third_party/abseil-cpp/absl/types/optional.h" -#include "ui/base/class_property.h" #include "ui/gfx/buffer_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" @@ -57,6 +57,7 @@ ShellSurfaceBuilder& SetDisableMovement(); ShellSurfaceBuilder& SetCentered(); ShellSurfaceBuilder& SetSecurityDelegate(SecurityDelegate* security_delegate); + ShellSurfaceBuilder& SetAppType(ash::AppType app_type); // Sets parameters defined in ShellSurface. ShellSurfaceBuilder& SetParent(ShellSurface* shell_surface); @@ -103,6 +104,7 @@ absl::optional<cc::Region> input_region_; absl::optional<SurfaceFrameType> type_; raw_ptr<SecurityDelegate, ExperimentalAsh> security_delegate_ = nullptr; + ash::AppType app_type_ = ash::AppType::NON_APP; std::string application_id_; bool use_system_modal_container_ = false; bool system_modal_ = false;
diff --git a/components/eye_dropper/DEPS b/components/eye_dropper/DEPS index 226aada8..91db99c1 100644 --- a/components/eye_dropper/DEPS +++ b/components/eye_dropper/DEPS
@@ -1,5 +1,5 @@ include_rules = [ - "+components/color", + "+components/color/color_id.h", "+content/public/browser", "+third_party/skia", "+third_party/webrtc",
diff --git a/components/feature_engagement/public/feature_configurations.cc b/components/feature_engagement/public/feature_configurations.cc index c3ba666..c398206faf 100644 --- a/components/feature_engagement/public/feature_configurations.cc +++ b/components/feature_engagement/public/feature_configurations.cc
@@ -133,6 +133,20 @@ return config; } + if (kIPHGMCLocalMediaCastingFeature.name == feature->name) { + absl::optional<FeatureConfig> config = FeatureConfig(); + config->valid = true; + config->availability = Comparator(ANY, 0); + config->session_rate = Comparator(ANY, 0); + config->session_rate_impact.type = SessionRateImpact::Type::NONE; + config->trigger = EventConfig("gmc_local_media_cast_iph_trigger", + Comparator(EQUAL, 0), 180, 180); + config->used = EventConfig("media_route_started_from_gmc", + Comparator(EQUAL, 0), 180, 180); + + return config; + } + if (kIPHDesktopSharedHighlightingFeature.name == feature->name) { // A config that allows the shared highlighting desktop IPH to be shown // when a user receives a highlight:
diff --git a/components/feature_engagement/public/feature_constants.cc b/components/feature_engagement/public/feature_constants.cc index daaccbad..81932be 100644 --- a/components/feature_engagement/public/feature_constants.cc +++ b/components/feature_engagement/public/feature_constants.cc
@@ -58,6 +58,9 @@ BASE_FEATURE(kIPHGMCCastStartStopFeature, "IPH_GMCCastStartStop", base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kIPHGMCLocalMediaCastingFeature, + "IPH_GMCLocalMediaCasting", + base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kIPHHighEfficiencyModeFeature, "IPH_HighEfficiencyMode", base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/components/feature_engagement/public/feature_constants.h b/components/feature_engagement/public/feature_constants.h index 273deb6..ce2c1bd6 100644 --- a/components/feature_engagement/public/feature_constants.h +++ b/components/feature_engagement/public/feature_constants.h
@@ -37,6 +37,7 @@ BASE_DECLARE_FEATURE(kIPHExtensionsRequestAccessButtonFeature); BASE_DECLARE_FEATURE(kIPHFocusHelpBubbleScreenReaderPromoFeature); BASE_DECLARE_FEATURE(kIPHGMCCastStartStopFeature); +BASE_DECLARE_FEATURE(kIPHGMCLocalMediaCastingFeature); BASE_DECLARE_FEATURE(kIPHHighEfficiencyModeFeature); BASE_DECLARE_FEATURE(kIPHLiveCaptionFeature); BASE_DECLARE_FEATURE(kIPHTabAudioMutingFeature);
diff --git a/components/feature_engagement/public/feature_list.cc b/components/feature_engagement/public/feature_list.cc index f2afe98..2316f21e 100644 --- a/components/feature_engagement/public/feature_list.cc +++ b/components/feature_engagement/public/feature_list.cc
@@ -154,6 +154,7 @@ &kIPHExtensionsRequestAccessButtonFeature, &kIPHFocusHelpBubbleScreenReaderPromoFeature, &kIPHGMCCastStartStopFeature, + &kIPHGMCLocalMediaCastingFeature, &kIPHHighEfficiencyModeFeature, &kIPHLiveCaptionFeature, &kIPHTabAudioMutingFeature,
diff --git a/components/feature_engagement/public/feature_list.h b/components/feature_engagement/public/feature_list.h index c25efe7f..ee4783e 100644 --- a/components/feature_engagement/public/feature_list.h +++ b/components/feature_engagement/public/feature_list.h
@@ -282,6 +282,8 @@ "IPH_ExtensionsRequestAccessButton"); DEFINE_VARIATION_PARAM(kIPHGlobalMediaControls, "IPH_GlobalMediaControls"); DEFINE_VARIATION_PARAM(kIPHGMCCastStartStopFeature, "IPH_GMCCastStartStop"); +DEFINE_VARIATION_PARAM(kIPHGMCLocalMediaCastingFeature, + "IPH_GMCLocalMediaCasting"); DEFINE_VARIATION_PARAM(kIPHHighEfficiencyModeFeature, "IPH_HighEfficiencyMode"); DEFINE_VARIATION_PARAM(kIPHLiveCaption, "IPH_LiveCaption"); DEFINE_VARIATION_PARAM(kIPHPasswordsAccountStorageFeature, @@ -560,6 +562,7 @@ VARIATION_ENTRY(kIPHFocusModeFeature), VARIATION_ENTRY(kIPHGlobalMediaControls), VARIATION_ENTRY(kIPHGMCCastStartStopFeature), + VARIATION_ENTRY(kIPHGMCLocalMediaCastingFeature), VARIATION_ENTRY(kIPHHighEfficiencyModeFeature), VARIATION_ENTRY(kIPHLiveCaption), VARIATION_ENTRY(kIPHPasswordsAccountStorageFeature),
diff --git a/components/media_router/browser/media_router_metrics.cc b/components/media_router/browser/media_router_metrics.cc index d8e87eb..e3ad1db 100644 --- a/components/media_router/browser/media_router_metrics.cc +++ b/components/media_router/browser/media_router_metrics.cc
@@ -75,8 +75,6 @@ MediaRouterMetrics::~MediaRouterMetrics() = default; // static -const char MediaRouterMetrics::kHistogramCloseLatency[] = - "MediaRouter.Ui.Action.CloseLatency"; const char MediaRouterMetrics::kHistogramIconClickLocation[] = "MediaRouter.Icon.Click.Location"; const char MediaRouterMetrics::kHistogramMediaRouterFileFormat[] = @@ -87,22 +85,12 @@ "MediaRouter.Sink.SelectedType"; const char MediaRouterMetrics::kHistogramPresentationUrlType[] = "MediaRouter.PresentationRequest.AvailabilityUrlType"; -const char MediaRouterMetrics::kHistogramStartLocalLatency[] = - "MediaRouter.Ui.Action.StartLocal.Latency"; -const char MediaRouterMetrics::kHistogramStartLocalPosition[] = - "MediaRouter.Ui.Action.StartLocalPosition"; -const char MediaRouterMetrics::kHistogramStartLocalSessionSuccessful[] = - "MediaRouter.Ui.Action.StartLocalSessionSuccessful"; -const char MediaRouterMetrics::kHistogramStopRoute[] = - "MediaRouter.Ui.Action.StopRoute"; const char MediaRouterMetrics::kHistogramUiDeviceCount[] = "MediaRouter.Ui.Device.Count"; const char MediaRouterMetrics::kHistogramUiDialogIconStateAtOpen[] = "MediaRouter.Ui.Dialog.IconStateAtOpen"; const char MediaRouterMetrics::kHistogramUiDialogLoadedWithData[] = "MediaRouter.Ui.Dialog.LoadedWithData"; -const char MediaRouterMetrics::kHistogramUiDialogPaint[] = - "MediaRouter.Ui.Dialog.Paint"; const char MediaRouterMetrics::kHistogramUiAndroidDialogType[] = "MediaRouter.Ui.Android.DialogType"; const char MediaRouterMetrics::kHistogramUiAndroidDialogAction[] = @@ -127,24 +115,12 @@ } // static -void MediaRouterMetrics::RecordMediaRouterDialogPaint( - const base::TimeDelta& delta) { - UMA_HISTOGRAM_TIMES(kHistogramUiDialogPaint, delta); -} - -// static void MediaRouterMetrics::RecordMediaRouterDialogLoaded( const base::TimeDelta& delta) { UMA_HISTOGRAM_TIMES(kHistogramUiDialogLoadedWithData, delta); } // static -void MediaRouterMetrics::RecordCloseDialogLatency( - const base::TimeDelta& delta) { - UMA_HISTOGRAM_TIMES(kHistogramCloseLatency, delta); -} - -// static void MediaRouterMetrics::RecordMediaRouterFileFormat( const media::container_names::MediaContainerName format) { base::UmaHistogramEnumeration( @@ -191,34 +167,6 @@ } // static -void MediaRouterMetrics::RecordStartRouteDeviceIndex(int index) { - base::UmaHistogramSparse(kHistogramStartLocalPosition, std::min(index, 100)); -} - -// static -void MediaRouterMetrics::RecordStartLocalSessionLatency( - const base::TimeDelta& delta) { - UMA_HISTOGRAM_TIMES(kHistogramStartLocalLatency, delta); -} - -// static -void MediaRouterMetrics::RecordStartLocalSessionSuccessful(bool success) { - UMA_HISTOGRAM_BOOLEAN(kHistogramStartLocalSessionSuccessful, success); -} - -// static -void MediaRouterMetrics::RecordStopLocalRoute() { - // Local routes have the enum value 0. - UMA_HISTOGRAM_BOOLEAN(kHistogramStopRoute, 0); -} - -// static -void MediaRouterMetrics::RecordStopRemoteRoute() { - // Remote routes have the enum value 1. - UMA_HISTOGRAM_BOOLEAN(kHistogramStopRoute, 1); -} - -// static void MediaRouterMetrics::RecordIconStateAtDialogOpen(bool is_pinned) { UMA_HISTOGRAM_BOOLEAN(kHistogramUiDialogIconStateAtOpen, is_pinned); }
diff --git a/components/media_router/browser/media_router_metrics.h b/components/media_router/browser/media_router_metrics.h index 1824078..dd88cf7 100644 --- a/components/media_router/browser/media_router_metrics.h +++ b/components/media_router/browser/media_router_metrics.h
@@ -134,21 +134,15 @@ ~MediaRouterMetrics(); // UMA histogram names. - static const char kHistogramCloseLatency[]; static const char kHistogramIconClickLocation[]; static const char kHistogramMediaRouterFileFormat[]; static const char kHistogramMediaRouterFileSize[]; static const char kHistogramMediaSinkType[]; static const char kHistogramPresentationUrlType[]; - static const char kHistogramStartLocalLatency[]; - static const char kHistogramStartLocalPosition[]; - static const char kHistogramStartLocalSessionSuccessful[]; - static const char kHistogramStopRoute[]; static const char kHistogramUiDeviceCount[]; static const char kHistogramUiDialogActivationLocationAndCastMode[]; static const char kHistogramUiDialogIconStateAtOpen[]; static const char kHistogramUiDialogLoadedWithData[]; - static const char kHistogramUiDialogPaint[]; static const char kHistogramUiFirstAction[]; static const char kHistogramUiIconStateAtInit[]; static const char kHistogramUiAndroidDialogType[]; @@ -164,19 +158,10 @@ static void RecordMediaRouterDialogActivationLocation( MediaRouterDialogActivationLocation activation_location); - // Records the duration it takes for the Media Router dialog to open and - // finish painting after a user clicks to open the dialog. - static void RecordMediaRouterDialogPaint(const base::TimeDelta& delta); - // Records the duration it takes for the Media Router dialog to load its // initial data after a user clicks to open the dialog. static void RecordMediaRouterDialogLoaded(const base::TimeDelta& delta); - // Records the duration it takes from the user opening the Media Router dialog - // to the user closing the dialog. This is only called if closing the dialog - // is the first action the user takes. - static void RecordCloseDialogLatency(const base::TimeDelta& delta); - // Records the format of a cast file. static void RecordMediaRouterFileFormat( media::container_names::MediaContainerName format); @@ -201,18 +186,9 @@ // devices list. The index starts at 0. static void RecordStartRouteDeviceIndex(int index); - // Records the time it takes from the Media Router dialog showing at least one - // device to the user starting to cast. This is called only if casting is the - // first action taken by the user, aside from selecting the sink to cast to. - static void RecordStartLocalSessionLatency(const base::TimeDelta& delta); - // Records whether or not an attempt to start casting was successful. static void RecordStartLocalSessionSuccessful(bool success); - // Records the user stopping a route in the UI. - static void RecordStopLocalRoute(); - static void RecordStopRemoteRoute(); - // Records whether the toolbar icon is pinned by the user pref / admin policy. // Recorded whenever the Cast dialog is opened. static void RecordIconStateAtDialogOpen(bool is_pinned);
diff --git a/components/media_router/browser/media_router_metrics_unittest.cc b/components/media_router/browser/media_router_metrics_unittest.cc index 0eeef8d..f536239 100644 --- a/components/media_router/browser/media_router_metrics_unittest.cc +++ b/components/media_router/browser/media_router_metrics_unittest.cc
@@ -132,24 +132,12 @@ Bucket(static_cast<int>(activation_location2), 1))); } -TEST(MediaRouterMetricsTest, RecordMediaRouterDialogPaint) { - TestRecordTimeDeltaMetric( - base::BindRepeating(&MediaRouterMetrics::RecordMediaRouterDialogPaint), - MediaRouterMetrics::kHistogramUiDialogPaint); -} - TEST(MediaRouterMetricsTest, RecordMediaRouterDialogLoaded) { TestRecordTimeDeltaMetric( base::BindRepeating(&MediaRouterMetrics::RecordMediaRouterDialogLoaded), MediaRouterMetrics::kHistogramUiDialogLoadedWithData); } -TEST(MediaRouterMetricsTest, RecordCloseDialogLatency) { - TestRecordTimeDeltaMetric( - base::BindRepeating(&MediaRouterMetrics::RecordCloseDialogLatency), - MediaRouterMetrics::kHistogramCloseLatency); -} - TEST(MediaRouterMetricsTest, RecordPresentationUrlType) { base::HistogramTester tester; @@ -209,46 +197,6 @@ ElementsAre(Bucket(0, 1), Bucket(30, 1))); } -TEST(MediaRouterMetricsTest, RecordStartRouteDeviceIndex) { - base::HistogramTester tester; - tester.ExpectTotalCount(MediaRouterMetrics::kHistogramStartLocalPosition, 0); - - MediaRouterMetrics::RecordStartRouteDeviceIndex(30); - MediaRouterMetrics::RecordStartRouteDeviceIndex(0); - - tester.ExpectTotalCount(MediaRouterMetrics::kHistogramStartLocalPosition, 2); - EXPECT_THAT( - tester.GetAllSamples(MediaRouterMetrics::kHistogramStartLocalPosition), - ElementsAre(Bucket(0, 1), Bucket(30, 1))); -} - -TEST(MediaRouterMetricsTest, RecordStartLocalSessionLatency) { - TestRecordTimeDeltaMetric( - base::BindRepeating(&MediaRouterMetrics::RecordStartLocalSessionLatency), - MediaRouterMetrics::kHistogramStartLocalLatency); -} - -TEST(MediaRouterMetricsTest, RecordStartLocalSessionSuccessful) { - TestRecordBooleanMetric( - base::BindRepeating( - &MediaRouterMetrics::RecordStartLocalSessionSuccessful), - MediaRouterMetrics::kHistogramStartLocalSessionSuccessful); -} - -TEST(MediaRouterMetricsTest, RecordStopRoute) { - base::HistogramTester tester; - tester.ExpectTotalCount(MediaRouterMetrics::kHistogramStopRoute, 0); - - MediaRouterMetrics::RecordStopLocalRoute(); - MediaRouterMetrics::RecordStopRemoteRoute(); - MediaRouterMetrics::RecordStopLocalRoute(); - - tester.ExpectTotalCount(MediaRouterMetrics::kHistogramStopRoute, 3); - EXPECT_THAT(tester.GetAllSamples(MediaRouterMetrics::kHistogramStopRoute), - ElementsAre(Bucket(/* Local route */ 0, 2), - Bucket(/* Remote route */ 1, 1))); -} - TEST(MediaRouterMetricsTest, RecordIconStateAtDialogOpen) { TestRecordBooleanMetric( base::BindRepeating(&MediaRouterMetrics::RecordIconStateAtDialogOpen),
diff --git a/components/media_router/common/media_source.h b/components/media_router/common/media_source.h index 44db1070..797b1a7 100644 --- a/components/media_router/common/media_source.h +++ b/components/media_router/common/media_source.h
@@ -159,7 +159,7 @@ // used for MediaDialogView to associate the local media session notification // with a Reote Playback MediaRoute so that users can control Remote Playback // session from GMC. - // TODO(crrev.com/c/1491212): remove the `tab_id` field from the MediaSource + // TODO(crbug.com/1491212): remove the `tab_id` field from the MediaSource // and use the MVC model in GMC to handle Remote Playback UI presentation // logic. void AppendTabIdToRemotePlaybackUrlQuery(int tab_id);
diff --git a/components/no_state_prefetch/browser/no_state_prefetch_processor_impl_unittest.cc b/components/no_state_prefetch/browser/no_state_prefetch_processor_impl_unittest.cc index 51d7c6d..e26ce81b 100644 --- a/components/no_state_prefetch/browser/no_state_prefetch_processor_impl_unittest.cc +++ b/components/no_state_prefetch/browser/no_state_prefetch_processor_impl_unittest.cc
@@ -4,6 +4,7 @@ #include "components/no_state_prefetch/browser/no_state_prefetch_processor_impl.h" +#include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/test/bind.h" @@ -171,6 +172,9 @@ remote->Start(std::move(attributes2)); remote.FlushForTesting(); EXPECT_EQ(bad_message_error, "NSPPI_START_TWICE"); + // Clean up error handler, to avoid causing other tests run in the same + // process from crashing. + mojo::SetDefaultProcessErrorHandler(base::NullCallback()); } TEST_F(NoStatePrefetchProcessorImplTest, Cancel) {
diff --git a/components/optimization_guide/core/aium/COMMON_METADATA b/components/optimization_guide/core/aium/COMMON_METADATA deleted file mode 100644 index 42a428e..0000000 --- a/components/optimization_guide/core/aium/COMMON_METADATA +++ /dev/null
@@ -1,3 +0,0 @@ -monorail { - component: "Internals>AI User Metrics" -}
diff --git a/components/optimization_guide/core/aium/DIR_METADATA b/components/optimization_guide/core/aium/DIR_METADATA deleted file mode 100644 index e6e383d4..0000000 --- a/components/optimization_guide/core/aium/DIR_METADATA +++ /dev/null
@@ -1 +0,0 @@ -mixins: "//components/optimization_guide/core/aium/COMMON_METADATA" \ No newline at end of file
diff --git a/components/optimization_guide/core/model_quality/COMMON_METADATA b/components/optimization_guide/core/model_quality/COMMON_METADATA new file mode 100644 index 0000000..20f1a043 --- /dev/null +++ b/components/optimization_guide/core/model_quality/COMMON_METADATA
@@ -0,0 +1,3 @@ +monorail { + component: "Internals>AI Model Quality" +}
diff --git a/components/optimization_guide/core/model_quality/DIR_METADATA b/components/optimization_guide/core/model_quality/DIR_METADATA new file mode 100644 index 0000000..0468e920 --- /dev/null +++ b/components/optimization_guide/core/model_quality/DIR_METADATA
@@ -0,0 +1 @@ +mixins: "//components/optimization_guide/core/model_quality/COMMON_METADATA" \ No newline at end of file
diff --git a/components/optimization_guide/core/aium/OWNERS b/components/optimization_guide/core/model_quality/OWNERS similarity index 100% rename from components/optimization_guide/core/aium/OWNERS rename to components/optimization_guide/core/model_quality/OWNERS
diff --git a/components/optimization_guide/proto/BUILD.gn b/components/optimization_guide/proto/BUILD.gn index 47d5db18..d1ffe20 100644 --- a/components/optimization_guide/proto/BUILD.gn +++ b/components/optimization_guide/proto/BUILD.gn
@@ -11,8 +11,6 @@ proto_library("optimization_guide_proto") { proto_in_dir = "//" sources = [ - "aium_metadata.proto", - "aium_service.proto", "autocomplete_scoring_model_metadata.proto", "client_side_phishing_model_metadata.proto", "common_types.proto", @@ -21,6 +19,8 @@ "hints.proto", "loading_predictor_metadata.proto", "model_execution.proto", + "model_quality_metadata.proto", + "model_quality_service.proto", "models.proto", "on_device_tail_suggest_model_metadata.proto", "page_entities_metadata.proto",
diff --git a/components/optimization_guide/proto/aium_metadata.proto b/components/optimization_guide/proto/model_quality_metadata.proto similarity index 100% rename from components/optimization_guide/proto/aium_metadata.proto rename to components/optimization_guide/proto/model_quality_metadata.proto
diff --git a/components/optimization_guide/proto/aium_service.proto b/components/optimization_guide/proto/model_quality_service.proto similarity index 86% rename from components/optimization_guide/proto/aium_service.proto rename to components/optimization_guide/proto/model_quality_service.proto index f5aa260..e260b2a 100644 --- a/components/optimization_guide/proto/aium_service.proto +++ b/components/optimization_guide/proto/model_quality_service.proto
@@ -7,14 +7,14 @@ option optimize_for = LITE_RUNTIME; option java_package = "org.chromium.components.optimization_guide.proto"; -option java_outer_classname = "AIUMServiceProto"; +option java_outer_classname = "ModelQualityServiceProto"; package optimization_guide.proto; -import "components/optimization_guide/proto/aium_metadata.proto"; +import "components/optimization_guide/proto/model_quality_metadata.proto"; import "components/optimization_guide/proto/features/default_feature_ai_logging_data.proto"; -// A request to send AI data logs to the server. +// A request to send AI data logs to the model quality server. message LogAiDataRequest { // Metadata for various AiLoggingData logs that can be batched. BatchedLoggingMetadata batched_metadata = 1;
diff --git a/components/password_manager/core/browser/password_generation_manager.cc b/components/password_manager/core/browser/password_generation_manager.cc index c27c2a9..2a3bb9f 100644 --- a/components/password_manager/core/browser/password_generation_manager.cc +++ b/components/password_manager/core/browser/password_generation_manager.cc
@@ -384,6 +384,7 @@ } form_saver->UpdateReplace(generated, matches, old_password, presaved_.value() /* old_primary_key */); + presaved_ = std::move(generated); } void PasswordGenerationManager::OnPresaveBubbleResult(
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc index b2e6dc0..e62f096e 100644 --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc
@@ -1151,8 +1151,9 @@ submitted_manager->Clone()); } - if (submitted_manager->HasGeneratedPassword()) + if (submitted_manager->HasGeneratedPassword()) { client_->AutomaticPasswordSave(MoveOwnedSubmittedManager()); + } } ResetSubmittedManager(); }
diff --git a/components/safe_browsing/core/common/proto/csd.proto b/components/safe_browsing/core/common/proto/csd.proto index b450142..d61dd07 100644 --- a/components/safe_browsing/core/common/proto/csd.proto +++ b/components/safe_browsing/core/common/proto/csd.proto
@@ -993,6 +993,8 @@ // Note: Version 1 can have inconsistent behavior because it uses // indeterminate UI strings (can be changed by a client-side feature flag). // Version 2: Client-side UI string/icon updates. Supported in M117. + // Version 3: Client-side UI string update for suspicious archive warnings. + // Supported in M120. optional int32 version = 1; } optional TailoredInfo tailored_info = 86;
diff --git a/components/signin/public/identity_manager/access_token_constants.cc b/components/signin/public/identity_manager/access_token_constants.cc index d32bbf3d..b11ff6b 100644 --- a/components/signin/public/identity_manager/access_token_constants.cc +++ b/components/signin/public/identity_manager/access_token_constants.cc
@@ -79,6 +79,10 @@ // Required by supervision features that verify parent password. GaiaConstants::kAccountsReauthOAuth2Scope, + // Used by desktop Chrome to talk to passkey enclaves when using Google + // Password Manager. + GaiaConstants::kPasskeysEnclaveOAuth2Scope, + // Required by ChromeOS only. #if BUILDFLAG(IS_CHROMEOS_ASH) GaiaConstants::kAssistantOAuth2Scope,
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc index 2fe6033..d3512fe 100644 --- a/components/viz/service/display/renderer_pixeltest.cc +++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -5782,7 +5782,7 @@ gfx::ColorTransform::Options options; options.tone_map_pq_and_hlg_to_dst = true; gfx::ColorTransform::RuntimeOptions runtime_options; - runtime_options.sdr_max_luminance_nits = + runtime_options.dst_sdr_max_luminance_nits = gfx::ColorSpace::kDefaultSDRWhiteLevel; std::unique_ptr<gfx::ColorTransform> transform = gfx::ColorTransform::NewColorTransform(this->src_color_space_,
diff --git a/content/browser/media/media_interface_proxy.cc b/content/browser/media/media_interface_proxy.cc index 346bef12..98e5fad 100644 --- a/content/browser/media/media_interface_proxy.cc +++ b/content/browser/media/media_interface_proxy.cc
@@ -183,7 +183,7 @@ static_cast<StoragePartitionImpl*>( render_frame_host_->GetStoragePartition()) ->GetCdmStorageManager(); - DCHECK(cdm_storage_manager); + cdm_storage_manager->OpenCdmStorage( CdmStorageBindingContext(storage_key, cdm_type_), std::move(receiver)); @@ -192,7 +192,6 @@ static_cast<StoragePartitionImpl*>( render_frame_host_->GetStoragePartition()) ->GetMediaLicenseManager(); - DCHECK(media_license_manager); media_license_manager->OpenCdmStorage( CdmStorageBindingContext(storage_key, cdm_type_),
diff --git a/content/browser/memory_pressure/user_level_memory_pressure_signal_generator.cc b/content/browser/memory_pressure/user_level_memory_pressure_signal_generator.cc index dd19e32..a90e7b4d 100644 --- a/content/browser/memory_pressure/user_level_memory_pressure_signal_generator.cc +++ b/content/browser/memory_pressure/user_level_memory_pressure_signal_generator.cc
@@ -39,6 +39,13 @@ constexpr base::TimeDelta kDefaultMeasurementInterval = base::Seconds(1); // Time interval between measuring total private memory footprint. +base::TimeDelta MeasurementIntervalFor3GbDevices() { + static const base::FeatureParam<base::TimeDelta> kMeasurementInterval{ + &content::features::kUserLevelMemoryPressureSignalOn3GbDevices, + "measurement_interval", kDefaultMeasurementInterval}; + return kMeasurementInterval.Get(); +} + base::TimeDelta MeasurementIntervalFor4GbDevices() { static const base::FeatureParam<base::TimeDelta> kMeasurementInterval{ &content::features::kUserLevelMemoryPressureSignalOn4GbDevices, @@ -53,6 +60,18 @@ return kMeasurementInterval.Get(); } +// The memory threshold: 738 was selected at around the 99th percentile of +// the Memory.Total.PrivateMemoryFootprint reported by Android devices whose +// system memory were 3GB. +constexpr size_t kMemoryThresholdMBOf3GbDevices = 738; + +uint64_t MemoryThresholdParamFor3GbDevices() { + static const base::FeatureParam<int> kMemoryThresholdParam{ + &content::features::kUserLevelMemoryPressureSignalOn3GbDevices, + "memory_threshold_mb", kMemoryThresholdMBOf3GbDevices}; + return base::as_unsigned(kMemoryThresholdParam.Get()) * k1MB; +} + // The memory threshold: 458 was selected at around the 99th percentile of // the Memory.Total.PrivateMemoryFootprint reported by Android devices whose // system memory were 4GB. @@ -81,6 +100,13 @@ // static void UserLevelMemoryPressureSignalGenerator::Initialize() { + if (content::features::IsUserLevelMemoryPressureSignalEnabledOn3GbDevices()) { + UserLevelMemoryPressureSignalGenerator::Get().Start( + MemoryThresholdParamFor3GbDevices(), MeasurementIntervalFor3GbDevices(), + content::features::MinUserMemoryPressureIntervalOn3GbDevices()); + return; + } + if (content::features::IsUserLevelMemoryPressureSignalEnabledOn4GbDevices()) { UserLevelMemoryPressureSignalGenerator::Get().Start( MemoryThresholdParamFor4GbDevices(), MeasurementIntervalFor4GbDevices(),
diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/browser/renderer_host/render_frame_host_impl.h index 12df0cc..96a1cfab 100644 --- a/content/browser/renderer_host/render_frame_host_impl.h +++ b/content/browser/renderer_host/render_frame_host_impl.h
@@ -3257,6 +3257,8 @@ NavigationSuddenTerminationDisablerTypeRecordUmaActivation); FRIEND_TEST_ALL_PREFIXES(NavigationRequestTest, SharedStorageWritable); FRIEND_TEST_ALL_PREFIXES(WebContentsImplBrowserTest, SetTitleOnUnload); + FRIEND_TEST_ALL_PREFIXES(SitePerProcessBrowserTest, + DetachedIframeUnloadHandlerABCB); class SubresourceLoaderFactoriesConfig;
diff --git a/content/browser/resources/histograms/histograms_internals.ts b/content/browser/resources/histograms/histograms_internals.ts index 80ef9e4..e9960fc 100644 --- a/content/browser/resources/histograms/histograms_internals.ts +++ b/content/browser/resources/histograms/histograms_internals.ts
@@ -260,11 +260,6 @@ getRequiredElement('stop').onclick = stopMonitoring; getRequiredElement('subprocess_checkbox').onclick = requestHistograms; - // Enable calling generateHistogramsAsText() from - // histograms_internals_ui_browsertest.js for testing purposes. - // Enable accessing monitoring mode status from - // histograms_internals_ui_browsertest.js for testing purposes. - Object.assign(window, {generateHistogramsAsText, monitoringStopped}); requestHistograms(); });
diff --git a/content/browser/site_per_process_unload_browsertest.cc b/content/browser/site_per_process_unload_browsertest.cc index f8131fd..358eea0 100644 --- a/content/browser/site_per_process_unload_browsertest.cc +++ b/content/browser/site_per_process_unload_browsertest.cc
@@ -905,15 +905,18 @@ // 1) Navigate to a(b(c(b))) EXPECT_TRUE(NavigateToURL(shell(), initial_url)); FrameTreeNode* root = web_contents()->GetPrimaryFrameTree().root(); - RenderFrameHostImpl* rfh_a = root->current_frame_host(); - RenderFrameHostImpl* rfh_b1 = rfh_a->child_at(0)->current_frame_host(); - RenderFrameHostImpl* rfh_c = rfh_b1->child_at(0)->current_frame_host(); - RenderFrameHostImpl* rfh_b2 = rfh_c->child_at(0)->current_frame_host(); + RenderFrameHostImplWrapper rfh_a(root->current_frame_host()); + RenderFrameHostImplWrapper rfh_b1(rfh_a->child_at(0)->current_frame_host()); + RenderFrameHostImplWrapper rfh_c(rfh_b1->child_at(0)->current_frame_host()); + RenderFrameHostImplWrapper rfh_b2(rfh_c->child_at(0)->current_frame_host()); // 2) Add unload handlers on B1, B2 and C. UnloadPrint(rfh_b1->frame_tree_node(), "B1"); + rfh_b1->DisableUnloadTimerForTesting(); UnloadPrint(rfh_b2->frame_tree_node(), "B2"); + rfh_b2->DisableUnloadTimerForTesting(); UnloadPrint(rfh_c->frame_tree_node(), "C"); + rfh_c->DisableUnloadTimerForTesting(); DOMMessageQueue dom_message_queue(web_contents()); RenderProcessHostWatcher shutdown_B(
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc index a0db93b3..af14b29 100644 --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc
@@ -1902,11 +1902,7 @@ } CdmStorageManager* StoragePartitionImpl::GetCdmStorageManager() { - if (base::FeatureList::IsEnabled(features::kCdmStorageDatabase)) { - CHECK(cdm_storage_manager_); return cdm_storage_manager_.get(); - } - return nullptr; } #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
diff --git a/content/common/user_level_memory_pressure_signal_features.cc b/content/common/user_level_memory_pressure_signal_features.cc index ecb8bcc..1a81ce2 100644 --- a/content/common/user_level_memory_pressure_signal_features.cc +++ b/content/common/user_level_memory_pressure_signal_features.cc
@@ -16,8 +16,6 @@ namespace { -constexpr uint64_t k1MB = 1024ull * 1024; -constexpr uint64_t k1GB = 1024ull * k1MB; constexpr base::TimeDelta kDefaultMinimumInterval = base::Minutes(10); // Each renderer does not generate memory pressure signals until the interval @@ -33,7 +31,13 @@ } // namespace // Monitor total private memory footprint and dispatch memory pressure signal -// if the value exceeds the pre-defined threshold. (for Android 4GB devices) +// if the value exceeds the pre-defined threshold. + +// (for Android 3GB devices) +BASE_FEATURE(kUserLevelMemoryPressureSignalOn3GbDevices, + "UserLevelMemoryPressureSignalOn3GbDevices", + base::FEATURE_DISABLED_BY_DEFAULT); +// (for Android 4GB devices) BASE_FEATURE(kUserLevelMemoryPressureSignalOn4GbDevices, "UserLevelMemoryPressureSignalOn4GbDevices", base::FEATURE_ENABLED_BY_DEFAULT); @@ -42,26 +46,38 @@ "UserLevelMemoryPressureSignalOn6GbDevices", base::FEATURE_ENABLED_BY_DEFAULT); +bool IsUserLevelMemoryPressureSignalEnabledOn3GbDevices() { + static bool s_enabled = + base::SysInfo::IsAndroid3GbDevice() && + base::FeatureList::IsEnabled(kUserLevelMemoryPressureSignalOn3GbDevices); + return s_enabled; +} + bool IsUserLevelMemoryPressureSignalEnabledOn4GbDevices() { // Because of Android carveouts, AmountOfPhysicalMemory() returns smaller // than the actual memory size, So we will use a small lowerbound than 4GB // to discriminate real 4GB devices from lower memory ones. static bool s_enabled = - (3 * k1GB + 200 * k1MB <= base::SysInfo::AmountOfPhysicalMemory() && - base::SysInfo::AmountOfPhysicalMemory() <= 4 * k1GB) && + base::SysInfo::IsAndroid4GbDevice() && base::FeatureList::IsEnabled(kUserLevelMemoryPressureSignalOn4GbDevices); return s_enabled; } bool IsUserLevelMemoryPressureSignalEnabledOn6GbDevices() { static bool s_enabled = - (4 * k1GB < base::SysInfo::AmountOfPhysicalMemory() && - base::SysInfo::AmountOfPhysicalMemory() <= 6 * k1GB) && + base::SysInfo::IsAndroid6GbDevice() && base::FeatureList::IsEnabled(kUserLevelMemoryPressureSignalOn6GbDevices); return s_enabled; } // Minimum time interval between generated memory pressure signals. +base::TimeDelta MinUserMemoryPressureIntervalOn3GbDevices() { + static const base::FeatureParam<base::TimeDelta> kMinimumInterval{ + &kUserLevelMemoryPressureSignalOn3GbDevices, "minimum_interval", + kDefaultMinimumInterval}; + return kMinimumInterval.Get(); +} + base::TimeDelta MinUserMemoryPressureIntervalOn4GbDevices() { static const base::FeatureParam<base::TimeDelta> kMinimumInterval{ &kUserLevelMemoryPressureSignalOn4GbDevices, "minimum_interval", @@ -76,6 +92,13 @@ return kMinimumInterval.Get(); } +base::TimeDelta InertIntervalFor3GbDevices() { + static const base::FeatureParam<base::TimeDelta> kInertInterval{ + &features::kUserLevelMemoryPressureSignalOn3GbDevices, + "inert_interval_after_loading", kDefaultInertInterval}; + return kInertInterval.Get(); +} + base::TimeDelta InertIntervalFor4GbDevices() { static const base::FeatureParam<base::TimeDelta> kInertInterval{ &features::kUserLevelMemoryPressureSignalOn4GbDevices,
diff --git a/content/common/user_level_memory_pressure_signal_features.h b/content/common/user_level_memory_pressure_signal_features.h index 5b90a7e..3800445 100644 --- a/content/common/user_level_memory_pressure_signal_features.h +++ b/content/common/user_level_memory_pressure_signal_features.h
@@ -14,16 +14,20 @@ namespace content::features { +CONTENT_EXPORT BASE_DECLARE_FEATURE(kUserLevelMemoryPressureSignalOn3GbDevices); CONTENT_EXPORT BASE_DECLARE_FEATURE(kUserLevelMemoryPressureSignalOn4GbDevices); CONTENT_EXPORT BASE_DECLARE_FEATURE(kUserLevelMemoryPressureSignalOn6GbDevices); // Helper functions for UserLevelMemoryPressureSignal features. +CONTENT_EXPORT bool IsUserLevelMemoryPressureSignalEnabledOn3GbDevices(); CONTENT_EXPORT bool IsUserLevelMemoryPressureSignalEnabledOn4GbDevices(); CONTENT_EXPORT bool IsUserLevelMemoryPressureSignalEnabledOn6GbDevices(); +CONTENT_EXPORT base::TimeDelta InertIntervalFor3GbDevices(); CONTENT_EXPORT base::TimeDelta InertIntervalFor4GbDevices(); CONTENT_EXPORT base::TimeDelta InertIntervalFor6GbDevices(); +CONTENT_EXPORT base::TimeDelta MinUserMemoryPressureIntervalOn3GbDevices(); CONTENT_EXPORT base::TimeDelta MinUserMemoryPressureIntervalOn4GbDevices(); CONTENT_EXPORT base::TimeDelta MinUserMemoryPressureIntervalOn6GbDevices();
diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc index 20564e4f..55c98b48 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc
@@ -1011,12 +1011,18 @@ } bool RendererBlinkPlatformImpl::IsUserLevelMemoryPressureSignalEnabled() { - return features::IsUserLevelMemoryPressureSignalEnabledOn4GbDevices() || + return features::IsUserLevelMemoryPressureSignalEnabledOn3GbDevices() || + features::IsUserLevelMemoryPressureSignalEnabledOn4GbDevices() || features::IsUserLevelMemoryPressureSignalEnabledOn6GbDevices(); } std::pair<base::TimeDelta, base::TimeDelta> RendererBlinkPlatformImpl:: InertAndMinimumIntervalOfUserLevelMemoryPressureSignal() { + if (features::IsUserLevelMemoryPressureSignalEnabledOn3GbDevices()) { + return std::make_pair( + features::InertIntervalFor3GbDevices(), + features::MinUserMemoryPressureIntervalOn3GbDevices()); + } if (features::IsUserLevelMemoryPressureSignalEnabledOn4GbDevices()) { return std::make_pair( features::InertIntervalFor4GbDevices(),
diff --git a/content/test/data/interest_group/bidding_argument_validator.js b/content/test/data/interest_group/bidding_argument_validator.js index 0ac3bae9..6ef266b 100644 --- a/content/test/data/interest_group/bidding_argument_validator.js +++ b/content/test/data/interest_group/bidding_argument_validator.js
@@ -213,7 +213,13 @@ if (browserSignals.prevWinsMs.length !== 0) throw 'Wrong prevWinsMs ' + JSON.stringify(browserSignals.prevWinsMs); } else { - if (Object.keys(browserSignals).length !== 14) { + // FledgePassKAnonStatusToReportWin feature adds a new parameter + // KAnonStatus to reportWin(), which is under a Finch trial for some enabled + // tests. + // TODO(xtlsheep): Check length only equals to 15 after + // FledgePassKAnonStatusToReportWin is completely turned on. + if (Object.keys(browserSignals).length !== 14 && + Object.keys(browserSignals).length !== 15) { throw 'Wrong number of browser signals fields ' + JSON.stringify(browserSignals); }
diff --git a/content/test/data/interest_group/component_auction_bidding_argument_validator.js b/content/test/data/interest_group/component_auction_bidding_argument_validator.js index 2ea02c0..20d6a88d 100644 --- a/content/test/data/interest_group/component_auction_bidding_argument_validator.js +++ b/content/test/data/interest_group/component_auction_bidding_argument_validator.js
@@ -193,7 +193,13 @@ if (browserSignals.prevWinsMs.length !== 0) throw 'Wrong prevWinsMs ' + JSON.stringify(browserSignals.prevWinsMs); } else { - if (Object.keys(browserSignals).length !== 15) { + // FledgePassKAnonStatusToReportWin feature adds a new parameter + // KAnonStatus to reportWin(), which is under a Finch trial for some enabled + // tests. + // TODO(xtlsheep): Check length only equals to 16 after + // FledgePassKAnonStatusToReportWin is completely turned on. + if (Object.keys(browserSignals).length !== 15 && + Object.keys(browserSignals).length !== 16) { throw 'Wrong number of browser signals fields ' + JSON.stringify(browserSignals); }
diff --git a/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt index 97d55db..6fc54b3 100644 --- a/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt +++ b/content/test/gpu/gpu_tests/test_expectations/expected_color_expectations.txt
@@ -107,7 +107,7 @@ crbug.com/1382332 [ angle-disabled chromeos chromeos-board-amd64-generic cros-chrome no-passthrough target-cpu-64 ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] crbug.com/1382332 [ android-chromium android-s android-sm-a135m angle-disabled arm no-clang-coverage no-passthrough renderer-skia-gl target-cpu-32 ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] crbug.com/1382332 [ android-nexus-5x android angle-disabled no-clang-coverage no-passthrough qualcomm renderer-skia-gl target-cpu-64 ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] -crbug.com/1382332 [ fuchsia ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] +crbug.com/1382332 [ angle-vulkan arm fuchsia no-clang-coverage ] ExpectedColor_MediaRecorderFromVideoElementWithOoprCanvasDisabled [ Failure ] crbug.com/1302427 [ clang-coverage fuchsia fuchsia-board-qemu-x64 ] ExpectedColor_MediaRecorderFrom2DCanvas [ Failure ]
diff --git a/google_apis/gaia/gaia_constants.cc b/google_apis/gaia/gaia_constants.cc index ca2fcce2..d326ec6 100644 --- a/google_apis/gaia/gaia_constants.cc +++ b/google_apis/gaia/gaia_constants.cc
@@ -177,6 +177,10 @@ const char kCalendarReadOnlyOAuth2Scope[] = "https://www.googleapis.com/auth/calendar.readonly"; +// OAuth 2 scope for Google Password Manager passkey enclaves. +const char kPasskeysEnclaveOAuth2Scope[] = + "https://www.googleapis.com/auth/secureidentity.action"; + // OAuth 2 scopes for Google Tasks API. const char kTasksReadOnlyOAuth2Scope[] = "https://www.googleapis.com/auth/tasks.readonly";
diff --git a/google_apis/gaia/gaia_constants.h b/google_apis/gaia/gaia_constants.h index 30402e3..70a525e 100644 --- a/google_apis/gaia/gaia_constants.h +++ b/google_apis/gaia/gaia_constants.h
@@ -74,6 +74,7 @@ COMPONENT_EXPORT(GOOGLE_APIS) extern const char kFeedOAuth2Scope[]; COMPONENT_EXPORT(GOOGLE_APIS) extern const char kKAnonymityServiceOAuth2Scope[]; COMPONENT_EXPORT(GOOGLE_APIS) extern const char kCalendarReadOnlyOAuth2Scope[]; +COMPONENT_EXPORT(GOOGLE_APIS) extern const char kPasskeysEnclaveOAuth2Scope[]; // OAuth 2 scopes for Google Tasks API. // https://developers.google.com/identity/protocols/oauth2/scopes#tasks
diff --git a/gpu/command_buffer/service/dawn_context_provider.cc b/gpu/command_buffer/service/dawn_context_provider.cc index d274320..bd917830 100644 --- a/gpu/command_buffer/service/dawn_context_provider.cc +++ b/gpu/command_buffer/service/dawn_context_provider.cc
@@ -225,13 +225,8 @@ wgpu::DawnTogglesDescriptor toggles_desc; toggles_desc.enabledToggles = enabled_toggles.data(); toggles_desc.disabledToggles = disabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME toggles_desc.enabledToggleCount = enabled_toggles.size(); toggles_desc.disabledToggleCount = disabled_toggles.size(); -#else - toggles_desc.enabledTogglesCount = enabled_toggles.size(); - toggles_desc.disabledTogglesCount = disabled_toggles.size(); -#endif wgpu::DeviceDescriptor descriptor; descriptor.nextInChain = &toggles_desc; @@ -292,11 +287,7 @@ } descriptor.requiredFeatures = features.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME descriptor.requiredFeatureCount = std::size(features); -#else - descriptor.requiredFeaturesCount = std::size(features); -#endif wgpu::Device device = adapter.CreateDevice(&descriptor); if (!device) {
diff --git a/gpu/command_buffer/service/dawn_instance.cc b/gpu/command_buffer/service/dawn_instance.cc index ef6d964..4dc95bc 100644 --- a/gpu/command_buffer/service/dawn_instance.cc +++ b/gpu/command_buffer/service/dawn_instance.cc
@@ -60,20 +60,10 @@ } wgpu::DawnTogglesDescriptor dawn_toggle_desc; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_toggle_desc.enabledToggleCount = require_instance_enabled_toggles.size(); -#else - dawn_toggle_desc.enabledTogglesCount = - require_instance_enabled_toggles.size(); -#endif dawn_toggle_desc.enabledToggles = require_instance_enabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_toggle_desc.disabledToggleCount = require_instance_disabled_toggles.size(); -#else - dawn_toggle_desc.disabledTogglesCount = - require_instance_disabled_toggles.size(); -#endif dawn_toggle_desc.disabledToggles = require_instance_disabled_toggles.data(); dawn::native::DawnInstanceDescriptor dawn_instance_desc;
diff --git a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc index da5a4df2..2b37648 100644 --- a/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/d3d_image_backing_factory_unittest.cc
@@ -644,11 +644,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device = @@ -837,11 +833,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device = @@ -1002,11 +994,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device = @@ -1092,11 +1080,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device = @@ -1357,11 +1341,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device = @@ -1485,11 +1465,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device =
diff --git a/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc index aa18c1f..548b27b 100644 --- a/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/egl_image_backing_factory_unittest.cc
@@ -426,11 +426,7 @@ // internal methods that would need specific usages. wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; wgpu::Device device =
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 af4df7a8..adb3d2b 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
@@ -88,11 +88,7 @@ wgpu::FeatureName dawn_internal_usage = wgpu::FeatureName::DawnInternalUsages; wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = 1; -#else - device_descriptor.requiredFeaturesCount = 1; -#endif device_descriptor.requiredFeatures = &dawn_internal_usage; dawn_device_ =
diff --git a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc index 9723bcc..b4d783d 100644 --- a/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc +++ b/gpu/command_buffer/service/shared_image/iosurface_image_backing_factory_unittest.cc
@@ -196,11 +196,7 @@ wgpu::DawnTogglesDescriptor adapter_toggles_desc; adapter_toggles_desc.enabledToggles = adapter_enabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME adapter_toggles_desc.enabledToggleCount = adapter_enabled_toggles.size(); -#else - adapter_toggles_desc.enabledTogglesCount = adapter_enabled_toggles.size(); -#endif adapter_options.nextInChain = &adapter_toggles_desc; std::vector<dawn::native::Adapter> adapters = @@ -224,11 +220,7 @@ // internal methods that would need specific usages. features.push_back(wgpu::FeatureName::DawnInternalUsages); wgpu::DeviceDescriptor device_descriptor; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_descriptor.requiredFeatureCount = features.size(); -#else - device_descriptor.requiredFeaturesCount = features.size(); -#endif device_descriptor.requiredFeatures = features.data(); wgpu::Device device = adapter.CreateDevice(&device_descriptor);
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc index e41f296..ee0ed66 100644 --- a/gpu/command_buffer/service/webgpu_decoder_impl.cc +++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -1309,13 +1309,8 @@ std::vector<wgpu::FeatureName> required_features; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME if (desc.requiredFeatureCount) { size_t requiredFeatureCount = desc.requiredFeatureCount; -#else - if (desc.requiredFeaturesCount) { - size_t requiredFeatureCount = desc.requiredFeaturesCount; -#endif required_features = { desc.requiredFeatures, desc.requiredFeatures + requiredFeatureCount, @@ -1352,11 +1347,7 @@ #endif desc.requiredFeatures = required_features.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME desc.requiredFeatureCount = required_features.size(); -#else - desc.requiredFeaturesCount = required_features.size(); -#endif // If a new toggle is added here, GetDawnTogglesForWebGPU() which collects // info for about:gpu should be updated as well. @@ -1386,21 +1377,11 @@ require_device_disabled_toggles.push_back(toggles.c_str()); } dawn_device_toggles.enabledToggles = require_device_enabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_device_toggles.enabledToggleCount = require_device_enabled_toggles.size(); -#else - dawn_device_toggles.enabledTogglesCount = - require_device_enabled_toggles.size(); -#endif dawn_device_toggles.disabledToggles = require_device_disabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_device_toggles.disabledToggleCount = require_device_disabled_toggles.size(); -#else - dawn_device_toggles.disabledTogglesCount = - require_device_disabled_toggles.size(); -#endif ChainStruct(desc, &dawn_device_toggles); // Dawn caching isolation key information needs to be passed per device. If an @@ -1468,15 +1449,9 @@ label = device_label_.c_str(); } if (desc.requiredFeatures) { -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME required_features_ = std::vector<WGPUFeatureName>( desc.requiredFeatures, desc.requiredFeatures + desc.requiredFeatureCount); -#else - required_features_ = std::vector<WGPUFeatureName>( - desc.requiredFeatures, - desc.requiredFeatures + desc.requiredFeaturesCount); -#endif requiredFeatures = required_features_.data(); } if (desc.requiredLimits) { @@ -1591,22 +1566,12 @@ require_adapter_disabled_toggles.push_back(toggles.c_str()); } dawn_adapter_toggles.enabledToggles = require_adapter_enabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_adapter_toggles.enabledToggleCount = require_adapter_enabled_toggles.size(); -#else - dawn_adapter_toggles.enabledTogglesCount = - require_adapter_enabled_toggles.size(); -#endif dawn_adapter_toggles.disabledToggles = require_adapter_disabled_toggles.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_adapter_toggles.disabledToggleCount = require_adapter_disabled_toggles.size(); -#else - dawn_adapter_toggles.disabledTogglesCount = - require_adapter_disabled_toggles.size(); -#endif ChainStruct(adapter_options, &dawn_adapter_toggles); #if BUILDFLAG(IS_WIN)
diff --git a/gpu/command_buffer/tests/webgpu_test.cc b/gpu/command_buffer/tests/webgpu_test.cc index c2e4389..0f875b2f 100644 --- a/gpu/command_buffer/tests/webgpu_test.cc +++ b/gpu/command_buffer/tests/webgpu_test.cc
@@ -416,11 +416,7 @@ DCHECK(adapter_); wgpu::DeviceDescriptor device_desc = {}; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME device_desc.requiredFeatureCount = 1; -#else - device_desc.requiredFeaturesCount = 1; -#endif device_desc.requiredFeatures = &invalid_feature; adapter_.RequestDevice(&device_desc, callback->UnboundCallback(),
diff --git "a/infra/config/generated/builders/ci/Android arm64 Builder \050dbg\051/properties.json" "b/infra/config/generated/builders/ci/Android arm64 Builder \050dbg\051/properties.json" index b1e0d8f..bce0bd9 100644 --- "a/infra/config/generated/builders/ci/Android arm64 Builder \050dbg\051/properties.json" +++ "b/infra/config/generated/builders/ci/Android arm64 Builder \050dbg\051/properties.json"
@@ -112,41 +112,6 @@ { "builder_id": { "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - }, - "parent": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - } - } - }, - { - "builder_id": { - "bucket": "ci", "builder": "Oreo Phone Tester", "project": "chromium" }, @@ -236,11 +201,6 @@ }, { "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - { - "bucket": "ci", "builder": "Oreo Phone Tester", "project": "chromium" }, @@ -270,10 +230,6 @@ { "builder": "android_arm64_dbg_recipe", "group": "tryserver.chromium.android" - }, - { - "builder": "try-nougat-phone-tester", - "group": "tryserver.chromium.android" } ] }
diff --git a/infra/config/generated/builders/ci/Nougat Phone Tester/properties.json b/infra/config/generated/builders/ci/Nougat Phone Tester/properties.json deleted file mode 100644 index 0b73306..0000000 --- a/infra/config/generated/builders/ci/Nougat Phone Tester/properties.json +++ /dev/null
@@ -1,104 +0,0 @@ -{ - "$build/chromium_tests_builder_config": { - "builder_config": { - "builder_db": { - "entries": [ - { - "builder_id": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "COMPILE_AND_TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - } - } - }, - { - "builder_id": { - "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - }, - "parent": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - } - } - } - ] - }, - "builder_ids": [ - { - "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - } - ], - "mirroring_builder_group_and_names": [ - { - "builder": "android_arm64_dbg_recipe", - "group": "tryserver.chromium.android" - }, - { - "builder": "try-nougat-phone-tester", - "group": "tryserver.chromium.android" - } - ] - } - }, - "$recipe_engine/resultdb/test_presentation": { - "column_keys": [], - "grouping_keys": [ - "status", - "v.test_suite" - ] - }, - "builder_group": "chromium.android", - "recipe": "chromium", - "sheriff_rotations": [ - "android" - ] -} \ No newline at end of file
diff --git a/infra/config/generated/builders/try/android_arm64_dbg_recipe/properties.json b/infra/config/generated/builders/try/android_arm64_dbg_recipe/properties.json index 154136e..8055d70 100644 --- a/infra/config/generated/builders/try/android_arm64_dbg_recipe/properties.json +++ b/infra/config/generated/builders/try/android_arm64_dbg_recipe/properties.json
@@ -112,41 +112,6 @@ { "builder_id": { "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - }, - "parent": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - } - } - }, - { - "builder_id": { - "bucket": "ci", "builder": "Oreo Phone Tester", "project": "chromium" }, @@ -236,11 +201,6 @@ }, { "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - { - "bucket": "ci", "builder": "Oreo Phone Tester", "project": "chromium" },
diff --git a/infra/config/generated/builders/try/try-nougat-phone-tester/properties.json b/infra/config/generated/builders/try/try-nougat-phone-tester/properties.json deleted file mode 100644 index f334e5c..0000000 --- a/infra/config/generated/builders/try/try-nougat-phone-tester/properties.json +++ /dev/null
@@ -1,104 +0,0 @@ -{ - "$build/chromium_tests_builder_config": { - "builder_config": { - "builder_db": { - "entries": [ - { - "builder_id": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "COMPILE_AND_TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - } - } - }, - { - "builder_id": { - "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - }, - "builder_spec": { - "build_gs_bucket": "chromium-android-archive", - "builder_group": "chromium.android", - "execution_mode": "TEST", - "legacy_android_config": { - "config": "main_builder_mb" - }, - "legacy_chromium_config": { - "apply_configs": [ - "download_xr_test_apks" - ], - "build_config": "Debug", - "config": "android", - "target_bits": 64, - "target_platform": "android" - }, - "legacy_gclient_config": { - "apply_configs": [ - "android" - ], - "config": "chromium" - }, - "parent": { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - } - } - } - ] - }, - "builder_ids": [ - { - "bucket": "ci", - "builder": "Android arm64 Builder (dbg)", - "project": "chromium" - } - ], - "builder_ids_in_scope_for_testing": [ - { - "bucket": "ci", - "builder": "Nougat Phone Tester", - "project": "chromium" - } - ] - } - }, - "$build/reclient": { - "instance": "rbe-chromium-untrusted", - "jobs": 500, - "metrics_project": "chromium-reclient-metrics", - "scandeps_server": true - }, - "$recipe_engine/resultdb/test_presentation": { - "column_keys": [], - "grouping_keys": [ - "status", - "v.test_suite" - ] - }, - "builder_group": "tryserver.chromium.android", - "recipe": "chromium_trybot" -} \ No newline at end of file
diff --git a/infra/config/generated/health-specs/health-specs.json b/infra/config/generated/health-specs/health-specs.json index 994eb5d0..b3215ad5 100644 --- a/infra/config/generated/health-specs/health-specs.json +++ b/infra/config/generated/health-specs/health-specs.json
@@ -324,9 +324,6 @@ "Mac13 Tests (dbg)": { "_default": "_default" }, - "Nougat Phone Tester": { - "_default": "_default" - }, "Oreo Phone Tester": { "_default": "_default" },
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg index af8c154..f048e1c 100644 --- a/infra/config/generated/luci/commit-queue.cfg +++ b/infra/config/generated/luci/commit-queue.cfg
@@ -4610,10 +4610,6 @@ includable_only: true } builders { - name: "chromium/try/try-nougat-phone-tester" - includable_only: true - } - builders { name: "chromium/try/win-angle-chromium-x64-try" includable_only: true }
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg index 15904ae4..80e6d4e 100644 --- a/infra/config/generated/luci/cr-buildbucket.cfg +++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -1975,7 +1975,7 @@ use_invocation_timestamp: true } } - description_html: "This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-oreo-arm64-dbg\">android-oreo-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-pie-arm64-dbg\">android-pie-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-oreo-arm64-dbg\">android-webview-oreo-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-pie-arm64-dbg\">android-webview-pie-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android_arm64_dbg_recipe\">android_arm64_dbg_recipe</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/try-nougat-phone-tester\">try-nougat-phone-tester</a></li></ul>" + description_html: "This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-oreo-arm64-dbg\">android-oreo-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-pie-arm64-dbg\">android-pie-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-oreo-arm64-dbg\">android-webview-oreo-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android-webview-pie-arm64-dbg\">android-webview-pie-arm64-dbg</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android_arm64_dbg_recipe\">android_arm64_dbg_recipe</a></li></ul>" shadow_builder_adjustments { service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" pool: "luci.chromium.try" @@ -19457,101 +19457,6 @@ } } builders { - name: "Nougat Phone Tester" - swarming_host: "chromium-swarm.appspot.com" - dimensions: "builderless:1" - dimensions: "cores:8" - dimensions: "cpu:x86-64" - dimensions: "free_space:standard" - dimensions: "os:Ubuntu-22.04" - dimensions: "pool:luci.chromium.ci" - dimensions: "ssd:0" - exe { - cipd_package: "infra/chromium/bootstrapper/${platform}" - cipd_version: "latest" - cmd: "bootstrapper" - } - properties: - '{' - ' "$bootstrap/exe": {' - ' "exe": {' - ' "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",' - ' "cipd_version": "refs/heads/main",' - ' "cmd": [' - ' "luciexe"' - ' ]' - ' }' - ' },' - ' "$bootstrap/properties": {' - ' "properties_file": "infra/config/generated/builders/ci/Nougat Phone Tester/properties.json",' - ' "top_level_project": {' - ' "ref": "refs/heads/main",' - ' "repo": {' - ' "host": "chromium.googlesource.com",' - ' "project": "chromium/src"' - ' }' - ' }' - ' },' - ' "builder_group": "chromium.android",' - ' "led_builder_is_bootstrapped": true,' - ' "recipe": "chromium",' - ' "sheriff_rotations": [' - ' "android"' - ' ]' - '}' - execution_timeout_secs: 10800 - build_numbers: YES - service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" - experiments { - key: "chromium_swarming.expose_merge_script_failures" - value: 100 - } - experiments { - key: "luci.recipes.use_python3" - value: 100 - } - resultdb { - enable: true - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "ci_test_results" - test_results {} - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "gpu_ci_test_results" - test_results { - predicate { - test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+" - } - } - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "blink_web_tests_ci_test_results" - test_results { - predicate { - test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)" - } - } - } - history_options { - use_invocation_timestamp: true - } - } - description_html: "This builder is mirrored by any of the following try builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/try-nougat-phone-tester\">try-nougat-phone-tester</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/try/android_arm64_dbg_recipe\">android_arm64_dbg_recipe</a></li></ul>" - shadow_builder_adjustments { - service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" - pool: "luci.chromium.try" - dimensions: "free_space:" - dimensions: "pool:luci.chromium.try" - } - contact_team_email: "clank-engprod@google.com" - } - builders { name: "Oreo Phone Tester" swarming_host: "chromium-swarm.appspot.com" dimensions: "builderless:1" @@ -97062,97 +96967,6 @@ } } builders { - name: "try-nougat-phone-tester" - swarming_host: "chromium-swarm.appspot.com" - dimensions: "builderless:1" - dimensions: "cores:8" - dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-22.04" - dimensions: "pool:luci.chromium.try" - dimensions: "ssd:0" - exe { - cipd_package: "infra/chromium/bootstrapper/${platform}" - cipd_version: "latest" - cmd: "bootstrapper" - } - properties: - '{' - ' "$bootstrap/exe": {' - ' "exe": {' - ' "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",' - ' "cipd_version": "refs/heads/main",' - ' "cmd": [' - ' "luciexe"' - ' ]' - ' }' - ' },' - ' "$bootstrap/properties": {' - ' "properties_file": "infra/config/generated/builders/try/try-nougat-phone-tester/properties.json",' - ' "top_level_project": {' - ' "ref": "refs/heads/main",' - ' "repo": {' - ' "host": "chromium.googlesource.com",' - ' "project": "chromium/src"' - ' }' - ' }' - ' },' - ' "builder_group": "tryserver.chromium.android",' - ' "led_builder_is_bootstrapped": true,' - ' "recipe": "chromium_trybot"' - '}' - execution_timeout_secs: 14400 - expiration_secs: 7200 - grace_period { - seconds: 120 - } - build_numbers: YES - service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" - task_template_canary_percentage { - value: 5 - } - experiments { - key: "chromium_swarming.expose_merge_script_failures" - value: 100 - } - experiments { - key: "luci.recipes.use_python3" - value: 100 - } - resultdb { - enable: true - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "try_test_results" - test_results {} - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "gpu_try_test_results" - test_results { - predicate { - test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+" - } - } - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "blink_web_tests_try_test_results" - test_results { - predicate { - test_id_regexp: "(ninja://[^/]*blink_web_tests/.+)|(ninja://[^/]*_wpt_tests/.+)" - } - } - } - history_options { - use_invocation_timestamp: true - } - } - description_html: "This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/Android arm64 Builder (dbg)\">Android arm64 Builder (dbg)</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/Nougat Phone Tester\">Nougat Phone Tester</a></li></ul>" - } - builders { name: "win-angle-chromium-x64-try" swarming_host: "chromium-swarm.appspot.com" dimensions: "builder:win-angle-chromium-x64-try" @@ -97354,7 +97168,7 @@ use_invocation_timestamp: true } } - description_html: "This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win10-angle-chromium-x64-intel\">win10-angle-chromium-x64-intel</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win10-angle-chromium-x64-nvidia\">win10-angle-chromium-x64-nvidia</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win-angle-chromium-x64-builder\">win-angle-chromium-x64-builder</a></li></ul>" + description_html: "This builder mirrors the following CI builders:<br/><ul><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win-angle-chromium-x64-builder\">win-angle-chromium-x64-builder</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win10-angle-chromium-x64-intel\">win10-angle-chromium-x64-intel</a></li><li><a href=\"https://ci.chromium.org/p/chromium/builders/ci/win10-angle-chromium-x64-nvidia\">win10-angle-chromium-x64-nvidia</a></li></ul>" } builders { name: "win-angle-chromium-x86-try"
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg index e5c7ecd..c02904c 100644 --- a/infra/config/generated/luci/luci-milo.cfg +++ b/infra/config/generated/luci/luci-milo.cfg
@@ -1603,11 +1603,6 @@ short_name: "x86" } builders { - name: "buildbucket/luci.chromium.ci/Nougat Phone Tester" - category: "chromium.android|tester|phone" - short_name: "N" - } - builders { name: "buildbucket/luci.chromium.ci/Oreo Phone Tester" category: "chromium.android|tester|phone" short_name: "O" @@ -5059,11 +5054,6 @@ short_name: "size" } builders { - name: "buildbucket/luci.chromium.ci/Nougat Phone Tester" - category: "tester|phone" - short_name: "N" - } - builders { name: "buildbucket/luci.chromium.ci/Oreo Phone Tester" category: "tester|phone" short_name: "O" @@ -18513,9 +18503,6 @@ name: "buildbucket/luci.chromium.try/tricium-simple" } builders { - name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } - builders { name: "buildbucket/luci.chromium.try/win-angle-chromium-x64-try" } builders { @@ -19006,9 +18993,6 @@ builders { name: "buildbucket/luci.chromium.try/gpu-try-android-m-nexus-5x-64" } - builders { - name: "buildbucket/luci.chromium.try/try-nougat-phone-tester" - } builder_view_only: true } consoles {
diff --git a/infra/config/generated/luci/luci-scheduler.cfg b/infra/config/generated/luci/luci-scheduler.cfg index 693ab2c..e13b3d2 100644 --- a/infra/config/generated/luci/luci-scheduler.cfg +++ b/infra/config/generated/luci/luci-scheduler.cfg
@@ -2152,15 +2152,6 @@ } } job { - id: "Nougat Phone Tester" - realm: "ci" - buildbucket { - server: "cr-buildbucket.appspot.com" - bucket: "ci" - builder: "Nougat Phone Tester" - } -} -job { id: "Oreo Phone Tester" realm: "ci" buildbucket { @@ -4602,7 +4593,7 @@ job { id: "linux-3p-licenses" realm: "ci" - schedule: "15 22 * * *" + schedule: "15 22 * * 1" buildbucket { server: "cr-buildbucket.appspot.com" bucket: "ci" @@ -5831,7 +5822,7 @@ job { id: "win-3p-licenses" realm: "ci" - schedule: "15 22 * * *" + schedule: "15 22 * * 1" buildbucket { server: "cr-buildbucket.appspot.com" bucket: "ci"
diff --git a/infra/config/generated/luci/realms.cfg b/infra/config/generated/luci/realms.cfg index 6033461..da085ed 100644 --- a/infra/config/generated/luci/realms.cfg +++ b/infra/config/generated/luci/realms.cfg
@@ -155,7 +155,6 @@ values: "Mac12 Tests" values: "Mac13 Tests" values: "Mac13 Tests (dbg)" - values: "Nougat Phone Tester" values: "Oreo Phone Tester" values: "WebKit Win10" values: "Win10 Tests x64"
diff --git a/infra/config/generated/sheriff-rotations/android.txt b/infra/config/generated/sheriff-rotations/android.txt index 668c085..76dc0b7 100644 --- a/infra/config/generated/sheriff-rotations/android.txt +++ b/infra/config/generated/sheriff-rotations/android.txt
@@ -10,7 +10,6 @@ ci/Cast Android (dbg) ci/Deterministic Android ci/Deterministic Android (dbg) -ci/Nougat Phone Tester ci/android-10-arm64-rel ci/android-12-x64-rel ci/android-12l-x64-dbg-tests
diff --git a/infra/config/generated/testing/test_suites.pyl b/infra/config/generated/testing/test_suites.pyl index 78866cd..5a94335 100644 --- a/infra/config/generated/testing/test_suites.pyl +++ b/infra/config/generated/testing/test_suites.pyl
@@ -5757,13 +5757,6 @@ 'vr_platform_specific_chromium_gtests', ], - 'android_nougat_gtests': [ - 'android_ar_gtests', - 'android_ddready_vr_gtests', - 'android_monochrome_smoke_tests', - 'android_smoke_tests', - ], - 'android_oreo_emulator_gtests': [ 'android_emulator_specific_chrome_public_tests', 'android_monochrome_smoke_tests',
diff --git a/infra/config/generated/testing/variants.pyl b/infra/config/generated/testing/variants.pyl index 21dd8f8f..42b52f2 100644 --- a/infra/config/generated/testing/variants.pyl +++ b/infra/config/generated/testing/variants.pyl
@@ -70,16 +70,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 120.0.6059.0', + 'description': 'Run with ash-chrome version 120.0.6060.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v120.0.6059.0', - 'revision': 'version:120.0.6059.0', + 'location': 'lacros_version_skew_tests_v120.0.6060.0', + 'revision': 'version:120.0.6060.0', }, ], },
diff --git a/infra/config/lib/builder_health_indicators.star b/infra/config/lib/builder_health_indicators.star index 6f13bde..c2cda75 100644 --- a/infra/config/lib/builder_health_indicators.star +++ b/infra/config/lib/builder_health_indicators.star
@@ -867,7 +867,6 @@ "tricium-metrics-analysis", "tricium-oilpan-analysis", "tricium-simple", - "try-nougat-phone-tester", "win-angle-chromium-x64-try", "win-angle-chromium-x86-try", "win-annotator-rel",
diff --git a/infra/config/subprojects/chromium/ci/checks.star b/infra/config/subprojects/chromium/ci/checks.star index 2c5ed98..5b96815 100644 --- a/infra/config/subprojects/chromium/ci/checks.star +++ b/infra/config/subprojects/chromium/ci/checks.star
@@ -68,7 +68,7 @@ name = "linux-3p-licenses", description_html = "Daily scan for third party license errors.", executable = "recipe:chromium_licenses/scan", - schedule = "15 22 * * *", # 10:15pm UTC / 8:15am AEST / 1:15am PST + schedule = "15 22 * * 1", # 10:15pm UTC / 8:15am AEST / 1:15am PST triggered_by = None, os = os.LINUX_DEFAULT, console_view_entry = consoles.console_view_entry( @@ -85,7 +85,7 @@ name = "win-3p-licenses", description_html = "Daily scan for third party license errors.", executable = "recipe:chromium_licenses/scan", - schedule = "15 22 * * *", # 10:15pm UTC / 8:15am AEST / 1:15am PST + schedule = "15 22 * * 1", # Once a week 10:15pm UTC / 8:15am AEST / 1:15am PST triggered_by = None, builderless = True, os = os.WINDOWS_DEFAULT,
diff --git a/infra/config/subprojects/chromium/ci/chromium.android.star b/infra/config/subprojects/chromium/ci/chromium.android.star index d3c9f57..30147e22 100644 --- a/infra/config/subprojects/chromium/ci/chromium.android.star +++ b/infra/config/subprojects/chromium/ci/chromium.android.star
@@ -479,40 +479,6 @@ ) ci.thin_tester( - name = "Nougat Phone Tester", - branch_selector = branches.selector.ANDROID_BRANCHES, - triggered_by = ["ci/Android arm64 Builder (dbg)"], - builder_spec = builder_config.builder_spec( - execution_mode = builder_config.execution_mode.TEST, - gclient_config = builder_config.gclient_config( - config = "chromium", - apply_configs = [ - "android", - ], - ), - chromium_config = builder_config.chromium_config( - config = "android", - apply_configs = [ - "download_xr_test_apks", - ], - build_config = builder_config.build_config.DEBUG, - target_bits = 64, - target_platform = builder_config.target_platform.ANDROID, - ), - android_config = builder_config.android_config( - config = "main_builder_mb", - ), - build_gs_bucket = "chromium-android-archive", - ), - console_view_entry = consoles.console_view_entry( - category = "tester|phone", - short_name = "N", - ), - cq_mirrors_console_view = "mirrors", - contact_team_email = "clank-engprod@google.com", -) - -ci.thin_tester( name = "Oreo Phone Tester", branch_selector = branches.selector.ANDROID_BRANCHES, triggered_by = ["ci/Android arm64 Builder (dbg)"],
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star index 8428123..6ffa94f 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -789,15 +789,6 @@ tryjob = try_.job(), ) -try_.builder( - name = "try-nougat-phone-tester", - branch_selector = branches.selector.ANDROID_BRANCHES, - mirrors = [ - "ci/Android arm64 Builder (dbg)", - "ci/Nougat Phone Tester", - ], -) - try_.gpu.optional_tests_builder( name = "android_optional_gpu_tests_rel", branch_selector = branches.selector.ANDROID_BRANCHES,
diff --git a/infra/config/targets/compound_suites.star b/infra/config/targets/compound_suites.star index 3b75aa8..21f61ff 100644 --- a/infra/config/targets/compound_suites.star +++ b/infra/config/targets/compound_suites.star
@@ -42,16 +42,6 @@ ) targets.legacy_compound_suite( - name = "android_nougat_gtests", - basic_suites = [ - "android_ar_gtests", - "android_ddready_vr_gtests", - "android_monochrome_smoke_tests", - "android_smoke_tests", - ], -) - -targets.legacy_compound_suite( name = "android_oreo_emulator_gtests", basic_suites = [ "android_emulator_specific_chrome_public_tests",
diff --git a/infra/config/targets/lacros-version-skew-variants.json b/infra/config/targets/lacros-version-skew-variants.json index 7c398e17..09cfd02 100644 --- a/infra/config/targets/lacros-version-skew-variants.json +++ b/infra/config/targets/lacros-version-skew-variants.json
@@ -1,16 +1,16 @@ { "LACROS_VERSION_SKEW_CANARY": { "args": [ - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "identifier": "Lacros version skew testing ash canary", "swarming": { "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ] }
diff --git a/internal b/internal index f11a7d3..c4e9cf1 160000 --- a/internal +++ b/internal
@@ -1 +1 @@ -Subproject commit f11a7d33a9d0c660a8c3b3b2fca966b25c575b3e +Subproject commit c4e9cf1cc0de2e6de21aca6876facddd3ea450a1
diff --git a/ios/chrome/browser/ui/authentication/signin_matchers.h b/ios/chrome/browser/ui/authentication/signin_matchers.h index e712156..a4de81b5 100644 --- a/ios/chrome/browser/ui/authentication/signin_matchers.h +++ b/ios/chrome/browser/ui/authentication/signin_matchers.h
@@ -34,9 +34,6 @@ id<GREYMatcher> GoogleSyncSettingsButton(); // Matcher for the upgrade sign-in promo. -id<GREYMatcher> UpgradeSigninPromoMatcher(); - -// Matcher for the upgrade sign-in promo. id<GREYMatcher> SigninScreenPromoMatcher(); // Matcher for the secondary button ("No Thanks") in the history opt-in screen.
diff --git a/ios/chrome/browser/ui/authentication/signin_matchers.mm b/ios/chrome/browser/ui/authentication/signin_matchers.mm index 664c087e..77465f1 100644 --- a/ios/chrome/browser/ui/authentication/signin_matchers.mm +++ b/ios/chrome/browser/ui/authentication/signin_matchers.mm
@@ -50,10 +50,6 @@ grey_sufficientlyVisible(), nil); } -id<GREYMatcher> UpgradeSigninPromoMatcher() { - return SigninScreenPromoMatcher(); -} - id<GREYMatcher> SigninScreenPromoMatcher() { return grey_accessibilityID( first_run::kFirstRunSignInScreenAccessibilityIdentifier);
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn index 26d41334..c3c9183c 100644 --- a/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn +++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/BUILD.gn
@@ -215,6 +215,7 @@ "//ios/chrome/browser/ui/popup_menu/overflow_menu:feature_flags", "//ios/chrome/browser/ui/popup_menu/overflow_menu/destination_usage_history", "//ios/chrome/browser/ui/toolbar/test", + "//ios/chrome/browser/ui/whats_new:constants", "//ios/chrome/browser/ui/whats_new:util", "//ios/chrome/browser/web/font_size", "//ios/chrome/test:test_support",
diff --git a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm index 379df51a..e530801 100644 --- a/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm +++ b/ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_mediator_unittest.mm
@@ -75,6 +75,7 @@ #import "ios/chrome/browser/ui/popup_menu/overflow_menu/overflow_menu_swift.h" #import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h" #import "ios/chrome/browser/ui/toolbar/test/toolbar_test_navigation_manager.h" +#import "ios/chrome/browser/ui/whats_new/constants.h" #import "ios/chrome/browser/ui/whats_new/whats_new_util.h" #import "ios/chrome/browser/web/font_size/font_size_java_script_feature.h" #import "ios/chrome/browser/web/font_size/font_size_tab_helper.h"
diff --git a/ios/chrome/browser/ui/whats_new/promo/BUILD.gn b/ios/chrome/browser/ui/whats_new/promo/BUILD.gn index 0cf57bc2..3b75872 100644 --- a/ios/chrome/browser/ui/whats_new/promo/BUILD.gn +++ b/ios/chrome/browser/ui/whats_new/promo/BUILD.gn
@@ -44,6 +44,7 @@ "//ios/chrome/browser/shared/model/browser/test:test_support", "//ios/chrome/browser/shared/model/browser_state:test_support", "//ios/chrome/browser/shared/model/prefs:pref_names", + "//ios/chrome/browser/ui/whats_new:constants", "//ios/chrome/browser/ui/whats_new:util", "//third_party/ocmock", ]
diff --git a/ios/chrome/browser/ui/whats_new/promo/whats_new_scene_agent_unittest.mm b/ios/chrome/browser/ui/whats_new/promo/whats_new_scene_agent_unittest.mm index 1e52779..69441e7 100644 --- a/ios/chrome/browser/ui/whats_new/promo/whats_new_scene_agent_unittest.mm +++ b/ios/chrome/browser/ui/whats_new/promo/whats_new_scene_agent_unittest.mm
@@ -16,6 +16,7 @@ #import "ios/chrome/browser/shared/model/browser/browser.h" #import "ios/chrome/browser/shared/model/browser/test/test_browser.h" #import "ios/chrome/browser/shared/model/browser_state/test_chrome_browser_state.h" +#import "ios/chrome/browser/ui/whats_new/constants.h" #import "ios/chrome/browser/ui/whats_new/whats_new_util.h" #import "testing/platform_test.h" #import "third_party/ocmock/OCMock/OCMock.h"
diff --git a/ios/chrome/browser/ui/whats_new/whats_new_util.h b/ios/chrome/browser/ui/whats_new/whats_new_util.h index d48b54a..61340a8 100644 --- a/ios/chrome/browser/ui/whats_new/whats_new_util.h +++ b/ios/chrome/browser/ui/whats_new/whats_new_util.h
@@ -14,31 +14,6 @@ // Feature flag that enables version 2 of What's New. BASE_DECLARE_FEATURE(kWhatsNewIOSM116); -// Key to store whether the What's New promo has been register. -extern NSString* const kWhatsNewPromoRegistrationKey; - -// Key to store whether the What's New m116 promo has been register. -extern NSString* const kWhatsNewM116PromoRegistrationKey; - -// Key to store the date of FRE. -extern NSString* const kWhatsNewDaysAfterFre; - -// Key to store the date of FRE for What's New M116. -extern NSString* const kWhatsNewM116DaysAfterFre; - -// Key to store the number of launches after FRE. -extern NSString* const kWhatsNewLaunchesAfterFre; - -// Key to store the number of launches after FRE for What's New M116. -extern NSString* const kWhatsNewM116LaunchesAfterFre; - -// Key to store whether a user interacted with What's New from the overflow -// menu. -extern NSString* const kWhatsNewUsageEntryKey; - -// Key to store whether a user interacted with What's New M116. -extern NSString* const kWhatsNewM116UsageEntryKey; - // Returns whether What's New was used in the overflow menu. This is used to // decide on the location of the What's New entry point in the overflow menu. bool WasWhatsNewUsed();
diff --git a/net/base/features.cc b/net/base/features.cc index 875ecc6a..4b7a07b 100644 --- a/net/base/features.cc +++ b/net/base/features.cc
@@ -489,4 +489,6 @@ "SpdyHeadersToHttpResponseVerifyCorrectness", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kReceiveEcn, "ReceiveEcn", base::FEATURE_DISABLED_BY_DEFAULT); + } // namespace net::features
diff --git a/net/base/features.h b/net/base/features.h index 7f57700..3e16ef3f 100644 --- a/net/base/features.h +++ b/net/base/features.h
@@ -485,6 +485,9 @@ // for two weeks on Dev. NET_EXPORT BASE_DECLARE_FEATURE(kSpdyHeadersToHttpResponseVerifyCorrectness); +// Enables receiving ECN bit by sockets in Chrome. +NET_EXPORT BASE_DECLARE_FEATURE(kReceiveEcn); + } // namespace net::features #endif // NET_BASE_FEATURES_H_
diff --git a/net/dns/address_sorter_posix_unittest.cc b/net/dns/address_sorter_posix_unittest.cc index a4383aef..8cfc5cc6 100644 --- a/net/dns/address_sorter_posix_unittest.cc +++ b/net/dns/address_sorter_posix_unittest.cc
@@ -68,6 +68,7 @@ int SetReceiveBufferSize(int32_t) override { return OK; } int SetSendBufferSize(int32_t) override { return OK; } int SetDoNotFragment() override { return OK; } + int SetRecvEcn() override { return OK; } void Close() override {} int GetPeerAddress(IPEndPoint* address) const override {
diff --git a/net/dns/fuzzed_host_resolver_util.cc b/net/dns/fuzzed_host_resolver_util.cc index 0593fe7..575f442 100644 --- a/net/dns/fuzzed_host_resolver_util.cc +++ b/net/dns/fuzzed_host_resolver_util.cc
@@ -304,6 +304,7 @@ } void UseNonBlockingIO() override {} int SetDoNotFragment() override { return OK; } + int SetRecvEcn() override { return OK; } void SetMsgConfirm(bool confirm) override {} const NetLogWithSource& NetLog() const override { return net_log_; }
diff --git a/net/dns/mock_mdns_socket_factory.h b/net/dns/mock_mdns_socket_factory.h index a9f3e45..7e5f721 100644 --- a/net/dns/mock_mdns_socket_factory.h +++ b/net/dns/mock_mdns_socket_factory.h
@@ -48,6 +48,7 @@ MOCK_METHOD1(SetReceiveBufferSize, int(int32_t size)); MOCK_METHOD1(SetSendBufferSize, int(int32_t size)); MOCK_METHOD0(SetDoNotFragment, int()); + MOCK_METHOD0(SetRecvEcn, int()); MOCK_METHOD1(SetMsgConfirm, void(bool confirm)); MOCK_METHOD0(Close, void());
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc index deebc81..ad25d8e 100644 --- a/net/quic/quic_stream_factory.cc +++ b/net/quic/quic_stream_factory.cc
@@ -1446,6 +1446,15 @@ return; } + if (base::FeatureList::IsEnabled(net::features::kReceiveEcn)) { + rv = socket->SetRecvEcn(); + if (rv != OK) { + OnFinishConnectAndConfigureSocketError( + std::move(callback), CREATION_ERROR_SETTING_RECEIVE_ECN, rv); + return; + } + } + // Set a buffer large enough to contain the initial CWND's worth of packet // to work around the problem with CHLO packets being sent out with the // wrong encryption level, when the send buffer is full. @@ -1530,6 +1539,14 @@ return rv; } + if (base::FeatureList::IsEnabled(net::features::kReceiveEcn)) { + rv = socket->SetRecvEcn(); + if (rv != OK) { + HistogramCreateSessionFailure(CREATION_ERROR_SETTING_RECEIVE_ECN); + return rv; + } + } + // Set a buffer large enough to contain the initial CWND's worth of packet // to work around the problem with CHLO packets being sent out with the // wrong encryption level, when the send buffer is full.
diff --git a/net/quic/quic_stream_factory.h b/net/quic/quic_stream_factory.h index e5f21227..0eba4fc 100644 --- a/net/quic/quic_stream_factory.h +++ b/net/quic/quic_stream_factory.h
@@ -118,6 +118,7 @@ CREATION_ERROR_SETTING_RECEIVE_BUFFER, CREATION_ERROR_SETTING_SEND_BUFFER, CREATION_ERROR_SETTING_DO_NOT_FRAGMENT, + CREATION_ERROR_SETTING_RECEIVE_ECN, CREATION_ERROR_MAX };
diff --git a/net/socket/datagram_socket.h b/net/socket/datagram_socket.h index acb99121..8961f7c 100644 --- a/net/socket/datagram_socket.h +++ b/net/socket/datagram_socket.h
@@ -45,6 +45,10 @@ // return ERR_IO_PENDING. virtual int SetDoNotFragment() = 0; + // Requests that packets received by this socket have the ECN bit set. Returns + // a network error code if there was a problem. + virtual int SetRecvEcn() = 0; + // If |confirm| is true, then the MSG_CONFIRM flag will be passed to // subsequent writes if it's supported by the platform. virtual void SetMsgConfirm(bool confirm) = 0;
diff --git a/net/socket/fuzzed_datagram_client_socket.cc b/net/socket/fuzzed_datagram_client_socket.cc index 9241162..cefc828 100644 --- a/net/socket/fuzzed_datagram_client_socket.cc +++ b/net/socket/fuzzed_datagram_client_socket.cc
@@ -214,6 +214,10 @@ return OK; } +int FuzzedDatagramClientSocket::SetRecvEcn() { + return OK; +} + void FuzzedDatagramClientSocket::OnReadComplete( net::CompletionOnceCallback callback, int result) {
diff --git a/net/socket/fuzzed_datagram_client_socket.h b/net/socket/fuzzed_datagram_client_socket.h index 4b3ec16..162e16e6 100644 --- a/net/socket/fuzzed_datagram_client_socket.h +++ b/net/socket/fuzzed_datagram_client_socket.h
@@ -72,6 +72,7 @@ int SetReceiveBufferSize(int32_t size) override; int SetSendBufferSize(int32_t size) override; int SetDoNotFragment() override; + int SetRecvEcn() override; void SetMsgConfirm(bool confirm) override {} private:
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc index acaf586..c1ed44d 100644 --- a/net/socket/socket_test_util.cc +++ b/net/socket/socket_test_util.cc
@@ -1577,6 +1577,10 @@ return OK; } +int MockUDPClientSocket::SetRecvEcn() { + return OK; +} + void MockUDPClientSocket::Close() { connected_ = false; }
diff --git a/net/socket/socket_test_util.h b/net/socket/socket_test_util.h index 5119e66..e3edda3 100644 --- a/net/socket/socket_test_util.h +++ b/net/socket/socket_test_util.h
@@ -976,6 +976,7 @@ int SetReceiveBufferSize(int32_t size) override; int SetSendBufferSize(int32_t size) override; int SetDoNotFragment() override; + int SetRecvEcn() override; // DatagramSocket implementation. void Close() override;
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc index 90fe67f..19db6d7 100644 --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc
@@ -21,7 +21,6 @@ #include "base/location.h" #include "base/memory/singleton.h" #include "base/metrics/field_trial.h" -#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/notreached.h" @@ -31,6 +30,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/values.h" #include "build/build_config.h" +#include "components/miracle_parameter/common/public/miracle_parameter.h" #include "crypto/ec_private_key.h" #include "crypto/openssl_util.h" #include "net/base/features.h" @@ -86,10 +86,10 @@ base::FEATURE_ENABLED_BY_DEFAULT); // Default size of the internal BoringSSL buffers. -constexpr base::FeatureParam<int> kDefaultOpenSSLBufferSize( - &kDefaultOpenSSLBufferSizeFeature, - "DefaultOpenSSLBufferSize", - 17 * 1024); +MIRACLE_PARAMETER_FOR_INT(GetDefaultOpenSSLBufferSize, + kDefaultOpenSSLBufferSizeFeature, + "DefaultOpenSSLBufferSize", + 17 * 1024) base::Value::Dict NetLogPrivateKeyOperationParams(uint16_t algorithm, SSLPrivateKey* key) { @@ -778,7 +778,7 @@ SSL_set_session(ssl_.get(), session.get()); } - const int kBufferSize = kDefaultOpenSSLBufferSize.Get(); + const int kBufferSize = GetDefaultOpenSSLBufferSize(); transport_adapter_ = std::make_unique<SocketBIOAdapter>( stream_socket_.get(), kBufferSize, kBufferSize, this); BIO* transport_bio = transport_adapter_->bio();
diff --git a/net/socket/udp_client_socket.cc b/net/socket/udp_client_socket.cc index f182f88..40690322 100644 --- a/net/socket/udp_client_socket.cc +++ b/net/socket/udp_client_socket.cc
@@ -221,6 +221,10 @@ return socket_.SetDoNotFragment(); } +int UDPClientSocket::SetRecvEcn() { + return socket_.SetRecvEcn(); +} + void UDPClientSocket::SetMsgConfirm(bool confirm) { socket_.SetMsgConfirm(confirm); }
diff --git a/net/socket/udp_client_socket.h b/net/socket/udp_client_socket.h index 0673c3a..503dbd6 100644 --- a/net/socket/udp_client_socket.h +++ b/net/socket/udp_client_socket.h
@@ -72,6 +72,7 @@ int SetReceiveBufferSize(int32_t size) override; int SetSendBufferSize(int32_t size) override; int SetDoNotFragment() override; + int SetRecvEcn() override; void SetMsgConfirm(bool confirm) override; const NetLogWithSource& NetLog() const override; void EnableRecvOptimization() override;
diff --git a/net/socket/udp_server_socket.cc b/net/socket/udp_server_socket.cc index 0e8715d5..1520411b 100644 --- a/net/socket/udp_server_socket.cc +++ b/net/socket/udp_server_socket.cc
@@ -75,6 +75,10 @@ return socket_.SetDoNotFragment(); } +int UDPServerSocket::SetRecvEcn() { + return socket_.SetRecvEcn(); +} + void UDPServerSocket::SetMsgConfirm(bool confirm) { return socket_.SetMsgConfirm(confirm); }
diff --git a/net/socket/udp_server_socket.h b/net/socket/udp_server_socket.h index fb7ca9c..f93c84af 100644 --- a/net/socket/udp_server_socket.h +++ b/net/socket/udp_server_socket.h
@@ -42,6 +42,7 @@ int SetReceiveBufferSize(int32_t size) override; int SetSendBufferSize(int32_t size) override; int SetDoNotFragment() override; + int SetRecvEcn() override; void SetMsgConfirm(bool confirm) override; void Close() override; int GetPeerAddress(IPEndPoint* address) const override;
diff --git a/net/socket/udp_socket_posix.cc b/net/socket/udp_socket_posix.cc index 21cd1c8..02000d88 100644 --- a/net/socket/udp_socket_posix.cc +++ b/net/socket/udp_socket_posix.cc
@@ -590,6 +590,21 @@ #endif } +int UDPSocketPosix::SetRecvEcn() { + DCHECK_NE(socket_, kInvalidSocket); + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + + int rv; + unsigned int ecn = 1; + if (addr_family_ == AF_INET6) { + rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_RECVTCLASS, &ecn, sizeof(ecn)); + } else { + DCHECK_EQ(addr_family_, AF_INET); + rv = setsockopt(socket_, IPPROTO_IP, IP_RECVTOS, &ecn, sizeof(ecn)); + } + return rv == 0 ? OK : MapSystemError(errno); +} + void UDPSocketPosix::SetMsgConfirm(bool confirm) { #if !BUILDFLAG(IS_APPLE) if (confirm) {
diff --git a/net/socket/udp_socket_posix.h b/net/socket/udp_socket_posix.h index a0cb1e2..08a9fc75 100644 --- a/net/socket/udp_socket_posix.h +++ b/net/socket/udp_socket_posix.h
@@ -173,6 +173,10 @@ // return ERR_IO_PENDING. int SetDoNotFragment(); + // Requests that packets received by this socket have the ECN bit set. Returns + // a network error code if there was a problem. + int SetRecvEcn(); + // If |confirm| is true, then the MSG_CONFIRM flag will be passed to // subsequent writes if it's supported by the platform. void SetMsgConfirm(bool confirm);
diff --git a/net/socket/udp_socket_win.cc b/net/socket/udp_socket_win.cc index 32926a0..deb0561d 100644 --- a/net/socket/udp_socket_win.cc +++ b/net/socket/udp_socket_win.cc
@@ -589,6 +589,23 @@ return rv == 0 ? OK : MapSystemError(WSAGetLastError()); } +int UDPSocketWin::SetRecvEcn() { + DCHECK_NE(socket_, INVALID_SOCKET); + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + + int rv; + unsigned int ecn = 1; + if (addr_family_ == AF_INET6) { + rv = setsockopt(socket_, IPPROTO_IPV6, IPV6_RECVTCLASS, + reinterpret_cast<const char*>(&ecn), sizeof(ecn)); + } else { + DCHECK_EQ(addr_family_, AF_INET); + rv = setsockopt(socket_, IPPROTO_IP, IP_RECVTOS, + reinterpret_cast<const char*>(&ecn), sizeof(ecn)); + } + return rv == 0 ? OK : MapSystemError(WSAGetLastError()); +} + void UDPSocketWin::SetMsgConfirm(bool confirm) {} int UDPSocketWin::AllowAddressReuse() {
diff --git a/net/socket/udp_socket_win.h b/net/socket/udp_socket_win.h index dd27752..2069bd53 100644 --- a/net/socket/udp_socket_win.h +++ b/net/socket/udp_socket_win.h
@@ -262,6 +262,10 @@ // return ERR_IO_PENDING. int SetDoNotFragment(); + // Requests that packets received by this socket have the ECN bit set. Returns + // a network error code if there was a problem. + int SetRecvEcn(); + // This is a no-op on Windows. void SetMsgConfirm(bool confirm);
diff --git a/services/accessibility/fake_service_client.cc b/services/accessibility/fake_service_client.cc index 5787499..777ae05 100644 --- a/services/accessibility/fake_service_client.cc +++ b/services/accessibility/fake_service_client.cc
@@ -106,6 +106,12 @@ std::move(callback).Run(std::move(voices)); } +void FakeServiceClient::DarkenScreen(bool darken) { + if (darken_screen_callback_) { + darken_screen_callback_.Run(darken); + } +} + void FakeServiceClient::SetFocusRings( std::vector<mojom::FocusRingInfoPtr> focus_rings, mojom::AssistiveTechnologyType at_type) { @@ -150,6 +156,11 @@ tts_utterance_client_->OnEvent(std::move(tts_event)); } +void FakeServiceClient::SetDarkenScreenCallback( + base::RepeatingCallback<void(bool darken)> callback) { + darken_screen_callback_ = std::move(callback); +} + void FakeServiceClient::SetFocusRingsCallback( base::RepeatingCallback<void()> callback) { focus_rings_callback_ = std::move(callback);
diff --git a/services/accessibility/fake_service_client.h b/services/accessibility/fake_service_client.h index 945ccad..6974985 100644 --- a/services/accessibility/fake_service_client.h +++ b/services/accessibility/fake_service_client.h
@@ -63,6 +63,7 @@ void GetVoices(GetVoicesCallback callback) override; // ax::mojom::UserInterface: + void DarkenScreen(bool darken) override; void SetFocusRings(std::vector<ax::mojom::FocusRingInfoPtr> focus_rings, ax::mojom::AssistiveTechnologyType at_type) override; void SetHighlights(const std::vector<gfx::Rect>& rects, @@ -82,6 +83,8 @@ void SendTtsUtteranceEvent(mojom::TtsEventPtr tts_event); bool UserInterfaceIsBound() const; + void SetDarkenScreenCallback( + base::RepeatingCallback<void(bool darken)> callback); void SetFocusRingsCallback(base::RepeatingCallback<void()> callback); const std::vector<ax::mojom::FocusRingInfoPtr>& GetFocusRingsForType( mojom::AssistiveTechnologyType type) const; @@ -105,6 +108,7 @@ mojo::ReceiverSet<mojom::Tts> tts_receivers_; mojo::Remote<ax::mojom::TtsUtteranceClient> tts_utterance_client_; + base::RepeatingCallback<void(bool darken)> darken_screen_callback_; base::RepeatingCallback<void()> focus_rings_callback_; mojo::ReceiverSet<mojom::UserInterface> ux_receivers_; std::map<mojom::AssistiveTechnologyType,
diff --git a/services/accessibility/features/atp_js_api_test.cc b/services/accessibility/features/atp_js_api_test.cc index 3a0007b..5a9dda8 100644 --- a/services/accessibility/features/atp_js_api_test.cc +++ b/services/accessibility/features/atp_js_api_test.cc
@@ -426,6 +426,19 @@ } }; +TEST_F(AccessibilityPrivateJSApiTest, DarkenScreen) { + base::RunLoop waiter; + client_->SetDarkenScreenCallback( + base::BindLambdaForTesting([&waiter](bool darken) { + waiter.Quit(); + ASSERT_EQ(darken, true); + })); + ExecuteJS(R"JS( + chrome.accessibilityPrivate.darkenScreen(true); + )JS"); + waiter.Run(); +} + TEST_F(AccessibilityPrivateJSApiTest, SetFocusRings) { base::RunLoop waiter; client_->SetFocusRingsCallback(base::BindLambdaForTesting([&waiter, this]() {
diff --git a/services/accessibility/features/javascript/accessibility_private.js b/services/accessibility/features/javascript/accessibility_private.js index 187cff1..30d8a52 100644 --- a/services/accessibility/features/javascript/accessibility_private.js +++ b/services/accessibility/features/javascript/accessibility_private.js
@@ -45,6 +45,14 @@ } /** + * Darkens or undarkens the screen. + * @param {boolean} darken + */ + darkenScreen(darken) { + this.userInterfaceRemote_.darkenScreen(darken); + } + + /** * Sets the given accessibility focus rings for this extension. * @param {!Array<!chrome.accessibilityPrivate.FocusRingInfo>} focusRings * Array of focus rings to draw.
diff --git a/services/accessibility/public/mojom/user_interface.mojom b/services/accessibility/public/mojom/user_interface.mojom index 91c36ad7..652e41d 100644 --- a/services/accessibility/public/mojom/user_interface.mojom +++ b/services/accessibility/public/mojom/user_interface.mojom
@@ -52,6 +52,10 @@ // Provides control over the user interface. Implemented in the main OS // browser process and called from Accessibility Service javascript in V8. interface UserInterface { + // Darkens or undarkens the screen - true to darken screen, false to + // undarken screen. + DarkenScreen(bool darken); + // Sets the given accessibility focus rings for the given `at_type` // or clears them if the list is empty. // TODO(b/293348920): Cleanup after migration: pass a map of id to @@ -62,4 +66,4 @@ // Sets the bounds and color of the accessibility highlight. SetHighlights(array<gfx.mojom.Rect> rects, skia.mojom.SkColor color); -}; \ No newline at end of file +};
diff --git a/services/network/brokered_udp_client_socket.cc b/services/network/brokered_udp_client_socket.cc index e88d3ae4..b9223c8a 100644 --- a/services/network/brokered_udp_client_socket.cc +++ b/services/network/brokered_udp_client_socket.cc
@@ -326,6 +326,12 @@ return socket_->SetDoNotFragment(); } +int BrokeredUdpClientSocket::SetRecvEcn() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(socket_); + return socket_->SetRecvEcn(); +} + void BrokeredUdpClientSocket::SetMsgConfirm(bool confirm) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); set_msg_confirm_ = confirm;
diff --git a/services/network/brokered_udp_client_socket.h b/services/network/brokered_udp_client_socket.h index e7ac5464..1531444 100644 --- a/services/network/brokered_udp_client_socket.h +++ b/services/network/brokered_udp_client_socket.h
@@ -99,6 +99,7 @@ int SetReceiveBufferSize(int32_t size) override; int SetSendBufferSize(int32_t size) override; int SetDoNotFragment() override; + int SetRecvEcn() override; void SetMsgConfirm(bool confirm) override; const net::NetLogWithSource& NetLog() const override;
diff --git a/services/network/p2p/socket_udp_unittest.cc b/services/network/p2p/socket_udp_unittest.cc index 8f7d6812..9d9c389 100644 --- a/services/network/p2p/socket_udp_unittest.cc +++ b/services/network/p2p/socket_udp_unittest.cc
@@ -149,6 +149,8 @@ int SetDoNotFragment() override { return net::OK; } + int SetRecvEcn() override { return net::OK; } + void SetMsgConfirm(bool confirm) override {} void ReceivePacket(const net::IPEndPoint& address,
diff --git a/services/network/proxy_auto_config_library_unittest.cc b/services/network/proxy_auto_config_library_unittest.cc index 2530c6b..a3e0e90 100644 --- a/services/network/proxy_auto_config_library_unittest.cc +++ b/services/network/proxy_auto_config_library_unittest.cc
@@ -184,6 +184,10 @@ ADD_FAILURE() << "Called SetDoNotFragment()"; return net::ERR_UNEXPECTED; } + int SetRecvEcn() override { + ADD_FAILURE() << "Called SetRecvEcn()"; + return net::ERR_UNEXPECTED; + } void SetMsgConfirm(bool confirm) override { ADD_FAILURE() << "Called SetMsgConfirm()"; }
diff --git a/services/network/public/cpp/features.gni b/services/network/public/cpp/features.gni index b806e84..c160589b 100644 --- a/services/network/public/cpp/features.gni +++ b/services/network/public/cpp/features.gni
@@ -6,7 +6,7 @@ declare_args() { # Certificate transparency is not supported on iOS. - is_ct_supported = !is_ios + is_ct_supported = use_blink # Controls whether P2P is exposed by the network service. # Optional to reduce avoid having Chrome on iOS depends on
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index e5d07b8..564a2a8 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -894,287 +894,6 @@ } ] }, - "Nougat Phone Tester": { - "gtest_tests": [ - { - "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "chrome_public_smoke_test" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "chrome_public_smoke_test", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "chrome_public_smoke_test", - "test_id_prefix": "ninja://chrome/android:chrome_public_smoke_test/" - }, - { - "args": [ - "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_cardboard_skipdon_setupcomplete.json", - "--gs-results-bucket=chromium-result-details", - "--recover-devices", - "--remove-system-package=com.google.vr.vrcore", - "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "chrome_public_test_vr_apk-ddready-cardboard" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "chrome_public_test_vr_apk-ddready-cardboard", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 2 - }, - "test": "chrome_public_test_vr_apk", - "test_id_prefix": "ninja://chrome/android:chrome_public_test_vr_apk/" - }, - { - "args": [ - "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_ddview_skipdon_setupcomplete.json", - "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_keyboard/vr_keyboard_current.apk", - "--gs-results-bucket=chromium-result-details", - "--recover-devices", - "--git-revision=${got_revision}", - "--remove-system-package=com.google.vr.vrcore", - "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "chrome_public_test_vr_apk-ddready-ddview" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "chrome_public_test_vr_apk-ddready-ddview", - "precommit_args": [ - "--gerrit-issue=${patch_issue}", - "--gerrit-patchset=${patch_set}", - "--buildbucket-id=${buildbucket_build_id}" - ], - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 4 - }, - "test": "chrome_public_test_vr_apk", - "test_id_prefix": "ninja://chrome/android:chrome_public_test_vr_apk/" - }, - { - "args": [ - "--shared-prefs-file=//chrome/android/shared_preference_files/test/vr_ddview_don_setupcomplete.json", - "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_keyboard/vr_keyboard_current.apk", - "--annotation=Restriction=VR_DON_Enabled", - "--vr-don-enabled", - "--gs-results-bucket=chromium-result-details", - "--recover-devices", - "--remove-system-package=com.google.vr.vrcore", - "--additional-apk=//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "chrome_public_test_vr_apk-ddready-don-enabled" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "chrome_public_test_vr_apk-ddready-don-enabled", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "chrome_public_test_vr_apk", - "test_id_prefix": "ninja://chrome/android:chrome_public_test_vr_apk/" - }, - { - "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "monochrome_public_bundle_smoke_test" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "monochrome_public_bundle_smoke_test", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "monochrome_public_bundle_smoke_test", - "test_id_prefix": "ninja://chrome/android:monochrome_public_bundle_smoke_test/" - }, - { - "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "monochrome_public_smoke_test" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "monochrome_public_smoke_test", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "monochrome_public_smoke_test", - "test_id_prefix": "ninja://chrome/android:monochrome_public_smoke_test/" - }, - { - "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "monochrome_public_test_ar_apk" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "monochrome_public_test_ar_apk", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "monochrome_public_test_ar_apk", - "test_id_prefix": "ninja://chrome/android:monochrome_public_test_ar_apk/" - }, - { - "args": [ - "--gs-results-bucket=chromium-result-details", - "--recover-devices" - ], - "merge": { - "args": [ - "--bucket", - "chromium-result-details", - "--test-name", - "vr_android_unittests" - ], - "script": "//build/android/pylib/results/presentation/test_results_presentation.py" - }, - "name": "vr_android_unittests", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "dimensions": { - "android_devices": "1", - "device_os": "NMF26U", - "device_os_type": "userdebug", - "device_type": "marlin", - "os": "Android" - }, - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test": "vr_android_unittests", - "test_id_prefix": "ninja://chrome/browser/android/vr:vr_android_unittests/" - } - ] - }, "Oreo Phone Tester": { "gtest_tests": [ {
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 0715f82..f97c44719 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -5069,9 +5069,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5081,8 +5081,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -5219,9 +5219,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -5231,8 +5231,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.coverage.json b/testing/buildbot/chromium.coverage.json index 5d95e70..5ae5fb20 100644 --- a/testing/buildbot/chromium.coverage.json +++ b/testing/buildbot/chromium.coverage.json
@@ -25449,9 +25449,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -25461,8 +25461,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -25599,9 +25599,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -25611,8 +25611,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 4ee18fa..326afd4 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -43527,9 +43527,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43538,8 +43538,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -43677,9 +43677,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -43688,8 +43688,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -45001,9 +45001,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45012,8 +45012,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -45151,9 +45151,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45162,8 +45162,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -45861,9 +45861,9 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome" + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" }, @@ -45872,8 +45872,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 2bac6b3..1554cb0e 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -16364,12 +16364,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.interactive_ui_tests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16379,8 +16379,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": { @@ -16534,12 +16534,12 @@ { "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/linux-lacros.lacros_chrome_browsertests.skew.filter", - "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome", + "--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome", "--test-launcher-print-test-stdio=always", "--combine-ash-logs-on-bots", "--asan-symbolize-output" ], - "description": "Run with ash-chrome version 120.0.6059.0", + "description": "Run with ash-chrome version 120.0.6060.0", "isolate_profile_data": true, "merge": { "script": "//testing/merge_scripts/standard_gtest_merge.py" @@ -16549,8 +16549,8 @@ "cipd_packages": [ { "cipd_package": "chromium/testing/linux-ash-chromium/x86_64/ash.zip", - "location": "lacros_version_skew_tests_v120.0.6059.0", - "revision": "version:120.0.6059.0" + "location": "lacros_version_skew_tests_v120.0.6060.0", + "revision": "version:120.0.6060.0" } ], "dimensions": {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index e5e7139..cf35b13 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -3701,7 +3701,6 @@ 'android-pie-arm64-rel', 'android-pie-x86-rel', 'android-11-x86-rel', - 'Nougat Phone Tester', 'ToTAndroid' ] },
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index 78866cd..5a94335 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -5757,13 +5757,6 @@ 'vr_platform_specific_chromium_gtests', ], - 'android_nougat_gtests': [ - 'android_ar_gtests', - 'android_ddready_vr_gtests', - 'android_monochrome_smoke_tests', - 'android_smoke_tests', - ], - 'android_oreo_emulator_gtests': [ 'android_emulator_specific_chrome_public_tests', 'android_monochrome_smoke_tests',
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 21dd8f8f..42b52f2 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -70,16 +70,16 @@ }, 'LACROS_VERSION_SKEW_CANARY': { 'identifier': 'Lacros version skew testing ash canary', - 'description': 'Run with ash-chrome version 120.0.6059.0', + 'description': 'Run with ash-chrome version 120.0.6060.0', 'args': [ - '--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6059.0/test_ash_chrome', + '--ash-chrome-path-override=../../lacros_version_skew_tests_v120.0.6060.0/test_ash_chrome', ], 'swarming': { 'cipd_packages': [ { 'cipd_package': 'chromium/testing/linux-ash-chromium/x86_64/ash.zip', - 'location': 'lacros_version_skew_tests_v120.0.6059.0', - 'revision': 'version:120.0.6059.0', + 'location': 'lacros_version_skew_tests_v120.0.6060.0', + 'revision': 'version:120.0.6060.0', }, ], },
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 2c4eed7..e0d169d 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -636,24 +636,6 @@ 'junit_tests': 'cast_junit_tests', }, }, - 'Nougat Phone Tester': { - 'test_suites': { - 'gtest_tests': 'android_nougat_gtests', - }, - 'mixins': [ - 'has_native_resultdb_integration' - ], - 'swarming': { - 'dimensions': { - 'android_devices': '1', - 'device_os': 'NMF26U', - 'device_type': 'marlin', - 'os': 'Android', - }, - }, - 'skip_output_links': True, - 'os_type': 'android', - }, 'Oreo Phone Tester': { 'os_type': 'android', 'test_suites': {
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 2113319..3761b4c 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -13423,6 +13423,26 @@ ] } ], + "ProtectedAudiencesPassKanonStatusToReportWinStudy": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "FledgePassKAnonStatusToReportWin" + ] + } + ] + } + ], "PushMessagingDisallowSenderIDs": [ { "platforms": [
diff --git a/third_party/blink/renderer/core/editing/frame_selection.cc b/third_party/blink/renderer/core/editing/frame_selection.cc index 0ba41d4..b22d99c 100644 --- a/third_party/blink/renderer/core/editing/frame_selection.cc +++ b/third_party/blink/renderer/core/editing/frame_selection.cc
@@ -268,7 +268,7 @@ is_directional_ = options.IsDirectional(); should_shrink_next_tap_ = options.ShouldShrinkNextTap(); is_handle_visible_ = should_show_handle; - ScheduleVisualUpdateForVisualOverflowIfNeeded(); + ScheduleVisualUpdateForPaintInvalidationIfNeeded(); frame_->GetEditor().RespondToChangedSelection(); DCHECK_EQ(current_document, GetDocument()); @@ -476,7 +476,7 @@ if (set_selection_by == SetSelectionBy::kUser) granularity_ = TextGranularity::kCharacter; - ScheduleVisualUpdateForVisualOverflowIfNeeded(); + ScheduleVisualUpdateForPaintInvalidationIfNeeded(); return true; } @@ -1165,9 +1165,9 @@ page->Animator().ScheduleVisualUpdate(&frame_->LocalFrameRoot()); } -void FrameSelection::ScheduleVisualUpdateForVisualOverflowIfNeeded() const { +void FrameSelection::ScheduleVisualUpdateForPaintInvalidationIfNeeded() const { if (LocalFrameView* frame_view = frame_->View()) - frame_view->ScheduleVisualUpdateForVisualOverflowIfNeeded(); + frame_view->ScheduleVisualUpdateForPaintInvalidationIfNeeded(); } bool FrameSelection::SelectWordAroundCaret() {
diff --git a/third_party/blink/renderer/core/editing/frame_selection.h b/third_party/blink/renderer/core/editing/frame_selection.h index c2dccc7..af2a589 100644 --- a/third_party/blink/renderer/core/editing/frame_selection.h +++ b/third_party/blink/renderer/core/editing/frame_selection.h
@@ -226,7 +226,7 @@ void CommitAppearanceIfNeeded(); void SetCaretEnabled(bool caret_is_visible); void ScheduleVisualUpdate() const; - void ScheduleVisualUpdateForVisualOverflowIfNeeded() const; + void ScheduleVisualUpdateForPaintInvalidationIfNeeded() const; // Paint invalidation methods delegating to FrameCaret. void LayoutBlockWillBeDestroyed(const LayoutBlock&);
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 50ea9cb..7a2797f 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2550,8 +2550,8 @@ } } - frame_view.GetLayoutView()->CommitPendingSelection(); frame_view.GetLayoutView()->Layer()->UpdateDescendantDependentFlags(); + frame_view.GetLayoutView()->CommitPendingSelection(); }); #if DCHECK_IS_ON() SetIsUpdatingDescendantDependentFlags(false);
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc b/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc index 0ad721d9..620c9a14 100644 --- a/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc +++ b/third_party/blink/renderer/core/intersection_observer/intersection_geometry.cc
@@ -675,7 +675,7 @@ intersection_rect.Move(scroll_offset); unclipped_intersection_rect.Move(scroll_offset); } - LayoutRect root_clip_rect = root_rect.ToLayoutRect(); + DeprecatedLayoutRect root_clip_rect = root_rect.ToLayoutRect(); // TODO(szager): This flipping seems incorrect because root_rect is // already physical. local_ancestor->DeprecatedFlipForWritingMode(root_clip_rect);
diff --git a/third_party/blink/renderer/core/layout/geometry/logical_rect.h b/third_party/blink/renderer/core/layout/geometry/logical_rect.h index 60006d779..e9c6e40 100644 --- a/third_party/blink/renderer/core/layout/geometry/logical_rect.h +++ b/third_party/blink/renderer/core/layout/geometry/logical_rect.h
@@ -12,8 +12,6 @@ namespace blink { -class LayoutRect; - // LogicalRect is the position and size of a rect (typically a fragment) // relative to the parent in the logical coordinate system. // For more information about physical and logical coordinate systems, see: @@ -39,12 +37,11 @@ int block_offset, int inline_size, int block_size); - - constexpr explicit LogicalRect(const LayoutRect& source) + constexpr explicit LogicalRect(const DeprecatedLayoutRect& source) : LogicalRect({source.X(), source.Y()}, {source.Width(), source.Height()}) {} - constexpr LayoutRect ToLayoutRect() const { + constexpr DeprecatedLayoutRect ToLayoutRect() const { return {offset.inline_offset, offset.block_offset, size.inline_size, size.block_size}; }
diff --git a/third_party/blink/renderer/core/layout/geometry/physical_rect.h b/third_party/blink/renderer/core/layout/geometry/physical_rect.h index 48e36784..907cca6 100644 --- a/third_party/blink/renderer/core/layout/geometry/physical_rect.h +++ b/third_party/blink/renderer/core/layout/geometry/physical_rect.h
@@ -176,10 +176,11 @@ // Conversions from/to existing code. New code prefers type safety for // logical/physical distinctions. - constexpr explicit PhysicalRect(const LayoutRect& r) + constexpr explicit PhysicalRect(const DeprecatedLayoutRect& r) : offset(r.X(), r.Y()), size(r.Width(), r.Height()) {} - constexpr LayoutRect ToLayoutRect() const { - return LayoutRect(offset.left, offset.top, size.width, size.height); + constexpr DeprecatedLayoutRect ToLayoutRect() const { + return DeprecatedLayoutRect(offset.left, offset.top, size.width, + size.height); } constexpr explicit operator gfx::RectF() const {
diff --git a/third_party/blink/renderer/core/layout/layout_block.cc b/third_party/blink/renderer/core/layout/layout_block.cc index 148bd693..a7064bd 100644 --- a/third_party/blink/renderer/core/layout/layout_block.cc +++ b/third_party/blink/renderer/core/layout/layout_block.cc
@@ -693,7 +693,7 @@ } return CreateWritingModeConverter().ToPhysical(caret_rect); } - LayoutRect caret_rect; + DeprecatedLayoutRect caret_rect; if (is_horizontal) { caret_rect = LocalCaretRectForEmptyElement(Size().width, TextIndentOffset());
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index bf8f4b4..28d2819 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -130,7 +130,7 @@ static const unsigned kBackgroundObscurationTestMaxDepth = 4; struct SameSizeAsLayoutBox : public LayoutBoxModelObject { - LayoutRect frame_rect; + DeprecatedLayoutRect frame_rect; PhysicalSize previous_size; NGPhysicalBoxStrut margin_box_outsets; MinMaxSizes intrinsic_logical_widths;
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h index 975aa97a..3e570e2 100644 --- a/third_party/blink/renderer/core/layout/layout_box.h +++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -1061,7 +1061,7 @@ // Inherit other flipping methods from LayoutObject. using LayoutObject::FlipForWritingMode; - void DeprecatedFlipForWritingMode(LayoutRect& rect) const { + void DeprecatedFlipForWritingMode(DeprecatedLayoutRect& rect) const { NOT_DESTROYED(); if (LIKELY(!HasFlippedBlocksWritingMode())) return;
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 6580aaa..72049403 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
@@ -754,7 +754,7 @@ return ContainingBlock()->AvailableLogicalWidth(); } -LayoutRect LayoutBoxModelObject::LocalCaretRectForEmptyElement( +DeprecatedLayoutRect LayoutBoxModelObject::LocalCaretRectForEmptyElement( LayoutUnit width, LayoutUnit text_indent_offset) const { NOT_DESTROYED(); @@ -836,12 +836,12 @@ if (RuntimeEnabledFeatures::EmptyCaretInVerticalEnabled()) { LayoutUnit block_start = border_padding.block_start + (vertical_space / 2); // Returns a logical box. - return LayoutRect(x, block_start, caret_width, height); + return DeprecatedLayoutRect(x, block_start, caret_width, height); } LayoutUnit y = PaddingTop() + BorderTop() + (vertical_space / 2); return current_style.IsHorizontalWritingMode() - ? LayoutRect(x, y, caret_width, height) - : LayoutRect(y, x, height, caret_width); + ? DeprecatedLayoutRect(x, y, caret_width, height) + : DeprecatedLayoutRect(y, x, height, caret_width); } void LayoutBoxModelObject::MoveChildTo(
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 7549cf6..b8ab794 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
@@ -411,8 +411,9 @@ // This returns a logical rectangle. // TODO(crbug.com/1229581): Change it to LogicalRect. - LayoutRect LocalCaretRectForEmptyElement(LayoutUnit width, - LayoutUnit text_indent_offset) const; + DeprecatedLayoutRect LocalCaretRectForEmptyElement( + LayoutUnit width, + LayoutUnit text_indent_offset) const; void AddOutlineRectsForDescendant(const LayoutObject& descendant, OutlineRectCollector&,
diff --git a/third_party/blink/renderer/core/layout/layout_inline.cc b/third_party/blink/renderer/core/layout/layout_inline.cc index 1a7fc59..0a5842a7 100644 --- a/third_party/blink/renderer/core/layout/layout_inline.cc +++ b/third_party/blink/renderer/core/layout/layout_inline.cc
@@ -272,7 +272,7 @@ LayoutUnit inline_size = RuntimeEnabledFeatures::EmptyCaretInVerticalEnabled() ? BorderAndPaddingLogicalWidth() : BorderAndPaddingWidth(); - LayoutRect caret_rect = + DeprecatedLayoutRect caret_rect = LocalCaretRectForEmptyElement(inline_size, LayoutUnit()); if (IsInLayoutNGInlineFormattingContext()) {
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc index 3792140..90cead2 100644 --- a/third_party/blink/renderer/core/layout/layout_object.cc +++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -4561,9 +4561,6 @@ NOT_DESTROYED(); bitfields_.SetShouldInvalidateSelection(true); SetShouldCheckForPaintInvalidation(); - if (GetSelectionStyle()) { - InvalidateVisualOverflow(); - } } void LayoutObject::SetShouldDoFullPaintInvalidation(
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h index 7a590a59..3e5207ea 100644 --- a/third_party/blink/renderer/core/layout/layout_object.h +++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -1469,7 +1469,7 @@ // For non-boxes, for better performance, the caller can prepare // |block_for_flipping| (= ContainingBlock()) if it will loop through many // rects/points to flip to avoid the cost of repeated ContainingBlock() calls. - [[nodiscard]] LayoutRect FlipForWritingMode( + [[nodiscard]] DeprecatedLayoutRect FlipForWritingMode( const PhysicalRect& r, const LayoutBox* box_for_flipping = nullptr) const { NOT_DESTROYED(); @@ -1479,7 +1479,7 @@ r.Y(), r.Width(), r.Height()}; } [[nodiscard]] PhysicalRect FlipForWritingMode( - const LayoutRect& r, + const DeprecatedLayoutRect& r, const LayoutBox* box_for_flipping = nullptr) const { NOT_DESTROYED(); if (LIKELY(!HasFlippedBlocksWritingMode()))
diff --git a/third_party/blink/renderer/core/layout/layout_text.cc b/third_party/blink/renderer/core/layout/layout_text.cc index 65653496..cabb712 100644 --- a/third_party/blink/renderer/core/layout/layout_text.cc +++ b/third_party/blink/renderer/core/layout/layout_text.cc
@@ -662,7 +662,7 @@ UNLIKELY(HasFlippedBlocksWritingMode()) ? ContainingBlock() : nullptr; CollectLineBoxRects( [this, &result, block_for_flipping](const PhysicalRect& r) { - LayoutRect rect = FlipForWritingMode(r, block_for_flipping); + DeprecatedLayoutRect rect = FlipForWritingMode(r, block_for_flipping); result.Union(gfx::RectF(rect)); }, kClipToEllipsis); @@ -1133,7 +1133,7 @@ const unsigned start_pos = selection_status.start; const unsigned end_pos = selection_status.end; DCHECK_LE(start_pos, end_pos); - LayoutRect rect; + DeprecatedLayoutRect rect; return FlipForWritingMode(rect); }
diff --git a/third_party/blink/renderer/core/layout/layout_text_combine.cc b/third_party/blink/renderer/core/layout/layout_text_combine.cc index f394736e..2c2564a 100644 --- a/third_party/blink/renderer/core/layout/layout_text_combine.cc +++ b/third_party/blink/renderer/core/layout/layout_text_combine.cc
@@ -14,6 +14,7 @@ #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node_data.h" #include "third_party/blink/renderer/core/layout/ng/ng_ink_overflow.h" #include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/ng/ng_inline_paint_context.h" #include "third_party/blink/renderer/platform/fonts/font.h" #include "third_party/blink/renderer/platform/fonts/font_description.h" @@ -207,20 +208,16 @@ return scale_x_.has_value() || UsingSyntheticOblique(); } -PhysicalRect LayoutTextCombine::ComputeTextFrameRect( +LineRelativeRect LayoutTextCombine::ComputeTextFrameRect( const PhysicalOffset paint_offset) const { const ComputedStyle& style = Parent()->StyleRef(); DCHECK(style.GetFont().GetFontDescription().IsVerticalBaseline()); - // Because we rotate the GraphicsContext to match the logical direction, - // transpose the |text_frame_rect| to match to it. - // See also |NGTextFragmentPainter::Paint()| const LayoutUnit one_em = style.ComputedFontSizeAsFixed(); const FontHeight text_metrics = style.GetFontHeight(); const LayoutUnit line_height = text_metrics.LineHeight(); - return PhysicalRect(PhysicalOffset(LayoutUnit(paint_offset.left), - LayoutUnit(paint_offset.top)), - PhysicalSize(one_em, line_height)); + return {LineRelativeOffset::CreateFromBoxOrigin(paint_offset), + LogicalSize(one_em, line_height)}; } PhysicalRect LayoutTextCombine::RecalcContentsInkOverflow( @@ -228,8 +225,16 @@ const ComputedStyle& style = Parent()->StyleRef(); DCHECK(style.GetFont().GetFontDescription().IsVerticalBaseline()); - // Note: |text_rect| and |ink_overflow| are in logical direction. - const PhysicalRect text_rect = ComputeTextFrameRect(PhysicalOffset()); + const LineRelativeRect line_relative_text_rect = + ComputeTextFrameRect(PhysicalOffset()); + + // Note: |text_rect| and |ink_overflow| are both in logical direction. + // It is unusual for a PhysicalRect to be in a logical direction, typically + // a LineRelativeRect will be used instead, but the TextCombine case + // requires it. + const PhysicalRect text_rect{ + PhysicalOffset(), PhysicalSize{line_relative_text_rect.size.inline_size, + line_relative_text_rect.size.block_size}}; LogicalRect ink_overflow(text_rect.offset.left, text_rect.offset.top, text_rect.size.width, text_rect.size.height);
diff --git a/third_party/blink/renderer/core/layout/layout_text_combine.h b/third_party/blink/renderer/core/layout/layout_text_combine.h index 680dfd6..89cb1b4 100644 --- a/third_party/blink/renderer/core/layout/layout_text_combine.h +++ b/third_party/blink/renderer/core/layout/layout_text_combine.h
@@ -8,6 +8,7 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/ng/layout_ng_block_flow.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" namespace blink { @@ -87,7 +88,8 @@ bool NeedsAffineTransformInPaint() const; // Returns text frame rect, in logical direction, used with text painters. - PhysicalRect ComputeTextFrameRect(const PhysicalOffset paint_offset) const; + LineRelativeRect ComputeTextFrameRect( + const PhysicalOffset paint_offset) const; // Returns visual rect for painting emphasis mark and text decoration for // |NGBoxFragmentPainter|.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_ink_overflow.cc b/third_party/blink/renderer/core/layout/ng/ng_ink_overflow.cc index ec1c0d4..6878cfa 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_ink_overflow.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_ink_overflow.cc
@@ -548,17 +548,6 @@ style, scaled_font, container_offset, ink_overflow, inline_context); } - // Text decorations due to selection - if (UNLIKELY(cursor.Current().GetLayoutObject()->IsSelected())) { - const ComputedStyle* selection_style = style.HighlightData().Selection(); - if (selection_style && selection_style->HasAppliedTextDecorations()) { - LogicalRect selection_bound = ComputeAppliedDecorationOverflow( - *selection_style, scaled_font, container_offset, ink_overflow, - inline_context); - accumulated_bound.Unite(selection_bound); - } - } - bool do_highlights = RuntimeEnabledFeatures::HighlightOverlayPaintingEnabled(); bool do_spelling_grammar = @@ -635,7 +624,8 @@ // so use it as a proxy for determining minimum thickness. const MinimumThickness1 kMinimumThicknessIsOne(!decoration_override); TextDecorationInfo decoration_info( - offset_in_container, ink_overflow.size.inline_size, style, inline_context, + LineRelativeOffset::CreateFromBoxOrigin(offset_in_container), + ink_overflow.size.inline_size, style, inline_context, /* selection_text_decoration */ absl::nullopt, decoration_override, &scaled_font, kMinimumThicknessIsOne); NGTextDecorationOffset decoration_offset(style);
diff --git a/third_party/blink/renderer/core/layout/shapes/shape.cc b/third_party/blink/renderer/core/layout/shapes/shape.cc index 57640e0..d5d99b39 100644 --- a/third_party/blink/renderer/core/layout/shapes/shape.cc +++ b/third_party/blink/renderer/core/layout/shapes/shape.cc
@@ -313,8 +313,8 @@ std::unique_ptr<Shape> Shape::CreateRasterShape( Image* image, float threshold, - const LayoutRect& image_r, - const LayoutRect& margin_r, + const DeprecatedLayoutRect& image_r, + const DeprecatedLayoutRect& margin_r, WritingMode writing_mode, float margin, RespectImageOrientationEnum respect_orientation) {
diff --git a/third_party/blink/renderer/core/layout/shapes/shape.h b/third_party/blink/renderer/core/layout/shapes/shape.h index 33712b4..f7db24a9 100644 --- a/third_party/blink/renderer/core/layout/shapes/shape.h +++ b/third_party/blink/renderer/core/layout/shapes/shape.h
@@ -82,13 +82,14 @@ const LogicalSize& logical_box_size, WritingMode, float margin); - static std::unique_ptr<Shape> CreateRasterShape(Image*, - float threshold, - const LayoutRect& image_rect, - const LayoutRect& margin_rect, - WritingMode, - float margin, - RespectImageOrientationEnum); + static std::unique_ptr<Shape> CreateRasterShape( + Image*, + float threshold, + const DeprecatedLayoutRect& image_rect, + const DeprecatedLayoutRect& margin_rect, + WritingMode, + float margin, + RespectImageOrientationEnum); static std::unique_ptr<Shape> CreateLayoutBoxShape(const FloatRoundedRect&, WritingMode, float margin);
diff --git a/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc b/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc index 97e8988c..f61bf35 100644 --- a/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc +++ b/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc
@@ -183,11 +183,12 @@ const LogicalRect& margin_rect = GetShapeImageMarginRect(*layout_box_, reference_box_logical_size_); - const LayoutRect& image_rect = (layout_box_->IsLayoutImage()) - ? To<LayoutImage>(layout_box_.Get()) - ->ReplacedContentRect() - .ToLayoutRect() - : LayoutRect(LayoutPoint(), image_size); + const DeprecatedLayoutRect& image_rect = + (layout_box_->IsLayoutImage()) + ? To<LayoutImage>(layout_box_.Get()) + ->ReplacedContentRect() + .ToLayoutRect() + : DeprecatedLayoutRect(LayoutPoint(), image_size); scoped_refptr<Image> image = style_image->GetImage(*layout_box_, layout_box_->GetDocument(),
diff --git a/third_party/blink/renderer/core/paint/build.gni b/third_party/blink/renderer/core/paint/build.gni index 89a33fe..0b022cc 100644 --- a/third_party/blink/renderer/core/paint/build.gni +++ b/third_party/blink/renderer/core/paint/build.gni
@@ -56,6 +56,7 @@ "fragment_data_iterator.h", "frame_painter.cc", "frame_painter.h", + "line_relative_rect.h", "hit_testing_transform_state.cc", "hit_testing_transform_state.h", "html_canvas_painter.cc", @@ -232,6 +233,7 @@ "fragment_data_test.cc", "html_canvas_painter_test.cc", "image_painter_test.cc", + "line_relative_rect_test.cc", "link_highlight_impl_test.cc", "ng/ng_box_fragment_painter_test.cc", "ng/ng_highlight_overlay_test.cc",
diff --git a/third_party/blink/renderer/core/paint/document_marker_painter.cc b/third_party/blink/renderer/core/paint/document_marker_painter.cc index 2e1f7e2..fe95a51 100644 --- a/third_party/blink/renderer/core/paint/document_marker_painter.cc +++ b/third_party/blink/renderer/core/paint/document_marker_painter.cc
@@ -11,6 +11,7 @@ #include "third_party/blink/renderer/core/highlight/highlight_style_utils.h" #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" #include "third_party/blink/renderer/core/layout/layout_theme.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/paint_auto_dark_mode.h" #include "third_party/blink/renderer/core/paint/paint_info.h" #include "third_party/blink/renderer/core/paint/text_paint_style.h" @@ -140,12 +141,12 @@ const StyleableMarker& marker, const ComputedStyle& style, const Document& document, - const gfx::RectF& marker_rect, + const LineRelativeRect& marker_rect, LayoutUnit logical_height, bool in_dark_mode) { // start of line to draw, relative to box_origin.X() - LayoutUnit start = LayoutUnit(marker_rect.x()); - LayoutUnit width = LayoutUnit(marker_rect.width()); + LayoutUnit start = LayoutUnit(marker_rect.LineLeft()); + LayoutUnit width = LayoutUnit(marker_rect.InlineSize()); // We need to have some space between underlines of subsequent clauses, // because some input methods do not use different underline styles for those. @@ -224,7 +225,7 @@ const PhysicalOffset& box_origin, const ComputedStyle& style, DocumentMarker::MarkerType marker_type, - const PhysicalRect& local_rect, + const LineRelativeRect& local_rect, absl::optional<Color> custom_marker_color) { // IMPORTANT: The misspelling underline is not considered when calculating the // text bounds, so we have to make sure to fit within those bounds. This @@ -240,13 +241,13 @@ const SimpleFontData* font_data = style.GetFont().PrimaryFont(); DCHECK(font_data); int baseline = font_data->GetFontMetrics().Ascent(); - int available_height = (local_rect.Height() - baseline).ToInt(); + int available_height = (local_rect.BlockSize() - baseline).ToInt(); int underline_offset; if (available_height <= line_thickness + 2 * zoom) { // Place the underline at the very bottom of the text in small/medium fonts. // The underline will overlap with the bottom of the text if // available_height is smaller than line_thickness. - underline_offset = (local_rect.Height() - line_thickness).ToInt(); + underline_offset = (local_rect.BlockSize() - line_thickness).ToInt(); } else { // In larger fonts, though, place the underline up near the baseline to // prevent a big gap. @@ -267,10 +268,11 @@ ? spelling_marker : grammar_marker; - DrawDocumentMarker(paint_info.context, - gfx::PointF((box_origin.left + local_rect.X()).ToFloat(), - (box_origin.top + underline_offset).ToFloat()), - local_rect.Width().ToFloat(), zoom, marker); + DrawDocumentMarker( + paint_info.context, + gfx::PointF((box_origin.left + local_rect.LineLeft()).ToFloat(), + (box_origin.top + underline_offset).ToFloat()), + local_rect.InlineSize().ToFloat(), zoom, marker); } TextPaintStyle DocumentMarkerPainter::ComputeTextPaintStyleFrom(
diff --git a/third_party/blink/renderer/core/paint/document_marker_painter.h b/third_party/blink/renderer/core/paint/document_marker_painter.h index 9586c7f..516e105 100644 --- a/third_party/blink/renderer/core/paint/document_marker_painter.h +++ b/third_party/blink/renderer/core/paint/document_marker_painter.h
@@ -9,10 +9,6 @@ #include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h" -namespace gfx { -class RectF; -} - namespace blink { class ComputedStyle; @@ -21,9 +17,9 @@ class LayoutUnit; class Node; class StyleableMarker; +struct LineRelativeRect; struct PaintInfo; struct PhysicalOffset; -struct PhysicalRect; struct TextPaintStyle; // Document marker painter for both LayoutNG and legacy layout. @@ -38,7 +34,7 @@ const StyleableMarker& marker, const ComputedStyle& style, const Document& document, - const gfx::RectF& marker_rect, + const LineRelativeRect& marker_rect, LayoutUnit logical_height, bool in_dark_mode); static void PaintDocumentMarker( @@ -46,7 +42,7 @@ const PhysicalOffset& box_origin, const ComputedStyle& style, DocumentMarker::MarkerType marker_type, - const PhysicalRect& local_rect, + const LineRelativeRect& local_rect, absl::optional<Color> custom_marker_color = absl::nullopt); static TextPaintStyle ComputeTextPaintStyleFrom(const Document& document, Node* node,
diff --git a/third_party/blink/renderer/core/paint/line_relative_rect.h b/third_party/blink/renderer/core/paint/line_relative_rect.h new file mode 100644 index 0000000..02fac7c --- /dev/null +++ b/third_party/blink/renderer/core/paint/line_relative_rect.h
@@ -0,0 +1,240 @@ +// 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 THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_LINE_RELATIVE_RECT_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_LINE_RELATIVE_RECT_H_ + +#include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/layout/geometry/logical_size.h" +#include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" +#include "third_party/blink/renderer/core/layout/geometry/physical_size.h" +#include "third_party/blink/renderer/platform/geometry/layout_unit.h" +#include "third_party/blink/renderer/platform/transforms/affine_transform.h" +#include "ui/gfx/geometry/rect_f.h" + +namespace blink { + +// Type-safe geometry for line-relative coordinate spaces. +// +// When painting text fragments in a vertical writing mode (where ‘writing-mode’ +// is vertical or sideways), we rotate the canvas into a line-relative +// coordinate space, where +x is line-right and +y is line-under. +// +// Paint ops done while rotated (like text and text decorations) need +// coordinates in this rotated space, but ops done outside of these rotations +// (like selection backgrounds) need coordinates in the original physical space. +// +// Note that the bi-orientational transform for upright typesetting (see +// ‘text-orientation’) is handled by the lower-level text painting code with a +// nested rotation (CanvasRotationInVertical), which can be ignored at the +// painter level. + +// 2D point or vector in line-relative space (physical space rotated for +// ‘writing-mode’), like gfx::PointF or gfx::Vector2dF but in fixed-point +// coordinates (LayoutUnit). +struct CORE_EXPORT LineRelativeOffset { + LayoutUnit line_left; + LayoutUnit line_over; + + LineRelativeOffset(LayoutUnit line_left, LayoutUnit line_over) + : line_left(line_left), line_over(line_over) {} + + // Map a physical offset of a line box to line-relative space, by reusing the + // offset coordinates (physical top-left). Line-relative space is defined such + // that the origin of the line box is the same in both the line relative + // coordinate system and the physical coordinate system, regardless of the + // writing flow. + static LineRelativeOffset CreateFromBoxOrigin(const PhysicalOffset& origin) { + return {origin.left, origin.top}; + } + + constexpr explicit operator gfx::PointF() const { + return {line_left, line_over}; + } + LineRelativeOffset operator+(const LineRelativeOffset& other) const { + return {line_left + other.line_left, line_over + other.line_over}; + } +}; + +// TODO(crbug.com/962299): These functions should upgraded to force correct +// pixel snapping in a type-safe way. +inline gfx::Point ToRoundedPoint(const LineRelativeOffset& o) { + return {o.line_left.Round(), o.line_over.Round()}; +} + +// 2D rect in line-relative space (physical space rotated for ‘writing-mode’), +// like gfx::RectF but in fixed-point coordinates (LayoutUnit). +struct CORE_EXPORT LineRelativeRect { + LineRelativeOffset offset; + LogicalSize size; + + static LineRelativeRect EnclosingRect(const gfx::RectF& rect) { + LineRelativeOffset offset{LayoutUnit::FromFloatFloor(rect.x()), + LayoutUnit::FromFloatFloor(rect.y())}; + LogicalSize size{ + LayoutUnit::FromFloatCeil(rect.right()) - offset.line_left, + LayoutUnit::FromFloatCeil(rect.bottom()) - offset.line_over}; + return {offset, size}; + } + + // Map a physical rect line box to line-relative space, by reusing the offset + // coordinates and (if not horizontal) swapping width and height. + // + // To explain why this shortcut is correct (for the line box only: during + // paint ops, the line box is specifically rotated such that the top left + // corner of the box before and after rotation has the same x, y coordinate): + // When the direction is clockwise (kVertical* and kSidewaysRl), the + // line-left-under (line-right-over) corner moves to the top-left corner [A], + // while the line-left-over corner moves to the top-right (bottom-left) corner + // [B]. + // + // In both cases, the rotation is around some arbitrary third point [C], but + // the coordinates of [B] in rotated space are the same as the coordinates of + // [A] in physical space, which means that the line box can be mapped between + // these spaces by swapping width and height only. + // + // clockwise counter-clockwise + // + // [A] ooooo [B] [A] °o o° + // O° °O °O° + // oooOOoooOO °°°°°°°°°° + // [C] + // o°°°°°° o o + // °o O O + // °°°°°°° °OoooO° + // o o O + // OoooooO o ° O°°°°°O [C] + // O ° ° + // ooooooo + // oO°°°Oo °o + // O O oooooo° + // ° ° + // oooooooooo OO°°°OO°°° + // oOo Oo oO + // o° °o [B] °°°°° + // + static LineRelativeRect CreateFromLineBox(const PhysicalRect& rect, + bool is_horizontal) { + return {LineRelativeOffset::CreateFromBoxOrigin(rect.offset), + LogicalSize{is_horizontal ? rect.size.width : rect.size.height, + is_horizontal ? rect.size.height : rect.size.width}}; + } + + // Map a physical rect that may be line box or contained text fragment + // to line-relative space, by mapping it through the inverse of the given + // rotation matrix (see ComputeRelativeToPhysicalTransform). + static LineRelativeRect Create( + const PhysicalRect& rect, + const absl::optional<AffineTransform>& rotation) { + if (!rotation || rotation == AffineTransform()) { + return {{rect.offset.left, rect.offset.top}, + {rect.size.width, rect.size.height}}; + } + return EnclosingRect(rotation->Inverse().MapRect(gfx::RectF{rect})); + } + + constexpr explicit operator gfx::RectF() const { + return {offset.line_left, offset.line_over, size.inline_size, + size.block_size}; + } + LineRelativeRect operator+(const LineRelativeOffset& other) const { + return {offset + other, size}; + } + + constexpr LayoutUnit LineLeft() const { return offset.line_left; } + constexpr LayoutUnit LineOver() const { return offset.line_over; } + constexpr LayoutUnit InlineSize() const { return size.inline_size; } + constexpr LayoutUnit BlockSize() const { return size.block_size; } + + void Move(const LineRelativeOffset& other) { + offset.line_left += other.line_left; + offset.line_over += other.line_over; + } + + // TODO(crbug.com/962299): These functions should upgraded to force correct + // pixel snapping in a type-safe way. + gfx::Point PixelSnappedOffset() const { return ToRoundedPoint(offset); } + int PixelSnappedInlineSize() const { + return SnapSizeToPixel(size.inline_size, offset.line_left); + } + int PixelSnappedBlockSize() const { + return SnapSizeToPixel(size.block_size, offset.line_over); + } + gfx::Size PixelSnappedSize() const { + return {PixelSnappedInlineSize(), PixelSnappedBlockSize()}; + } + + // Returns the transformation that would rotate the canvas in the appropriate + // direction for a vertical writing mode, while keeping the physical top-left + // corner of the given line box in the same place (changing the coordinate + // while keeping the box in the same place on the page). + AffineTransform ComputeRelativeToPhysicalTransform( + WritingMode writing_mode) const { + if (writing_mode == WritingMode::kHorizontalTb) { + return AffineTransform(); + } + + // Constructing the matrix: consider the kVertical* case. + // + // kVerticalRl + // kVerticalLr + // kSidewaysRl kSidewaysLr + // + // [A] ooooo [A] °o o° + // O° °O °O° + // oooOOoooOO °°°°°°°°°° + // + // o°°°°°° o o + // °o O O + // °°°°°°° °OoooO° + // o o O + // OoooooO o ° O°°°°°O + // O ° ° + // ooooooo + // oO°°°Oo °o + // O O oooooo° + // ° ° + // oooooooooo OO°°°OO°°° + // oOo Oo oO + // o° °o °°°°° + // + // For kVerticalRl, the line relative coordinate system has the inline + // direction running down the page and the block direction running left on + // the page. The physical space has x running right on the page and y + // running down. To align the inline direction with x and the block + // direction with y, we need the rotation of: + // 0 -1 + // 1 0 + // rotates the inline directions to physical directions. + // The point A is at [x,y] in the physical coordinate system, and + // [x, y + height] in the line relative space. Note that height is + // the block direction in line relative space, and the given rect is + // already line relative. + // When [x, y + height] is rotated by the matrix above, a translation of + // [x + y + height, y - x] is required to place it at [x,y]. + // + // For the sideways cases, the rotation is + // 0 1 + // -1 0 + // A is at [x,y] in physical and [x + width, y] in the line relative space. + + return writing_mode != WritingMode::kSidewaysLr + ? AffineTransform(0, 1, -1, 0, + LineLeft() + LineOver() + BlockSize(), + LineOver() - LineLeft()) + : AffineTransform(0, -1, 1, 0, LineLeft() - LineOver(), + LineLeft() + LineOver() + InlineSize()); + } +}; + +// TODO(crbug.com/962299): These functions should upgraded to force correct +// pixel snapping in a type-safe way. +inline gfx::Rect ToPixelSnappedRect(const LineRelativeRect& r) { + return {r.PixelSnappedOffset(), r.PixelSnappedSize()}; +} + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_LINE_RELATIVE_RECT_H_
diff --git a/third_party/blink/renderer/core/paint/line_relative_rect_test.cc b/third_party/blink/renderer/core/paint/line_relative_rect_test.cc new file mode 100644 index 0000000..991069b --- /dev/null +++ b/third_party/blink/renderer/core/paint/line_relative_rect_test.cc
@@ -0,0 +1,193 @@ +// 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 "third_party/blink/renderer/core/paint/line_relative_rect.h" +#include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" + +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" + +namespace blink { + +class LineRelativeRectTest : public testing::Test {}; + +TEST(LineRelativeRectTest, EnclosingRect) { + gfx::RectF r(1000, 10000, 10, 100); + LineRelativeRect lor = LineRelativeRect::EnclosingRect(r); + EXPECT_EQ(lor.offset.line_left, 1000) << "offset X"; + EXPECT_EQ(lor.offset.line_over, 10000) << "offset Y"; + EXPECT_EQ(lor.size.inline_size, 10) << "inline size"; + EXPECT_EQ(lor.size.block_size, 100) << "block size"; + + // All values are clamped to 1/64, enclosing the rect. + gfx::RectF r2(1000.005625, 10000.005625, 10.005625, 100.005625); + LineRelativeRect lor2 = LineRelativeRect::EnclosingRect(r2); + EXPECT_EQ(lor2.offset.line_left, 1000) << "offset X clamped to 0"; + EXPECT_EQ(lor2.offset.line_over, 10000) << "offset Y clamped to 0"; + EXPECT_EQ(lor2.size.inline_size, LayoutUnit(10.015625)) + << "inline size clamped to 20 and 1/64"; + EXPECT_EQ(lor2.size.block_size, LayoutUnit(100.015625)) + << "block size clamped to 30 and 1/64"; +} + +TEST(LineRelativeRectTest, CreateFromLineBox) { + PhysicalRect r(1000, 10000, 10, 100); + LineRelativeRect lor = LineRelativeRect::CreateFromLineBox(r, true); + EXPECT_EQ(lor.offset.line_left, 1000) << "offset X, no rotation"; + EXPECT_EQ(lor.offset.line_over, 10000) << "offset Y, no rotation"; + EXPECT_EQ(lor.size.inline_size, 10) << "inline size, no rotation"; + EXPECT_EQ(lor.size.block_size, 100) << "block size, no rotation"; + + LineRelativeRect lor_veritcal = LineRelativeRect::CreateFromLineBox(r, false); + EXPECT_EQ(lor_veritcal.offset.line_left, 1000) << "offset X, with rotation"; + EXPECT_EQ(lor_veritcal.offset.line_over, 10000) << "offset Y, with rotation"; + EXPECT_EQ(lor_veritcal.size.inline_size, 100) << "inline size, with rotation"; + EXPECT_EQ(lor_veritcal.size.block_size, 10) << "block size, with rotation"; +} + +TEST(LineRelativeRectTest, ComputeRelativeToPhysicalTransformAtOrigin) { + LineRelativeRect r_origin = {{LayoutUnit(), LayoutUnit()}, + {LayoutUnit(20), LayoutUnit(30)}}; + + WritingMode writing_mode = WritingMode::kHorizontalTb; + absl::optional<AffineTransform> rotation = + r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform()); + + writing_mode = WritingMode::kVerticalRl; + rotation = r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform(0, 1, -1, 0, 30, 0)) << "kVerticalRl"; + + writing_mode = WritingMode::kSidewaysLr; + rotation = r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform(0, -1, 1, 0, 0, 20)) << "kSidewaysLr"; +} + +TEST(LineRelativeRectTest, ComputeRelativeToPhysicalTransformNotAtOrigin) { + LineRelativeRect r_origin = {{LayoutUnit(1000), LayoutUnit(10000)}, + {LayoutUnit(10), LayoutUnit(100)}}; + + WritingMode writing_mode = WritingMode::kHorizontalTb; + absl::optional<AffineTransform> rotation = + r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform()); + + writing_mode = WritingMode::kVerticalRl; + rotation = r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform(0, 1, -1, 0, 11100, 9000)) + << "kVerticalRl"; + + writing_mode = WritingMode::kSidewaysLr; + rotation = r_origin.ComputeRelativeToPhysicalTransform(writing_mode); + EXPECT_EQ(rotation, AffineTransform(0, -1, 1, 0, -9000, 11010)) + << "kSidewaysLr"; +} + +TEST(LineRelativeRectTest, Create_kHorizontalTB) { + PhysicalRect r(1000, 10000, 10, 100); + + const WritingMode writing_mode = WritingMode::kHorizontalTb; + const bool is_horizontal = IsHorizontalWritingMode(writing_mode); + + const LineRelativeRect rotated_box = + LineRelativeRect::CreateFromLineBox(r, is_horizontal); + absl::optional<AffineTransform> rotation = + rotated_box.ComputeRelativeToPhysicalTransform(writing_mode); + + EXPECT_EQ(rotation, AffineTransform()); + + // First half of original box r + PhysicalRect highlight(1000, 10000, 5, 100); + LineRelativeRect rotated = LineRelativeRect::Create(highlight, rotation); + EXPECT_EQ(rotated.offset.line_left, 1000) << "first half x, no rotation"; + EXPECT_EQ(rotated.offset.line_over, 10000) << "first half y, no rotation"; + EXPECT_EQ(rotated.size.inline_size, 5) + << "first half inline_size, no rotation"; + EXPECT_EQ(rotated.size.block_size, 100) + << "first half block_size, no rotation"; + + // Second half of original box r + PhysicalRect highlight2(1005, 10000, 5, 100); + LineRelativeRect rotated2 = LineRelativeRect::Create(highlight2, rotation); + EXPECT_EQ(rotated2.offset.line_left, 1005) << "second half x, no rotation"; + EXPECT_EQ(rotated2.offset.line_over, 10000) << "second half y, no rotation"; + EXPECT_EQ(rotated2.size.inline_size, 5) + << "second half inline_size, no rotation"; + EXPECT_EQ(rotated2.size.block_size, 100) + << "second half block_size, no rotation"; +} + +TEST(LineRelativeRectTest, Create_kSidewaysLr) { + PhysicalRect r(1000, 10000, 10, 100); + + const WritingMode writing_mode = WritingMode::kSidewaysLr; + const bool is_horizontal = IsHorizontalWritingMode(writing_mode); + EXPECT_FALSE(is_horizontal); + const LineRelativeRect rotated_box = + LineRelativeRect::CreateFromLineBox(r, is_horizontal); + absl::optional<AffineTransform> rotation = + rotated_box.ComputeRelativeToPhysicalTransform(writing_mode); + + // AffineTransform ("translation(-9000,11100), scale(1,1), angle(-90deg), + // skewxy(0)") + EXPECT_EQ(rotation, AffineTransform(0, -1, 1, 0, -9000, 11100)); + + // Top half of original box r + PhysicalRect highlight(1000, 10000, 10, 50); + LineRelativeRect rotated = LineRelativeRect::Create(highlight, rotation); + EXPECT_EQ(rotated.offset.line_left, 1050) << "Top half, x"; + EXPECT_EQ(rotated.offset.line_over, 10000) << "Top half, y"; + EXPECT_EQ(rotated.size.inline_size, 50) << "Top half, inline_size"; + EXPECT_EQ(rotated.size.block_size, 10) << "Top half, block_size"; + + // Bottom half of original box r + PhysicalRect highlight2(1000, 10050, 10, 50); + LineRelativeRect rotated2 = LineRelativeRect::Create(highlight2, rotation); + EXPECT_EQ(rotated2.offset.line_left, 1000) << "Bottom half, x"; + EXPECT_EQ(rotated2.offset.line_over, 10000) << "Bottom half, y"; + EXPECT_EQ(rotated2.size.inline_size, 50) << "Bottom half, inline_size"; + EXPECT_EQ(rotated2.size.block_size, 10) << "Bottom half, block_size"; + + // The whole thing. + PhysicalRect highlight3(1000, 10000, 10, 100); + LineRelativeRect rotated3 = LineRelativeRect::Create(highlight3, rotation); + EXPECT_EQ(rotated3.offset.line_left, 1000) << "whole box, x"; + EXPECT_EQ(rotated3.offset.line_over, 10000) << "whole box, y"; + EXPECT_EQ(rotated3.size.inline_size, 100) << "whole box, inline_size"; + EXPECT_EQ(rotated3.size.block_size, 10) << "whole box, block_size"; +} + +TEST(LineRelativeRectTest, Create_kVerticalRl) { + PhysicalRect r(1000, 10000, 10, 100); + + const WritingMode writing_mode = WritingMode::kVerticalRl; + const bool is_horizontal = IsHorizontalWritingMode(writing_mode); + EXPECT_FALSE(is_horizontal); + const LineRelativeRect rotated_box = + LineRelativeRect::CreateFromLineBox(r, is_horizontal); + absl::optional<AffineTransform> rotation = + rotated_box.ComputeRelativeToPhysicalTransform(writing_mode); + + // AffineTransform ("translation(11010,9000), scale(1,1), angle(90deg), + // skewxy(0)") + EXPECT_EQ(rotation, AffineTransform(0, 1, -1, 0, 11010, 9000)); + + // Top half of original box r + PhysicalRect highlight(1000, 10000, 10, 50); + LineRelativeRect rotated = LineRelativeRect::Create(highlight, rotation); + EXPECT_EQ(rotated.offset.line_left, 1000) << "top half, x"; + EXPECT_EQ(rotated.offset.line_over, 10000) << "top half, y"; + EXPECT_EQ(rotated.size.inline_size, 50) << "top half, inline_size"; + EXPECT_EQ(rotated.size.block_size, 10) << "top half, block_size"; + + // Bottom half of original box r + PhysicalRect highlight2(1000, 10050, 10, 50); + LineRelativeRect rotated2 = LineRelativeRect::Create(highlight2, rotation); + EXPECT_EQ(rotated2.offset.line_left, 1050) << "bottom half, x"; + EXPECT_EQ(rotated2.offset.line_over, 10000) << "bottom half, y"; + EXPECT_EQ(rotated2.size.inline_size, 50) << "bottom half, inline_size"; + EXPECT_EQ(rotated2.size.block_size, 10) << "bottom half, block_size"; +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.cc index 4f7fc024..0ed8ded 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.cc
@@ -20,6 +20,7 @@ #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.h" #include "third_party/blink/renderer/core/layout/svg/layout_svg_inline_text.h" #include "third_party/blink/renderer/core/paint/document_marker_painter.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/ng/ng_highlight_overlay.h" #include "third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h" #include "third_party/blink/renderer/core/paint/ng/ng_text_painter.h" @@ -156,16 +157,17 @@ const unsigned text_length_; }; -PhysicalRect MarkerRectForForeground(const NGFragmentItem& text_fragment, - StringView text, - unsigned start_offset, - unsigned end_offset) { +LineRelativeRect LineRelativeLocalRect(const NGFragmentItem& text_fragment, + StringView text, + unsigned start_offset, + unsigned end_offset) { LayoutUnit start_position, end_position; std::tie(start_position, end_position) = text_fragment.LineLeftAndRightForOffsets(text, start_offset, end_offset); const LayoutUnit height = text_fragment.InkOverflow().Height(); - return {start_position, LayoutUnit(), end_position - start_position, height}; + return {{start_position, LayoutUnit()}, + {end_position - start_position, height}}; } void PaintRect(GraphicsContext& context, @@ -361,18 +363,6 @@ return false; } -HighlightLayerType LayerFor(DocumentMarker::MarkerType type) { - switch (type) { - case DocumentMarker::kSpelling: - return HighlightLayerType::kSpelling; - case DocumentMarker::kGrammar: - return HighlightLayerType::kGrammar; - default: - NOTREACHED(); - return {}; - } -} - } // namespace NGHighlightPainter::SelectionPaintState::SelectionPaintState( @@ -417,23 +407,20 @@ PhysicalRect physical = containing_block_.CurrentLocalSelectionRectForText(selection_status_); physical.offset += box_offset_; - PhysicalRect rotated = writing_mode_rotation_ - ? PhysicalRect::EnclosingRect( - writing_mode_rotation_->Inverse().MapRect( - gfx::RectF(physical))) - : physical; + LineRelativeRect rotated = + LineRelativeRect::Create(physical, writing_mode_rotation_); selection_rect_.emplace(SelectionRect{physical, rotated}); } } const PhysicalRect& -NGHighlightPainter::SelectionPaintState::RectInPhysicalSpace() { +NGHighlightPainter::SelectionPaintState::PhysicalSelectionRect() { ComputeSelectionRectIfNeeded(); return selection_rect_->physical; } -const PhysicalRect& -NGHighlightPainter::SelectionPaintState::RectInWritingModeSpace() { +const LineRelativeRect& +NGHighlightPainter::SelectionPaintState::LineRelativeSelectionRect() { ComputeSelectionRectIfNeeded(); return selection_rect_->rotated; } @@ -453,7 +440,7 @@ PaintAutoDarkMode(style, DarkModeFilter::ElementRole::kSelection)); if (!rotation) { - PaintRect(context, RectInPhysicalSpace(), color, auto_dark_mode); + PaintRect(context, PhysicalSelectionRect(), color, auto_dark_mode); return; } @@ -463,7 +450,7 @@ // fix this, we undo the transformation temporarily, then use the original // physical coordinates (before MapSelectionRectIntoRotatedSpace). context.ConcatCTM(rotation->Inverse()); - PaintRect(context, RectInPhysicalSpace(), color, auto_dark_mode); + PaintRect(context, PhysicalSelectionRect(), color, auto_dark_mode); context.ConcatCTM(*rotation); } @@ -477,7 +464,7 @@ const AutoDarkMode& auto_dark_mode) { text_painter.PaintSelectedText(fragment_paint_info, selection_status_.start, selection_status_.end, length, text_style, - selection_style_, RectInWritingModeSpace(), + selection_style_, LineRelativeSelectionRect(), node_id, auto_dark_mode); } @@ -698,8 +685,8 @@ DocumentMarkerPainter::PaintStyleableMarkerUnderline( paint_info_.context, box_origin_, styleable_marker, originating_style_, node_->GetDocument(), - gfx::RectF(MarkerRectForForeground( - fragment_item_, text, paint_start_offset, paint_end_offset)), + LineRelativeLocalRect(fragment_item_, text, paint_start_offset, + paint_end_offset), LayoutUnit(font_data->GetFontMetrics().Height()), fragment_item_.GetNode()->GetDocument().InDarkMode()); } @@ -842,8 +829,8 @@ !RuntimeEnabledFeatures::CSSPaintingForSpellingGrammarErrorsEnabled()) { return DocumentMarkerPainter::PaintDocumentMarker( paint_info_, box_origin_, originating_style_, type, - MarkerRectForForeground(fragment_item_, text, paint_start_offset, - paint_end_offset), + LineRelativeLocalRect(fragment_item_, text, paint_start_offset, + paint_end_offset), HighlightStyleUtils::HighlightTextDecorationColor( layout_object_->GetDocument(), originating_style_, node_, originating_text_style_.current_color, PseudoFor(type))); @@ -895,8 +882,7 @@ // the decoration have the same range, so we can use the same rect for both // clipping the canvas and painting the decoration. const HighlightRange range{paint_start_offset, paint_end_offset}; - const HighlightPart part{HighlightLayer{LayerFor(marker_type)}, range}; - const PhysicalRect rect = RectInWritingModeSpace(range); + const LineRelativeRect rect = LineRelativeWorldRect(range); absl::optional<TextDecorationInfo> decoration_info{}; decoration_painter_.UpdateDecorationInfo(decoration_info, style, rect, @@ -1108,14 +1094,15 @@ } } -PhysicalRect NGHighlightPainter::RectInWritingModeSpace( +LineRelativeRect NGHighlightPainter::LineRelativeWorldRect( const NGHighlightOverlay::HighlightRange& range) { const StringView text = cursor_.CurrentText(); - return MarkerRectForForeground(fragment_item_, text, range.from, range.to) + - box_origin_; + return LineRelativeLocalRect(fragment_item_, text, range.from, range.to) + + LineRelativeOffset::CreateFromBoxOrigin(box_origin_); } -void NGHighlightPainter::ClipToPartDecorations(const PhysicalRect& part_rect) { +void NGHighlightPainter::ClipToPartDecorations( + const LineRelativeRect& part_rect) { gfx::RectF clip_rect{part_rect}; // Whether it’s best to clip to selection rect on both axes or only inline @@ -1174,11 +1161,11 @@ // Paint the decoration over the range of the originating fragment or active // highlight, but clip it to the range of the part. - const PhysicalRect decoration_rect = - RectInWritingModeSpace(decoration.range); - const PhysicalRect part_rect = part.range != decoration.range - ? RectInWritingModeSpace(part.range) - : decoration_rect; + const LineRelativeRect decoration_rect = + LineRelativeWorldRect(decoration.range); + const LineRelativeRect part_rect = part.range != decoration.range + ? LineRelativeWorldRect(part.range) + : decoration_rect; absl::optional<TextDecorationInfo> decoration_info{}; decoration_painter_.UpdateDecorationInfo( @@ -1239,11 +1226,11 @@ // Paint the decoration over the range of the originating fragment or active // highlight, but clip it to the range of the part. - const PhysicalRect decoration_rect = - RectInWritingModeSpace(decoration.range); - const PhysicalRect part_rect = part.range != decoration.range - ? RectInWritingModeSpace(part.range) - : decoration_rect; + const LineRelativeRect decoration_rect = + LineRelativeWorldRect(decoration.range); + const LineRelativeRect part_rect = part.range != decoration.range + ? LineRelativeWorldRect(part.range) + : decoration_rect; absl::optional<TextDecorationInfo> decoration_info{}; decoration_painter_.UpdateDecorationInfo( @@ -1281,7 +1268,7 @@ return; const StringView text = cursor_.CurrentText(); - absl::optional<PhysicalRect> marker_rect{}; + absl::optional<LineRelativeRect> marker_rect; for (const HighlightDecoration& decoration : part.decorations) { switch (decoration.layer.type) { @@ -1299,8 +1286,8 @@ } if (!marker_rect) { - marker_rect = MarkerRectForForeground(fragment_item_, text, - part.range.from, part.range.to); + marker_rect = LineRelativeLocalRect(fragment_item_, text, + part.range.from, part.range.to); } DocumentMarkerPainter::PaintDocumentMarker( @@ -1349,9 +1336,9 @@ document, originating_style_, node_, pseudo, text_style, paint_info_, pseudo_argument); } - PhysicalRect decoration_rect = - fragment_item_.LocalRect(text, paint_start_offset, paint_end_offset); - decoration_rect.Move(PhysicalOffset(box_origin_)); + LineRelativeRect decoration_rect = LineRelativeLocalRect( + fragment_item_, text, paint_start_offset, paint_end_offset); + decoration_rect.Move(LineRelativeOffset::CreateFromBoxOrigin(box_origin_)); NGTextDecorationPainter decoration_painter( text_painter_, fragment_item_, paint_info_, pseudo_style ? *pseudo_style : originating_style_, text_style,
diff --git a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h index 68f66c3..8b48199 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h +++ b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h
@@ -12,6 +12,7 @@ #include "third_party/blink/renderer/core/editing/markers/highlight_pseudo_marker.h" #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" #include "third_party/blink/renderer/core/layout/selection_state.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/ng/ng_highlight_overlay.h" #include "third_party/blink/renderer/core/paint/text_decoration_info.h" #include "third_party/blink/renderer/core/paint/text_paint_style.h" @@ -78,8 +79,8 @@ // need to rotate the canvas into a line-relative coordinate space. Paint // ops done while rotated need coordinates in this rotated space, but ops // done outside of these rotations need the original physical rect. - const PhysicalRect& RectInPhysicalSpace(); - const PhysicalRect& RectInWritingModeSpace(); + const PhysicalRect& PhysicalSelectionRect(); + const LineRelativeRect& LineRelativeSelectionRect(); void PaintSelectionBackground( GraphicsContext& context, @@ -106,7 +107,7 @@ private: struct SelectionRect { PhysicalRect physical; - PhysicalRect rotated; + LineRelativeRect rotated; STACK_ALLOCATED(); }; @@ -246,9 +247,9 @@ const ComputedStyle& style, const TextPaintStyle& text_style, const AppliedTextDecoration* decoration_override); - PhysicalRect RectInWritingModeSpace( + LineRelativeRect LineRelativeWorldRect( const NGHighlightOverlay::HighlightRange&); - void ClipToPartDecorations(const PhysicalRect&); + void ClipToPartDecorations(const LineRelativeRect&); void PaintDecorationsExceptLineThrough( const NGHighlightOverlay::HighlightPart&); void PaintDecorationsExceptLineThrough(
diff --git a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter_test.cc b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter_test.cc index 1bda56e6c..1168161 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_highlight_painter_test.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_highlight_painter_test.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/editing/markers/document_marker_controller.h" @@ -70,13 +71,15 @@ text_item.GetLayoutObject()->GetNode(), paint_info, text_style); } - - NGTextPainter text_painter(graphics_context, text_item.ScaledFont(), rect, - physical_offset, physical_rect, &inline_context, - true); + LineRelativeRect rotated_rect = + LineRelativeRect::CreateFromLineBox(physical_rect, true); + NGTextPainter text_painter( + graphics_context, text_item.ScaledFont(), rect, + LineRelativeOffset::CreateFromBoxOrigin(physical_offset), rotated_rect, + &inline_context, true); NGTextDecorationPainter decoration_painter(text_painter, text_item, paint_info, style, text_style, - physical_rect, selection); + rotated_rect, selection); NGHighlightPainter highlight_painter( cursor.Current()->TextPaintInfo(cursor.Items()), text_painter, decoration_painter, paint_info, cursor, text_item, {}, physical_offset,
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.cc index 75466bb..0098b6c8 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.cc
@@ -16,9 +16,10 @@ namespace blink { -NGTextCombinePainter::NGTextCombinePainter(GraphicsContext& context, - const ComputedStyle& style, - const PhysicalRect& text_frame_rect) +NGTextCombinePainter::NGTextCombinePainter( + GraphicsContext& context, + const ComputedStyle& style, + const LineRelativeRect& text_frame_rect) : NGTextPainterBase(context, style.GetFont(), text_frame_rect.offset, @@ -58,13 +59,14 @@ style.GetTextEmphasisMark() != TextEmphasisMark::kNone; DCHECK(has_text_decoration | has_emphasis_mark); - const PhysicalRect& text_frame_rect = + const LineRelativeRect& text_frame_rect = text_combine.ComputeTextFrameRect(paint_offset); // To match the logical direction GraphicsContextStateSaver state_saver(paint_info.context); paint_info.context.ConcatCTM( - TextPainterBase::Rotation(text_frame_rect, style.GetWritingMode())); + text_frame_rect.ComputeRelativeToPhysicalTransform( + style.GetWritingMode())); NGTextCombinePainter text_painter(paint_info.context, style, text_frame_rect); const TextPaintStyle text_style = TextPainterBase::TextPaintingStyle( @@ -97,7 +99,7 @@ // Setup arguments for painting text decorations const absl::optional<AppliedTextDecoration> selection_text_decoration; TextDecorationInfo decoration_info( - text_frame_rect_.offset, text_frame_rect_.size.width, style_, + text_frame_rect_.offset, text_frame_rect_.size.inline_size, style_, /* inline_context */ nullptr, selection_text_decoration); const NGTextDecorationOffset decoration_offset(style_); @@ -131,8 +133,9 @@ const auto font_ascent = font_data->GetFontMetrics().Ascent(); const TextRun placeholder_text_run(&kIdeographicFullStopCharacter, 1); const gfx::PointF emphasis_mark_text_origin( - text_frame_rect_.X().ToFloat(), - text_frame_rect_.Y().ToFloat() + font_ascent + emphasis_mark_offset_); + text_frame_rect_.LineLeft().ToFloat(), + text_frame_rect_.LineOver().ToFloat() + font_ascent + + emphasis_mark_offset_); const TextRunPaintInfo text_run_paint_info(placeholder_text_run); graphics_context_.DrawEmphasisMarks( emphasis_mark_font, text_run_paint_info, emphasis_mark_,
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.h b/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.h index 0c4060d..3123442 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.h +++ b/third_party/blink/renderer/core/paint/ng/ng_text_combine_painter.h
@@ -11,6 +11,7 @@ class ComputedStyle; class LayoutTextCombine; +struct LineRelativeRect; // The painter for painting text decorations and emphasis marks for // LayoutNGTextCombine. @@ -18,7 +19,7 @@ public: NGTextCombinePainter(GraphicsContext& context, const ComputedStyle& style, - const PhysicalRect& text_frame_rect); + const LineRelativeRect& text_frame_rect); ~NGTextCombinePainter(); static void Paint(const PaintInfo& paint_info,
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.cc index 5ab9574..92d7e9a 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.cc
@@ -19,7 +19,7 @@ const PaintInfo& paint_info, const ComputedStyle& style, const TextPaintStyle& text_style, - const PhysicalRect& decoration_rect, + const LineRelativeRect& decoration_rect, NGHighlightPainter::SelectionPaintState* selection) : text_painter_(text_painter), text_item_(text_item), @@ -38,7 +38,7 @@ void NGTextDecorationPainter::UpdateDecorationInfo( absl::optional<TextDecorationInfo>& result, const ComputedStyle& style, - absl::optional<PhysicalRect> decoration_rect_override, + absl::optional<LineRelativeRect> decoration_rect_override, const AppliedTextDecoration* decoration_override) { result.reset(); @@ -66,7 +66,7 @@ // Adjust the origin of the decoration because // NGTextPainter::PaintDecorationsExceptLineThrough() will change the // scaling of the GraphicsContext. - LayoutUnit top = decoration_rect_.offset.top; + LayoutUnit top = decoration_rect_.offset.line_over; // In svg/text/text-decorations-in-scaled-pattern.svg, the size of // ScaledFont() is zero, and the top position is unreliable. So we // adjust the baseline position, then shift it for scaled_font. @@ -74,16 +74,16 @@ text_item_.ScaledFont().PrimaryFont()->GetFontMetrics().FixedAscent(); top *= scaling_factor / text_item_.SvgScalingFactor(); top -= scaled_font.PrimaryFont()->GetFontMetrics().FixedAscent(); - result.emplace(PhysicalOffset(decoration_rect_.offset.left, top), - decoration_rect_.Width(), style, + result.emplace(LineRelativeOffset{decoration_rect_.offset.line_left, top}, + decoration_rect_.InlineSize(), style, text_painter_.InlineContext(), effective_selection_decoration, decoration_override, &scaled_font, MinimumThickness1(false), scaling_factor); } else { - PhysicalRect decoration_rect = + LineRelativeRect decoration_rect = decoration_rect_override.value_or(decoration_rect_); result.emplace( - decoration_rect.offset, decoration_rect.Width(), style, + decoration_rect.offset, decoration_rect.InlineSize(), style, text_painter_.InlineContext(), effective_selection_decoration, decoration_override, &text_item_.ScaledFont(), MinimumThickness1(text_item_.Type() != NGFragmentItem::kSvgText)); @@ -98,7 +98,7 @@ clip_rect_.reset(); if (decoration_info_ && UNLIKELY(selection_)) { - clip_rect_.emplace(selection_->RectInWritingModeSpace()); + clip_rect_.emplace(selection_->LineRelativeSelectionRect()); // Whether it’s best to clip to selection rect on both axes or only inline // depends on the situation, but the latter can improve the appearance of
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h b/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h index 26a152b..13e52a8 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h +++ b/third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h
@@ -16,8 +16,8 @@ class GraphicsContextStateSaver; class NGFragmentItem; class NGTextPainter; +struct LineRelativeRect; struct PaintInfo; -struct PhysicalRect; struct TextPaintStyle; // NGTextFragmentPainter helper that paints text-decoration. @@ -41,7 +41,7 @@ const PaintInfo& paint_info, const ComputedStyle& style, const TextPaintStyle& text_style, - const PhysicalRect& decoration_rect, + const LineRelativeRect& decoration_rect, NGHighlightPainter::SelectionPaintState* selection); ~NGTextDecorationPainter(); @@ -49,7 +49,7 @@ // that need to be painted, or nullopt if decorations should not be painted. void UpdateDecorationInfo(absl::optional<TextDecorationInfo>&, const ComputedStyle&, - absl::optional<PhysicalRect> = {}, + absl::optional<LineRelativeRect> = {}, const AppliedTextDecoration* = nullptr); enum Phase { kOriginating, kSelection }; @@ -66,7 +66,7 @@ const PaintInfo& paint_info_; const ComputedStyle& style_; const TextPaintStyle& text_style_; - const PhysicalRect& decoration_rect_; + const LineRelativeRect& decoration_rect_; NGHighlightPainter::SelectionPaintState* selection_; Step step_;
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc index db6918b..381b5f3 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_text_fragment_painter.cc
@@ -24,6 +24,7 @@ #include "third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.h" #include "third_party/blink/renderer/core/paint/box_model_object_painter.h" #include "third_party/blink/renderer/core/paint/document_marker_painter.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/ng/ng_highlight_painter.h" #include "third_party/blink/renderer/core/paint/ng/ng_inline_paint_context.h" #include "third_party/blink/renderer/core/paint/ng/ng_text_decoration_painter.h" @@ -57,10 +58,10 @@ return *cursor.Current().GetDisplayItemClient(); } -inline PhysicalRect BoxInPhysicalSpace(const NGInlineCursor& cursor, - const PhysicalOffset& paint_offset, - const PhysicalOffset& parent_offset, - const LayoutTextCombine* text_combine) { +inline PhysicalRect PhysicalBoxRect(const NGInlineCursor& cursor, + const PhysicalOffset& paint_offset, + const PhysicalOffset& parent_offset, + const LayoutTextCombine* text_combine) { PhysicalRect box_rect; if (const auto* svg_data = cursor.CurrentItem()->SvgFragmentData()) { box_rect = PhysicalRect::FastAndLossyFromRectF(svg_data->rect); @@ -86,14 +87,6 @@ return box_rect; } -inline PhysicalRect BoxInWritingModeSpace(const PhysicalRect& physical_box, - bool is_horizontal) { - PhysicalRect result = physical_box; - if (!is_horizontal) - result.size = PhysicalSize(result.Height(), result.Width()); - return result; -} - inline const NGInlineCursor& InlineCursorForBlockFlow( const NGInlineCursor& cursor, absl::optional<NGInlineCursor>* storage) { @@ -275,7 +268,7 @@ const auto* const text_combine = DynamicTo<LayoutTextCombine>(layout_object->Parent()); const PhysicalRect physical_box = - BoxInPhysicalSpace(cursor_, paint_offset, parent_offset_, text_combine); + PhysicalBoxRect(cursor_, paint_offset, parent_offset_, text_combine); #if DCHECK_IS_ON() if (UNLIKELY(text_combine)) LayoutTextCombine::AssertStyleIsValid(style); @@ -293,10 +286,12 @@ absl::optional<AffineTransform> rotation; const WritingMode writing_mode = style.GetWritingMode(); const bool is_horizontal = IsHorizontalWritingMode(writing_mode); - const PhysicalRect rotated_box = - BoxInWritingModeSpace(physical_box, is_horizontal); - if (!is_horizontal) - rotation.emplace(TextPainterBase::Rotation(rotated_box, writing_mode)); + const LineRelativeRect rotated_box = + LineRelativeRect::CreateFromLineBox(physical_box, is_horizontal); + if (!is_horizontal) { + rotation.emplace( + rotated_box.ComputeRelativeToPhysicalTransform(writing_mode)); + } // Determine whether or not we're selected. NGHighlightPainter::SelectionPaintState* selection = nullptr; @@ -355,7 +350,7 @@ selection_for_bounds_recording->State())) { selection_recorder.emplace( selection_for_bounds_recording->State(), - selection_for_bounds_recording->RectInPhysicalSpace(), + selection_for_bounds_recording->PhysicalSelectionRect(), paint_info.context.GetPaintController(), cursor_.Current().ResolvedDirection(), style.GetWritingMode(), *cursor_.Current().GetLayoutObject()); @@ -412,14 +407,14 @@ paint_info.phase != PaintPhase::kTextClip && !is_printing; GraphicsContextStateSaver state_saver(context, /*save_and_restore=*/false); const int ascent = font_data ? font_data->GetFontMetrics().Ascent() : 0; - PhysicalOffset text_origin( + LineRelativeOffset text_origin{ physical_box.offset.left, UNLIKELY(text_combine) ? text_combine->AdjustTextTopForPaint(physical_box.offset.top) - : physical_box.offset.top + ascent); + : physical_box.offset.top + ascent}; NGTextPainter text_painter(context, font, visual_rect, text_origin, - physical_box, inline_context_, is_horizontal); + rotated_box, inline_context_, is_horizontal); NGTextDecorationPainter decoration_painter(text_painter, text_item, paint_info, style, text_style, rotated_box, selection); @@ -477,7 +472,7 @@ if (UNLIKELY(highlight_painter.Selection())) { PhysicalRect physical_selection = - highlight_painter.Selection()->RectInPhysicalSpace(); + highlight_painter.Selection()->PhysicalSelectionRect(); if (scaling_factor != 1.0f) { physical_selection.offset.Scale(1 / scaling_factor); physical_selection.size.Scale(1 / scaling_factor);
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_text_painter.cc index f3eda760..129f5a42 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_painter.cc +++ b/third_party/blink/renderer/core/paint/ng/ng_text_painter.cc
@@ -206,7 +206,7 @@ unsigned length, const TextPaintStyle& text_style, const TextPaintStyle& selection_style, - const PhysicalRect& selection_rect, + const LineRelativeRect& selection_rect, DOMNodeId node_id, const AutoDarkMode& auto_dark_mode) { if (!fragment_paint_info.shape_result)
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_painter.h b/third_party/blink/renderer/core/paint/ng/ng_text_painter.h index 5592fa07..ea4caa924 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_painter.h +++ b/third_party/blink/renderer/core/paint/ng/ng_text_painter.h
@@ -7,6 +7,7 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/ng/ng_style_variant.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/ng/ng_text_painter_base.h" #include "third_party/blink/renderer/platform/fonts/ng_text_fragment_paint_info.h" #include "third_party/blink/renderer/platform/graphics/dom_node_id.h" @@ -67,8 +68,8 @@ NGTextPainter(GraphicsContext& context, const Font& font, const gfx::Rect& visual_rect, - const PhysicalOffset& text_origin, - const PhysicalRect& text_frame_rect, + const LineRelativeOffset& text_origin, + const LineRelativeRect& text_frame_rect, NGInlinePaintContext* inline_context, bool horizontal) : NGTextPainterBase(context, @@ -95,7 +96,7 @@ unsigned truncation_point, const TextPaintStyle& text_style, const TextPaintStyle& selection_style, - const PhysicalRect& selection_rect, + const LineRelativeRect& selection_rect, DOMNodeId node_id, const AutoDarkMode& auto_dark_mode);
diff --git a/third_party/blink/renderer/core/paint/ng/ng_text_painter_base.h b/third_party/blink/renderer/core/paint/ng/ng_text_painter_base.h index d7f53a1..bc380f4 100644 --- a/third_party/blink/renderer/core/paint/ng/ng_text_painter_base.h +++ b/third_party/blink/renderer/core/paint/ng/ng_text_painter_base.h
@@ -18,10 +18,10 @@ class NGInlinePaintContext; class NGTextDecorationOffset; class TextDecorationInfo; +struct LineRelativeOffset; +struct LineRelativeRect; struct NGTextFragmentPaintInfo; struct PaintInfo; -struct PhysicalOffset; -struct PhysicalRect; struct TextPaintStyle; // LayoutNG-specific base class for text painting. Augments TextPainterBase with @@ -32,8 +32,8 @@ public: NGTextPainterBase(GraphicsContext& context, const Font& font, - const PhysicalOffset& text_origin, - const PhysicalRect& text_frame_rect, + const LineRelativeOffset& text_origin, + const LineRelativeRect& text_frame_rect, NGInlinePaintContext* inline_context, bool horizontal) : TextPainterBase(context,
diff --git a/third_party/blink/renderer/core/paint/text_decoration_info.cc b/third_party/blink/renderer/core/paint/text_decoration_info.cc index 530a3bec..3c12404 100644 --- a/third_party/blink/renderer/core/paint/text_decoration_info.cc +++ b/third_party/blink/renderer/core/paint/text_decoration_info.cc
@@ -264,7 +264,7 @@ } // anonymous namespace TextDecorationInfo::TextDecorationInfo( - PhysicalOffset local_origin, + LineRelativeOffset local_origin, LayoutUnit width, const ComputedStyle& target_style, const NGInlinePaintContext* inline_context, @@ -454,7 +454,7 @@ const LayoutUnit decorating_box_paint_offset = decorating_box_->ContentOffsetInContainer().top + inline_context_->PaintOffset().top; - return decorating_box_paint_offset - local_origin_.top; + return decorating_box_paint_offset - local_origin_.line_over; } void TextDecorationInfo::SetUnderlineLineData(
diff --git a/third_party/blink/renderer/core/paint/text_decoration_info.h b/third_party/blink/renderer/core/paint/text_decoration_info.h index 24fc700..4ad87844 100644 --- a/third_party/blink/renderer/core/paint/text_decoration_info.h +++ b/third_party/blink/renderer/core/paint/text_decoration_info.h
@@ -10,6 +10,7 @@ #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/geometry/physical_offset.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/text_paint_style.h" #include "third_party/blink/renderer/core/style/applied_text_decoration.h" #include "third_party/blink/renderer/core/style/computed_style_constants.h" @@ -46,7 +47,7 @@ public: TextDecorationInfo( - PhysicalOffset local_origin, + LineRelativeOffset local_origin, LayoutUnit width, const ComputedStyle& target_style, const NGInlinePaintContext* inline_context, @@ -114,7 +115,7 @@ // text works as a resource. float ScalingFactor() const { return scaling_factor_; } float InkSkipClipUpper(float bounds_upper) const { - return -TargetAscent() + bounds_upper - local_origin_.top.ToFloat(); + return -TargetAscent() + bounds_upper - local_origin_.line_over.ToFloat(); } // |SetDecorationIndex| may change the results of these methods. @@ -192,7 +193,7 @@ const Font* const font_override_ = nullptr; // Geometry of the target text/box. - const PhysicalOffset local_origin_; + const LineRelativeOffset local_origin_; const LayoutUnit width_; // Cached properties for the current |decoration_index_|.
diff --git a/third_party/blink/renderer/core/paint/text_painter_base.cc b/third_party/blink/renderer/core/paint/text_painter_base.cc index 024583e..1114b74 100644 --- a/third_party/blink/renderer/core/paint/text_painter_base.cc +++ b/third_party/blink/renderer/core/paint/text_painter_base.cc
@@ -23,8 +23,8 @@ TextPainterBase::TextPainterBase(GraphicsContext& context, const Font& font, - const PhysicalOffset& text_origin, - const PhysicalRect& text_frame_rect, + const LineRelativeOffset& text_origin, + const LineRelativeRect& text_frame_rect, NGInlinePaintContext* inline_context, bool horizontal) : inline_context_(inline_context), @@ -240,5 +240,4 @@ } } } - } // namespace blink
diff --git a/third_party/blink/renderer/core/paint/text_painter_base.h b/third_party/blink/renderer/core/paint/text_painter_base.h index 4a0e038..c00b1cbd 100644 --- a/third_party/blink/renderer/core/paint/text_painter_base.h +++ b/third_party/blink/renderer/core/paint/text_painter_base.h
@@ -9,6 +9,7 @@ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" #include "third_party/blink/renderer/core/paint/applied_decoration_painter.h" +#include "third_party/blink/renderer/core/paint/line_relative_rect.h" #include "third_party/blink/renderer/core/paint/paint_info.h" #include "third_party/blink/renderer/core/paint/text_decoration_info.h" #include "third_party/blink/renderer/core/paint/text_paint_style.h" @@ -50,8 +51,8 @@ public: TextPainterBase(GraphicsContext&, const Font&, - const PhysicalOffset& text_origin, - const PhysicalRect& text_frame_rect, + const LineRelativeOffset& text_origin, + const LineRelativeRect& text_frame_rect, NGInlinePaintContext* inline_context, bool horizontal); ~TextPainterBase(); @@ -110,46 +111,14 @@ NGInlinePaintContext* inline_context_ = nullptr; GraphicsContext& graphics_context_; const Font& font_; - const PhysicalOffset text_origin_; - const PhysicalRect text_frame_rect_; + const LineRelativeOffset text_origin_; + const LineRelativeRect text_frame_rect_; AtomicString emphasis_mark_; int emphasis_mark_offset_ = 0; int ellipsis_offset_ = 0; const bool horizontal_; }; -inline AffineTransform TextPainterBase::Rotation( - const PhysicalRect& box_rect, - RotationDirection rotation_direction) { - // Why this matrix is correct: consider the case of a clockwise rotation. - - // Let the corner points that define |boxRect| be ABCD, where A is top-left - // and B is bottom-left. - - // 1. We want B to end up at the same pixel position after rotation as A is - // before rotation. - // 2. Before rotation, B is at (x(), maxY()) - // 3. Rotating clockwise by 90 degrees places B at the coordinates - // (-maxY(), x()). - // 4. Point A before rotation is at (x(), y()) - // 5. Therefore the translation from (3) to (4) is (x(), y()) - (-maxY(), x()) - // = (x() + maxY(), y() - x()) - - // A similar argument derives the counter-clockwise case. - return rotation_direction == kClockwise - ? AffineTransform(0, 1, -1, 0, box_rect.X() + box_rect.Bottom(), - box_rect.Y() - box_rect.X()) - : AffineTransform(0, -1, 1, 0, box_rect.X() - box_rect.Y(), - box_rect.X() + box_rect.Bottom()); -} - -inline AffineTransform TextPainterBase::Rotation(const PhysicalRect& box_rect, - WritingMode writing_mode) { - return Rotation(box_rect, writing_mode != WritingMode::kSidewaysLr - ? TextPainterBase::kClockwise - : TextPainterBase::kCounterclockwise); -} - } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_PAINT_TEXT_PAINTER_BASE_H_
diff --git a/third_party/blink/renderer/core/scroll/scroll_animator_test.cc b/third_party/blink/renderer/core/scroll/scroll_animator_test.cc index d03877f..a73b5428 100644 --- a/third_party/blink/renderer/core/scroll/scroll_animator_test.cc +++ b/third_party/blink/renderer/core/scroll/scroll_animator_test.cc
@@ -71,7 +71,6 @@ min_offset_(min_offset), max_offset_(max_offset) {} - MOCK_CONST_METHOD0(VisualRectForScrollbarParts, LayoutRect()); MOCK_CONST_METHOD0(IsActive, bool()); MOCK_CONST_METHOD0(IsThrottled, bool()); MOCK_CONST_METHOD1(ScrollSize, int(ScrollbarOrientation));
diff --git a/third_party/blink/renderer/core/scroll/scrollbar_test_suite.h b/third_party/blink/renderer/core/scroll/scrollbar_test_suite.h index c52a3ea..885b6f0 100644 --- a/third_party/blink/renderer/core/scroll/scrollbar_test_suite.h +++ b/third_party/blink/renderer/core/scroll/scrollbar_test_suite.h
@@ -66,7 +66,6 @@ maximum_scroll_offset_(offset), chrome_client_(MakeGarbageCollected<MockPlatformChromeClient>()) {} - MOCK_CONST_METHOD0(VisualRectForScrollbarParts, LayoutRect()); MOCK_CONST_METHOD0(IsActive, bool()); MOCK_CONST_METHOD0(IsThrottled, bool()); MOCK_CONST_METHOD1(ScrollSize, int(ScrollbarOrientation));
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc index a1403ce89..25e1a9d 100644 --- a/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc +++ b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_path.cc
@@ -46,6 +46,7 @@ #include "ui/gfx/geometry/rect_f.h" namespace blink { +float const kErrorRange = 0.01; void CanvasPath::closePath() { if (UNLIKELY(IsEmpty())) { @@ -503,6 +504,17 @@ CanonicalizeAngle(&start_angle, &end_angle); float adjusted_end_angle = AdjustEndAngle(start_angle, end_angle, anticlockwise); + + // If the ellipse has a radius of zero and it's closed, this path should be + // ignored from drawing. + if (!path_.HasCurrentPoint() || + (path_.HasCurrentPoint() && path_.CurrentPoint().x() == x && + path_.CurrentPoint().y() == y)) { + if (!radius_x && !radius_y && + abs(adjusted_end_angle - start_angle - kTwoPiFloat) <= kErrorRange) { + return; + } + } if (UNLIKELY(!radius_x || !radius_y || start_angle == adjusted_end_angle)) { // The ellipse is empty but we still need to draw the connecting line to // start point.
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_test.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_test.cc index 52c6be42..362e531 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_test.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_test.cc
@@ -9,6 +9,7 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_leaky_relu_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_pad_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_pool_2d_options.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_ml_reduce_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_split_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_transpose_options.h" #include "third_party/blink/renderer/modules/ml/webnn/ml_graph_builder.h" @@ -489,6 +490,62 @@ } template <typename T> +struct ReduceTester { + ReduceKind kind; + OperandInfo<T> input; + Vector<T> expected; + + void Test(MLGraphTest& helper, + V8TestingScope& scope, + MLReduceOptions* options = MLReduceOptions::Create()) { + auto* builder = CreateMLGraphBuilder(scope.GetExecutionContext()); + auto* input_operand = BuildInput(builder, "input", input.dimensions, + input.type, scope.GetExceptionState()); + auto* output_operand = + BuildReduce(scope, builder, kind, input_operand, options); + auto [graph, build_exception] = + helper.BuildGraph(scope, builder, {{"output", output_operand}}); + EXPECT_NE(graph, nullptr); + + MLNamedArrayBufferViews inputs( + {{"input", + CreateArrayBufferViewForOperand(input_operand, input.values)}}); + MLNamedArrayBufferViews outputs( + {{"output", CreateArrayBufferViewForOperand(output_operand)}}); + auto* compute_exception = + helper.ComputeGraph(scope, graph, inputs, outputs); + EXPECT_EQ(compute_exception, nullptr); + auto results = GetArrayBufferViewValues<T>(outputs[0].second); + EXPECT_EQ(results, expected); + } +}; + +TEST_P(MLGraphTest, ReduceTest) { + V8TestingScope scope; + { + // Test reduceMean operator with default options. + auto* options = MLReduceOptions::Create(); + ReduceTester<float>{.kind = ReduceKind::kMean, + .input = {.type = V8MLOperandType::Enum::kFloat32, + .dimensions = {1, 2, 2, 1}, + .values = {1.0, 2.0, 3.0, 4.0}}, + .expected = {2.5}} + .Test(*this, scope, options); + } + { + // Test reduceMean operator with axes = {1}. + auto* options = MLReduceOptions::Create(); + options->setAxes({1}); + ReduceTester<float>{.kind = ReduceKind::kMean, + .input = {.type = V8MLOperandType::Enum::kFloat32, + .dimensions = {2, 2}, + .values = {1.0, 2.0, 3.0, 4.0}}, + .expected = {1.5, 3.5}} + .Test(*this, scope, options); + } +} + +template <typename T> struct Resample2dTester { OperandInfo<T> input; Vector<T> expected;
diff --git a/third_party/blink/renderer/modules/ml/webnn/ml_graph_xnnpack.cc b/third_party/blink/renderer/modules/ml/webnn/ml_graph_xnnpack.cc index 9ea0a1f..674209e 100644 --- a/third_party/blink/renderer/modules/ml/webnn/ml_graph_xnnpack.cc +++ b/third_party/blink/renderer/modules/ml/webnn/ml_graph_xnnpack.cc
@@ -26,6 +26,7 @@ #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_leaky_relu_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_pad_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_pool_2d_options.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_ml_reduce_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_resample_2d_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_split_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_ml_transpose_options.h" @@ -1334,6 +1335,51 @@ return xnn_status_success; } +xnn_status DefineXnnNodeForReduce(xnn_subgraph_t subgraph, + const MLOperator* reduce, + const OperandValueIdMap& operand_value_id_map, + String& error_message) { + const uint32_t input_id = + GetOperatorInputValueId(reduce, operand_value_id_map); + const uint32_t output_id = + GetOperatorOutputValueId(reduce, operand_value_id_map); + + const MLReduceOptions* options = + static_cast<const MLReduceOptions*>(reduce->Options()); + const auto* input = reduce->Inputs()[0].Get(); + CHECK(input); + const auto input_rank = input->Dimensions().size(); + Vector<uint32_t> default_axes(input_rank); + for (wtf_size_t i = 0; i < input_rank; i++) { + default_axes[i] = i; + } + const Vector<uint32_t> axes = options->getAxesOr(std::move(default_axes)); + Vector<size_t> reduction_axes(axes.size()); + base::ranges::transform(axes, reduction_axes.begin(), [](uint32_t value) { + return base::checked_cast<size_t>(value); + }); + + if (options->keepDimensions()) { + error_message = "XNNPACK can't support keep dimensions."; + return xnn_status_unsupported_parameter; + } + const uint32_t flags = 0; + switch (reduce->Kind()) { + case MLOperator::OperatorKind::kReduceMean: { + XNN_CHECK_STATUS_AND_SET_ERROR_MESSAGE(xnn_define_static_mean( + subgraph, reduction_axes.size(), reduction_axes.data(), input_id, + output_id, flags)); + break; + } + default: { + // Because this method only supports reduceMean currently, it should + // already throw unsupported error for other operators. + NOTREACHED_NORETURN(); + } + } + return xnn_status_success; +} + xnn_status DefineXnnNodeForRelu(xnn_subgraph_t subgraph, const MLOperator* relu, const OperandValueIdMap& operand_value_id_map, @@ -1730,6 +1776,11 @@ XNN_CHECK_STATUS(DefineXnnNodeForPRelu( subgraph, ml_operator, operand_value_id_map, error_message)); break; + // Define XNNPACK Node for reduction operators. + case MLOperator::OperatorKind::kReduceMean: + XNN_CHECK_STATUS(DefineXnnNodeForReduce( + subgraph, ml_operator, operand_value_id_map, error_message)); + break; case MLOperator::OperatorKind::kRelu: XNN_CHECK_STATUS(DefineXnnNodeForRelu( subgraph, ml_operator, operand_value_id_map, error_message));
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc index 7c6326de..45d0a1e8 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.cc
@@ -1189,8 +1189,6 @@ task_runner_(task_runner), num_gl_errors_to_console_allowed_(kMaxGLErrorsAllowedToConsole), context_type_(context_type), - program_completion_queries_( - base::LRUCache<WebGLProgram*, GLuint>::NO_AUTO_EVICT), number_of_user_allocated_multisampled_renderbuffers_(0) { DCHECK(context_provider); @@ -9005,6 +9003,8 @@ visitor->Trace(texture_units_); visitor->Trace(extensions_); visitor->Trace(make_xr_compatible_resolver_); + visitor->Trace(program_completion_query_list_); + visitor->Trace(program_completion_query_map_); CanvasRenderingContext::Trace(visitor); } @@ -9059,33 +9059,45 @@ void WebGLRenderingContextBase::addProgramCompletionQuery(WebGLProgram* program, GLuint query) { - auto old_query = program_completion_queries_.Get(program); - if (old_query != program_completion_queries_.end()) { - ContextGL()->DeleteQueriesEXT(1, &old_query->second); + auto old_query = program_completion_query_map_.find(program); + if (old_query != program_completion_query_map_.end()) { + ContextGL()->DeleteQueriesEXT(1, &old_query->value); + // If this program's been inserted into the map already, then it + // exists in the list, too. Clear it out from there so that its + // new addition doesn't introduce a duplicate. + wtf_size_t old_index = program_completion_query_list_.Find(program); + DCHECK_NE(old_index, WTF::kNotFound); + program_completion_query_list_.EraseAt(old_index); } - program_completion_queries_.Put(program, query); - if (program_completion_queries_.size() > kMaxProgramCompletionQueries) { - auto oldest = program_completion_queries_.rbegin(); - ContextGL()->DeleteQueriesEXT(1, &oldest->second); - program_completion_queries_.Erase(oldest); + program_completion_query_map_.Set(program, query); + program_completion_query_list_.push_back(program); + if (program_completion_query_map_.size() > kMaxProgramCompletionQueries) { + DCHECK_GT(program_completion_query_list_.size(), 0u); + WebGLProgram* program_to_remove = program_completion_query_list_[0]; + auto program_iter = program_completion_query_map_.find(program_to_remove); + DCHECK_NE(program_iter, program_completion_query_map_.end()); + ContextGL()->DeleteQueriesEXT(1, &program_iter->value); + program_completion_query_map_.erase(program_iter); + program_completion_query_list_.EraseAt(0); } } void WebGLRenderingContextBase::clearProgramCompletionQueries() { - for (auto query : program_completion_queries_) { - ContextGL()->DeleteQueriesEXT(1, &query.second); + for (auto iter : program_completion_query_map_) { + ContextGL()->DeleteQueriesEXT(1, &iter.value); } - program_completion_queries_.Clear(); + program_completion_query_map_.clear(); + program_completion_query_list_.clear(); } bool WebGLRenderingContextBase::checkProgramCompletionQueryAvailable( WebGLProgram* program, bool* completed) { GLuint id = 0; - auto found = program_completion_queries_.Get(program); - if (found != program_completion_queries_.end()) { - id = found->second; - GLuint available; + auto found = program_completion_query_map_.find(program); + if (found != program_completion_query_map_.end()) { + id = found->value; + GLuint available = 0; ContextGL()->GetQueryObjectuivEXT(id, GL_QUERY_RESULT_AVAILABLE, &available); if (available) {
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h index 771f4dc0..156224f3 100644 --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h
@@ -29,7 +29,6 @@ #include <memory> #include "base/check_op.h" -#include "base/containers/lru_cache.h" #include "base/memory/raw_ptr_exclusion.h" #include "base/numerics/checked_math.h" #include "base/task/single_thread_task_runner.h" @@ -58,6 +57,8 @@ #include "third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.h" #include "third_party/blink/renderer/platform/graphics/gpu/extensions_3d_util.h" #include "third_party/blink/renderer/platform/graphics/gpu/webgl_image_conversion.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" #include "third_party/blink/renderer/platform/scheduler/public/frame_or_worker_scheduler.h" #include "third_party/blink/renderer/platform/timer.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" @@ -2000,7 +2001,13 @@ bool checkProgramCompletionQueryAvailable(WebGLProgram* program, bool* completed); static constexpr unsigned int kMaxProgramCompletionQueries = 128u; - base::LRUCache<WebGLProgram*, GLuint> program_completion_queries_; + + // Support for KHR_parallel_shader_compile. + // + // TODO(crbug.com/1474141): once a HeapLinkedHashMap is available, + // convert these two fields to use that instead. + HeapVector<Member<WebGLProgram>> program_completion_query_list_; + HeapHashMap<Member<WebGLProgram>, GLuint> program_completion_query_map_; int number_of_user_allocated_multisampled_renderbuffers_;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc index c4a6abc..889815a 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_adapter.cc
@@ -277,11 +277,7 @@ required_features.AppendRange(required_features_set.begin(), required_features_set.end()); dawn_desc.requiredFeatures = required_features.data(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_desc.requiredFeatureCount = required_features.size(); -#else - dawn_desc.requiredFeaturesCount = required_features.size(); -#endif } auto* callback = BindWGPUOnceCallback(
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_query_set.cc b/third_party/blink/renderer/modules/webgpu/gpu_query_set.cc index f75afb0..5cc4980 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_query_set.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_query_set.cc
@@ -27,12 +27,7 @@ pipeline_statistics = AsDawnEnum<WGPUPipelineStatisticName>( webgpu_desc->pipelineStatistics()); dawn_desc.pipelineStatistics = pipeline_statistics.get(); -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_desc.pipelineStatisticCount = webgpu_desc->pipelineStatistics().size(); -#else - dawn_desc.pipelineStatisticsCount = - webgpu_desc->pipelineStatistics().size(); -#endif } std::string label;
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_render_bundle_encoder.cc b/third_party/blink/renderer/modules/webgpu/gpu_render_bundle_encoder.cc index e7724de..c1a62f6 100644 --- a/third_party/blink/renderer/modules/webgpu/gpu_render_bundle_encoder.cc +++ b/third_party/blink/renderer/modules/webgpu/gpu_render_bundle_encoder.cc
@@ -47,11 +47,7 @@ std::string label; WGPURenderBundleEncoderDescriptor dawn_desc = {}; dawn_desc.nextInChain = nullptr; -#ifdef WGPU_BREAKING_CHANGE_COUNT_RENAME dawn_desc.colorFormatCount = color_formats_count; -#else - dawn_desc.colorFormatsCount = color_formats_count; -#endif dawn_desc.colorFormats = color_formats.get(); dawn_desc.depthStencilFormat = depth_stencil_format; dawn_desc.sampleCount = webgpu_desc->sampleCount();
diff --git a/third_party/blink/renderer/platform/geometry/layout_rect.cc b/third_party/blink/renderer/platform/geometry/layout_rect.cc index ecdc6b2..4d3ee01 100644 --- a/third_party/blink/renderer/platform/geometry/layout_rect.cc +++ b/third_party/blink/renderer/platform/geometry/layout_rect.cc
@@ -30,143 +30,19 @@ #include "third_party/blink/renderer/platform/geometry/layout_rect.h" -#include <stdio.h> -#include <algorithm> #include "third_party/blink/renderer/platform/geometry/layout_unit.h" -#include "third_party/blink/renderer/platform/wtf/text/text_stream.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" -#include "ui/gfx/geometry/rect_f.h" namespace blink { -bool LayoutRect::Intersects(const LayoutRect& other) const { - // Checking emptiness handles negative widths as well as zero. - return !IsEmpty() && !other.IsEmpty() && X() < other.MaxX() && - other.X() < MaxX() && Y() < other.MaxY() && other.Y() < MaxY(); -} - -bool LayoutRect::Contains(const LayoutRect& other) const { - return X() <= other.X() && MaxX() >= other.MaxX() && Y() <= other.Y() && - MaxY() >= other.MaxY(); -} - -void LayoutRect::Intersect(const LayoutRect& other) { - LayoutPoint new_location(std::max(X(), other.X()), std::max(Y(), other.Y())); - LayoutPoint new_max_point(std::min(MaxX(), other.MaxX()), - std::min(MaxY(), other.MaxY())); - - // Return a clean empty rectangle for non-intersecting cases. - if (new_location.X() >= new_max_point.X() || - new_location.Y() >= new_max_point.Y()) { - new_location = LayoutPoint(); - new_max_point = LayoutPoint(); - } - - location_ = new_location; - size_ = new_max_point - new_location; -} - -bool LayoutRect::InclusiveIntersect(const LayoutRect& other) { - LayoutPoint new_location(std::max(X(), other.X()), std::max(Y(), other.Y())); - LayoutPoint new_max_point(std::min(MaxX(), other.MaxX()), - std::min(MaxY(), other.MaxY())); - - if (new_location.X() > new_max_point.X() || - new_location.Y() > new_max_point.Y()) { - *this = LayoutRect(); - return false; - } - - location_ = new_location; - size_ = new_max_point - new_location; - return true; -} - -bool LayoutRect::IntersectsInclusively(const LayoutRect& other) { - // TODO(pdr): How should negative widths or heights be handled? - return X() <= other.MaxX() && other.X() <= MaxX() && Y() <= other.MaxY() && - other.Y() <= MaxY(); -} - -void LayoutRect::Unite(const LayoutRect& other) { - // Handle empty special cases first. - if (other.IsEmpty()) - return; - if (IsEmpty()) { - *this = other; - return; - } - - UniteEvenIfEmpty(other); -} - -void LayoutRect::UniteIfNonZero(const LayoutRect& other) { - // Handle empty special cases first. - if (!other.Width() && !other.Height()) - return; - if (!Width() && !Height()) { - *this = other; - return; - } - - UniteEvenIfEmpty(other); -} - -void LayoutRect::UniteEvenIfEmpty(const LayoutRect& other) { - LayoutPoint new_location(std::min(X(), other.X()), std::min(Y(), other.Y())); - LayoutPoint new_max_point(std::max(MaxX(), other.MaxX()), - std::max(MaxY(), other.MaxY())); - - size_ = new_max_point - new_location; - location_ = new_max_point - size_; -} - -void LayoutRect::Scale(float s) { - location_.Scale(s, s); - size_.Scale(s); -} - -void LayoutRect::Scale(float x_axis_scale, float y_axis_scale) { - location_.Scale(x_axis_scale, y_axis_scale); - size_.Scale(x_axis_scale, y_axis_scale); -} - -LayoutRect UnionRect(const Vector<LayoutRect>& rects) { - LayoutRect result; - - for (const LayoutRect& rect : rects) - result.Unite(rect); - - return result; -} - -LayoutRect UnionRectEvenIfEmpty(const Vector<LayoutRect>& rects) { - wtf_size_t count = rects.size(); - if (!count) - return LayoutRect(); - - LayoutRect result = rects[0]; - for (wtf_size_t i = 1; i < count; ++i) - result.UniteEvenIfEmpty(rects[i]); - - return result; -} - -std::ostream& operator<<(std::ostream& ostream, const LayoutRect& rect) { +std::ostream& operator<<(std::ostream& ostream, + const DeprecatedLayoutRect& rect) { return ostream << rect.ToString(); } -String LayoutRect::ToString() const { +String DeprecatedLayoutRect::ToString() const { return String::Format("%s %s", Location().ToString().Ascii().c_str(), - Size().ToString().Ascii().c_str()); -} - -WTF::TextStream& operator<<(WTF::TextStream& ts, const LayoutRect& r) { - ts << "at (" << WTF::TextStream::FormatNumberRespectingIntegers(r.X()); - ts << "," << WTF::TextStream::FormatNumberRespectingIntegers(r.Y()); - ts << ") size " << WTF::TextStream::FormatNumberRespectingIntegers(r.Width()); - ts << "x" << WTF::TextStream::FormatNumberRespectingIntegers(r.Height()); - return ts; + size_.ToString().Ascii().c_str()); } } // namespace blink
diff --git a/third_party/blink/renderer/platform/geometry/layout_rect.h b/third_party/blink/renderer/platform/geometry/layout_rect.h index 7885af19..e42f045d 100644 --- a/third_party/blink/renderer/platform/geometry/layout_rect.h +++ b/third_party/blink/renderer/platform/geometry/layout_rect.h
@@ -43,32 +43,24 @@ namespace blink { -class PLATFORM_EXPORT LayoutRect { +// This class is deprecated. Use PhysicalRect or LogicalRect instead. +class PLATFORM_EXPORT DeprecatedLayoutRect { DISALLOW_NEW(); public: - constexpr LayoutRect() = default; - constexpr LayoutRect(const LayoutPoint& location, - const DeprecatedLayoutSize& size) + constexpr DeprecatedLayoutRect() = default; + constexpr DeprecatedLayoutRect(const LayoutPoint& location, + const DeprecatedLayoutSize& size) : location_(location), size_(size) {} - constexpr LayoutRect(LayoutUnit x, - LayoutUnit y, - LayoutUnit width, - LayoutUnit height) + constexpr DeprecatedLayoutRect(LayoutUnit x, + LayoutUnit y, + LayoutUnit width, + LayoutUnit height) : location_(LayoutPoint(x, y)), size_(DeprecatedLayoutSize(width, height)) {} - constexpr LayoutRect(int x, int y, int width, int height) + constexpr DeprecatedLayoutRect(int x, int y, int width, int height) : location_(LayoutPoint(x, y)), size_(DeprecatedLayoutSize(width, height)) {} - constexpr LayoutRect(const gfx::Point& location, const gfx::Size& size) - : location_(location), size_(size) {} - constexpr explicit LayoutRect(const gfx::Rect& rect) - : location_(rect.origin()), size_(rect.size()) {} - - // Don't do these implicitly since they are lossy. - constexpr explicit LayoutRect(const gfx::RectF& r) - : location_(r.origin()), size_(r.size()) {} - constexpr explicit operator gfx::RectF() const { return gfx::RectF(X(), Y(), Width(), Height()); } @@ -76,18 +68,9 @@ // This is deleted to avoid unwanted lossy conversion from float or double to // LayoutUnit or int. Use explicit LayoutUnit constructor for each parameter // instead. - LayoutRect(double, double, double, double) = delete; + DeprecatedLayoutRect(double, double, double, double) = delete; constexpr LayoutPoint Location() const { return location_; } - constexpr DeprecatedLayoutSize Size() const { return size_; } - - gfx::Point PixelSnappedLocation() const { return ToRoundedPoint(location_); } - gfx::Size PixelSnappedSize() const { - return gfx::Size(SnapSizeToPixel(size_.Width(), location_.X()), - SnapSizeToPixel(size_.Height(), location_.Y())); - } - - void SetLocation(const LayoutPoint& location) { location_ = location; } ALWAYS_INLINE constexpr LayoutUnit X() const { return location_.X(); } ALWAYS_INLINE constexpr LayoutUnit Y() const { return location_.Y(); } @@ -96,164 +79,9 @@ constexpr LayoutUnit Width() const { return size_.Width(); } constexpr LayoutUnit Height() const { return size_.Height(); } - int PixelSnappedWidth() const { return SnapSizeToPixel(Width(), X()); } - int PixelSnappedHeight() const { return SnapSizeToPixel(Height(), Y()); } - - void SetX(LayoutUnit x) { location_.SetX(x); } - void SetY(LayoutUnit y) { location_.SetY(y); } - void SetWidth(LayoutUnit width) { size_.SetWidth(width); } - void SetHeight(LayoutUnit height) { size_.SetHeight(height); } - - ALWAYS_INLINE constexpr bool IsEmpty() const { return size_.IsEmpty(); } - - // NOTE: The result is rounded to integer values, and thus may be not the - // exact center point. - LayoutPoint Center() const { - return LayoutPoint(X() + Width() / 2, Y() + Height() / 2); - } - - void Move(const DeprecatedLayoutSize& size) { location_ += size; } - void Move(const gfx::Vector2d& offset) { - location_.Move(LayoutUnit(offset.x()), LayoutUnit(offset.y())); - } void MoveBy(const LayoutPoint& offset) { location_.Move(offset.X(), offset.Y()); } - void Move(LayoutUnit dx, LayoutUnit dy) { location_.Move(dx, dy); } - void Move(int dx, int dy) { location_.Move(LayoutUnit(dx), LayoutUnit(dy)); } - - void Expand(const DeprecatedLayoutSize& size) { size_ += size; } - void Expand(LayoutUnit dw, LayoutUnit dh) { size_.Expand(dw, dh); } - void ExpandEdges(LayoutUnit top, - LayoutUnit right, - LayoutUnit bottom, - LayoutUnit left) { - location_.Move(-left, -top); - size_.Expand(left + right, top + bottom); - } - void Contract(LayoutUnit dw, LayoutUnit dh) { size_.Expand(-dw, -dh); } - void Contract(int dw, int dh) { size_.Expand(-dw, -dh); } - void ContractEdges(LayoutUnit top, - LayoutUnit right, - LayoutUnit bottom, - LayoutUnit left) { - location_.Move(left, top); - size_.Shrink(left + right, top + bottom); - } - - void ShiftXEdgeTo(LayoutUnit edge) { - LayoutUnit delta = edge - X(); - SetX(edge); - SetWidth((Width() - delta).ClampNegativeToZero()); - } - void ShiftMaxXEdgeTo(LayoutUnit edge) { - LayoutUnit delta = edge - MaxX(); - SetWidth((Width() + delta).ClampNegativeToZero()); - } - void ShiftYEdgeTo(LayoutUnit edge) { - LayoutUnit delta = edge - Y(); - SetY(edge); - SetHeight((Height() - delta).ClampNegativeToZero()); - } - void ShiftMaxYEdgeTo(LayoutUnit edge) { - LayoutUnit delta = edge - MaxY(); - SetHeight((Height() + delta).ClampNegativeToZero()); - } - - // Typically top left. - constexpr LayoutPoint MinXMinYCorner() const { return location_; } - - // Typically top right. - LayoutPoint MaxXMinYCorner() const { - return LayoutPoint(location_.X() + size_.Width(), location_.Y()); - } - - // Typically bottom left. - LayoutPoint MinXMaxYCorner() const { - return LayoutPoint(location_.X(), location_.Y() + size_.Height()); - } - - // Typically bottom right. - LayoutPoint MaxXMaxYCorner() const { - return LayoutPoint(location_.X() + size_.Width(), - location_.Y() + size_.Height()); - } - - [[nodiscard]] bool Intersects(const LayoutRect&) const; - bool Contains(const LayoutRect&) const; - - // This checks to see if the rect contains x,y in the traditional sense. - // Equivalent to checking if the rect contains a 1x1 rect below and to the - // right of (px,py). - bool Contains(LayoutUnit px, LayoutUnit py) const { - return px >= X() && px < MaxX() && py >= Y() && py < MaxY(); - } - bool Contains(const LayoutPoint& point) const { - return Contains(point.X(), point.Y()); - } - - // Whether all edges of the rect are at full-pixel boundaries. - // i.e.: ToEnclosingRect(this)) == this - bool EdgesOnPixelBoundaries() const { - return !location_.X().HasFraction() && !location_.Y().HasFraction() && - !size_.Width().HasFraction() && !size_.Height().HasFraction(); - } - - // Expand each edge outwards to the next full-pixel boundary. - // i.e.: this = LayoutRect(ToEnclosingRect(this)) - void ExpandEdgesToPixelBoundaries() { - int x = X().Floor(); - int y = Y().Floor(); - int max_x = MaxX().Ceil(); - int max_y = MaxY().Ceil(); - location_.SetX(LayoutUnit(x)); - location_.SetY(LayoutUnit(y)); - size_.SetWidth(LayoutUnit(max_x - x)); - size_.SetHeight(LayoutUnit(max_y - y)); - } - - void Intersect(const LayoutRect&); - void Unite(const LayoutRect&); - void UniteIfNonZero(const LayoutRect&); - - // Set this rect to be the intersection of itself and the argument rect - // using edge-inclusive geometry. If the two rectangles overlap but the - // overlap region is zero-area (either because one of the two rectangles - // is zero-area, or because the rectangles overlap at an edge or a corner), - // the result is the zero-area intersection. The return value indicates - // whether the two rectangle actually have an intersection, since checking - // the result for isEmpty() is not conclusive. - bool InclusiveIntersect(const LayoutRect&); - - // Similar to |Intersects| but inclusive (see also: |InclusiveIntersect|). - // For example, (0,0 10x10) would inclusively intersect (10,10 0x0) even - // though the intersection has zero area and |Intersects| would be false. - bool IntersectsInclusively(const LayoutRect&); - - // Besides non-empty rects, this method also unites empty rects (as points or - // line segments). For example, union of (100, 100, 0x0) and (200, 200, 50x0) - // is (100, 100, 150x100). - void UniteEvenIfEmpty(const LayoutRect&); - - void InflateX(LayoutUnit dx) { - location_.SetX(location_.X() - dx); - size_.SetWidth(size_.Width() + dx + dx); - } - void InflateY(LayoutUnit dy) { - location_.SetY(location_.Y() - dy); - size_.SetHeight(size_.Height() + dy + dy); - } - void Inflate(LayoutUnit d) { - InflateX(d); - InflateY(d); - } - void Inflate(int d) { Inflate(LayoutUnit(d)); } - void Scale(float s); - void Scale(float x_axis_scale, float y_axis_scale); - - LayoutRect TransposedRect() const { - return LayoutRect(location_.TransposedPoint(), size_.TransposedSize()); - } String ToString() const; @@ -262,66 +90,14 @@ DeprecatedLayoutSize size_; }; -inline LayoutRect Intersection(const LayoutRect& a, const LayoutRect& b) { - LayoutRect c = a; - c.Intersect(b); - return c; -} - -inline LayoutRect UnionRect(const LayoutRect& a, const LayoutRect& b) { - LayoutRect c = a; - c.Unite(b); - return c; -} - -PLATFORM_EXPORT LayoutRect UnionRect(const Vector<LayoutRect>&); - -inline LayoutRect UnionRectEvenIfEmpty(const LayoutRect& a, - const LayoutRect& b) { - LayoutRect c = a; - c.UniteEvenIfEmpty(b); - return c; -} - -PLATFORM_EXPORT LayoutRect UnionRectEvenIfEmpty(const Vector<LayoutRect>&); - -ALWAYS_INLINE constexpr bool operator==(const LayoutRect& a, - const LayoutRect& b) { - return a.Location() == b.Location() && a.Size() == b.Size(); -} - -constexpr bool operator!=(const LayoutRect& a, const LayoutRect& b) { - return !(a == b); -} - -inline gfx::Rect ToPixelSnappedRect(const LayoutRect& rect) { +inline gfx::Rect ToPixelSnappedRect(const DeprecatedLayoutRect& rect) { return gfx::Rect(ToRoundedPoint(rect.Location()), gfx::Size(SnapSizeToPixel(rect.Width(), rect.X()), SnapSizeToPixel(rect.Height(), rect.Y()))); } -inline gfx::Rect ToEnclosingRect(const LayoutRect& rect) { - gfx::Point location = ToFlooredPoint(rect.MinXMinYCorner()); - gfx::Point max_point = ToCeiledPoint(rect.MaxXMaxYCorner()); - // Because the range of LayoutUnit is much smaller than int, the following - // '-' operations can never overflow, so no clamping is needed. - // TODO(1261553): We can have a special version of gfx::Rect constructor that - // skips internal clamping to improve performance. - return gfx::Rect(location.x(), location.y(), max_point.x() - location.x(), - max_point.y() - location.y()); -} - -inline LayoutRect EnclosingLayoutRect(const gfx::RectF& rect) { - LayoutUnit x = LayoutUnit::FromFloatFloor(rect.x()); - LayoutUnit y = LayoutUnit::FromFloatFloor(rect.y()); - LayoutUnit max_x = LayoutUnit::FromFloatCeil(rect.right()); - LayoutUnit max_y = LayoutUnit::FromFloatCeil(rect.bottom()); - return LayoutRect(x, y, max_x - x, max_y - y); -} - -PLATFORM_EXPORT std::ostream& operator<<(std::ostream&, const LayoutRect&); -PLATFORM_EXPORT WTF::TextStream& operator<<(WTF::TextStream&, - const LayoutRect&); +PLATFORM_EXPORT std::ostream& operator<<(std::ostream&, + const DeprecatedLayoutRect&); } // namespace blink
diff --git a/third_party/blink/renderer/platform/geometry/layout_rect_test.cc b/third_party/blink/renderer/platform/geometry/layout_rect_test.cc index 6887592..ea69435 100644 --- a/third_party/blink/renderer/platform/geometry/layout_rect_test.cc +++ b/third_party/blink/renderer/platform/geometry/layout_rect_test.cc
@@ -10,288 +10,16 @@ namespace blink { -TEST(LayoutRectTest, ToString) { - LayoutRect empty_rect = LayoutRect(); +TEST(DeprecatedLayoutRectTest, ToString) { + DeprecatedLayoutRect empty_rect = DeprecatedLayoutRect(); EXPECT_EQ("0,0 0x0", empty_rect.ToString()); - LayoutRect rect(1, 2, 3, 4); + DeprecatedLayoutRect rect(1, 2, 3, 4); EXPECT_EQ("1,2 3x4", rect.ToString()); - LayoutRect granular_rect(LayoutUnit(1.6f), LayoutUnit(2.7f), LayoutUnit(3.8f), - LayoutUnit(4.9f)); + DeprecatedLayoutRect granular_rect(LayoutUnit(1.6f), LayoutUnit(2.7f), + LayoutUnit(3.8f), LayoutUnit(4.9f)); EXPECT_EQ("1.59375,2.6875 3.796875x4.890625", granular_rect.ToString()); } -TEST(LayoutRectTest, InclusiveIntersect) { - LayoutRect rect(11, 12, 0, 0); - EXPECT_TRUE(rect.InclusiveIntersect(LayoutRect(11, 12, 13, 14))); - EXPECT_EQ(rect, LayoutRect(11, 12, 0, 0)); - - rect = LayoutRect(11, 12, 13, 14); - EXPECT_TRUE(rect.InclusiveIntersect(LayoutRect(24, 8, 0, 7))); - EXPECT_EQ(rect, LayoutRect(24, 12, 0, 3)); - - rect = LayoutRect(11, 12, 13, 14); - EXPECT_TRUE(rect.InclusiveIntersect(LayoutRect(9, 15, 4, 0))); - EXPECT_EQ(rect, LayoutRect(11, 15, 2, 0)); - - rect = LayoutRect(11, 12, 0, 14); - EXPECT_FALSE(rect.InclusiveIntersect(LayoutRect(12, 13, 15, 16))); - EXPECT_EQ(rect, LayoutRect()); -} - -TEST(LayoutRectTest, IntersectsInclusively) { - LayoutRect a(11, 12, 0, 0); - LayoutRect b(11, 12, 13, 14); - // An empty rect can have inclusive intersection. - EXPECT_TRUE(a.IntersectsInclusively(b)); - EXPECT_TRUE(b.IntersectsInclusively(a)); - - a = LayoutRect(11, 12, 13, 14); - b = LayoutRect(24, 8, 0, 7); - // Intersecting left side is sufficient for inclusive intersection. - EXPECT_TRUE(a.IntersectsInclusively(b)); - EXPECT_TRUE(b.IntersectsInclusively(a)); - - a = LayoutRect(11, 12, 13, 14); - b = LayoutRect(0, 26, 13, 8); - // Intersecting bottom side is sufficient for inclusive intersection. - EXPECT_TRUE(a.IntersectsInclusively(b)); - EXPECT_TRUE(b.IntersectsInclusively(a)); - - a = LayoutRect(11, 12, 0, 0); - b = LayoutRect(11, 12, 0, 0); - // Two empty rects can intersect inclusively. - EXPECT_TRUE(a.IntersectsInclusively(b)); - EXPECT_TRUE(b.IntersectsInclusively(a)); - - a = LayoutRect(10, 10, 10, 10); - b = LayoutRect(20, 20, 10, 10); - // Two rects can intersect inclusively at a single point. - EXPECT_TRUE(a.IntersectsInclusively(b)); - EXPECT_TRUE(b.IntersectsInclusively(a)); - - a = LayoutRect(11, 12, 0, 0); - b = LayoutRect(20, 21, 0, 0); - // Two empty rects that do not touch do not intersect. - EXPECT_FALSE(a.IntersectsInclusively(b)); - EXPECT_FALSE(b.IntersectsInclusively(a)); - - a = LayoutRect(11, 12, 5, 5); - b = LayoutRect(20, 21, 0, 0); - // A rect that does not touch a point does not intersect. - EXPECT_FALSE(a.IntersectsInclusively(b)); - EXPECT_FALSE(b.IntersectsInclusively(a)); -} - -TEST(LayoutRectTest, ToEnclosingRect) { - LayoutUnit small; - small.SetRawValue(1); - LayoutRect small_dimensions_rect(LayoutUnit(42.5f), LayoutUnit(84.5f), small, - small); - EXPECT_EQ(gfx::Rect(42, 84, 1, 1), ToEnclosingRect(small_dimensions_rect)); - - LayoutRect integral_rect(gfx::Rect(100, 150, 200, 350)); - EXPECT_EQ(gfx::Rect(100, 150, 200, 350), ToEnclosingRect(integral_rect)); - - LayoutRect fractional_pos_rect(LayoutUnit(100.6f), LayoutUnit(150.8f), - LayoutUnit(200), LayoutUnit(350)); - EXPECT_EQ(gfx::Rect(100, 150, 201, 351), - ToEnclosingRect(fractional_pos_rect)); - - LayoutRect fractional_dimensions_rect(LayoutUnit(100), LayoutUnit(150), - LayoutUnit(200.6f), LayoutUnit(350.4f)); - EXPECT_EQ(gfx::Rect(100, 150, 201, 351), - ToEnclosingRect(fractional_dimensions_rect)); - - LayoutRect fractional_both_rect1(LayoutUnit(100.6f), LayoutUnit(150.8f), - LayoutUnit(200.4f), LayoutUnit(350.2f)); - EXPECT_EQ(gfx::Rect(100, 150, 201, 351), - ToEnclosingRect(fractional_both_rect1)); - - LayoutRect fractional_both_rect2(LayoutUnit(100.5f), LayoutUnit(150.7f), - LayoutUnit(200.3f), LayoutUnit(350.3f)); - EXPECT_EQ(gfx::Rect(100, 150, 201, 351), - ToEnclosingRect(fractional_both_rect2)); - - LayoutRect fractional_both_rect3(LayoutUnit(100.3f), LayoutUnit(150.2f), - LayoutUnit(200.8f), LayoutUnit(350.9f)); - EXPECT_EQ(gfx::Rect(100, 150, 202, 352), - ToEnclosingRect(fractional_both_rect3)); - - LayoutRect fractional_negpos_rect1(LayoutUnit(-100.4f), LayoutUnit(-150.8f), - LayoutUnit(200), LayoutUnit(350)); - EXPECT_EQ(gfx::Rect(-101, -151, 201, 351), - ToEnclosingRect(fractional_negpos_rect1)); - - LayoutRect fractional_negpos_rect2(LayoutUnit(-100.5f), LayoutUnit(-150.7f), - LayoutUnit(199.4f), LayoutUnit(350.3f)); - EXPECT_EQ(gfx::Rect(-101, -151, 200, 351), - ToEnclosingRect(fractional_negpos_rect2)); - - LayoutRect fractional_negpos_rect3(LayoutUnit(-100.3f), LayoutUnit(-150.2f), - LayoutUnit(199.6f), LayoutUnit(350.3f)); - EXPECT_EQ(gfx::Rect(-101, -151, 201, 352), - ToEnclosingRect(fractional_negpos_rect3)); -} - -TEST(LayoutRectTest, EdgesOnPixelBoundaries) { - EXPECT_TRUE(LayoutRect().EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(1), LayoutUnit(1), LayoutUnit(1), LayoutUnit(1)) - .EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(1), LayoutUnit(-1), LayoutUnit(1), LayoutUnit(1)) - .EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(-1), LayoutUnit(10), LayoutUnit(10), LayoutUnit(0)) - .EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(-5), LayoutUnit(-7), LayoutUnit(10), LayoutUnit(7)) - .EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(10), LayoutUnit(5), LayoutUnit(-2), LayoutUnit(-3)) - .EdgesOnPixelBoundaries()); - EXPECT_TRUE( - LayoutRect(LayoutUnit(1.0f), LayoutUnit(5), LayoutUnit(10), LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - - EXPECT_FALSE( - LayoutRect(LayoutUnit(9.3f), LayoutUnit(5), LayoutUnit(10), LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE( - LayoutRect(LayoutUnit(0.5f), LayoutUnit(5), LayoutUnit(10), LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE(LayoutRect(LayoutUnit(-0.5f), LayoutUnit(-5), LayoutUnit(10), - LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE(LayoutRect(LayoutUnit(-0.5f), LayoutUnit(-2), LayoutUnit(10), - LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE(LayoutRect(LayoutUnit(-0.5f), LayoutUnit(5.1f), LayoutUnit(10), - LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE( - LayoutRect(LayoutUnit(3), LayoutUnit(5.1f), LayoutUnit(10), LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE( - LayoutRect(LayoutUnit(3), LayoutUnit(5), LayoutUnit(10.2f), LayoutUnit(3)) - .EdgesOnPixelBoundaries()); - EXPECT_FALSE( - LayoutRect(LayoutUnit(3), LayoutUnit(5), LayoutUnit(10), LayoutUnit(0.3f)) - .EdgesOnPixelBoundaries()); -} - -TEST(LayoutRectTest, ExpandEdgesToPixelBoundaries) { - LayoutUnit small; - small.SetRawValue(1); - LayoutRect small_dimensions_rect(LayoutUnit(42.5f), LayoutUnit(84.5f), small, - small); - small_dimensions_rect.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(42, 84, 1, 1)), small_dimensions_rect); - - LayoutRect integral_rect(gfx::Rect(100, 150, 200, 350)); - integral_rect.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 200, 350)), integral_rect); - - LayoutRect fractional_pos_rect(LayoutUnit(100.6f), LayoutUnit(150.8f), - LayoutUnit(200), LayoutUnit(350)); - fractional_pos_rect.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 201, 351)), fractional_pos_rect); - - LayoutRect fractional_dimensions_rect(LayoutUnit(100), LayoutUnit(150), - LayoutUnit(200.6f), LayoutUnit(350.4f)); - fractional_dimensions_rect.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 201, 351)), - fractional_dimensions_rect); - - LayoutRect fractional_both_rect1(LayoutUnit(100.6f), LayoutUnit(150.8f), - LayoutUnit(200.4f), LayoutUnit(350.2f)); - fractional_both_rect1.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 201, 351)), fractional_both_rect1); - - LayoutRect fractional_both_rect2(LayoutUnit(100.5f), LayoutUnit(150.7f), - LayoutUnit(200.3f), LayoutUnit(350.3f)); - fractional_both_rect2.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 201, 351)), fractional_both_rect2); - - LayoutRect fractional_both_rect3(LayoutUnit(100.3f), LayoutUnit(150.2f), - LayoutUnit(200.8f), LayoutUnit(350.9f)); - fractional_both_rect3.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(100, 150, 202, 352)), fractional_both_rect3); - - LayoutRect fractional_negpos_rect1(LayoutUnit(-100.4f), LayoutUnit(-150.8f), - LayoutUnit(200), LayoutUnit(350)); - fractional_negpos_rect1.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(-101, -151, 201, 351)), - fractional_negpos_rect1); - - LayoutRect fractional_negpos_rect2(LayoutUnit(-100.5f), LayoutUnit(-150.7f), - LayoutUnit(199.4f), LayoutUnit(350.3f)); - fractional_negpos_rect2.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(-101, -151, 200, 351)), - fractional_negpos_rect2); - - LayoutRect fractional_negpos_rect3(LayoutUnit(-100.3f), LayoutUnit(-150.2f), - LayoutUnit(199.6f), LayoutUnit(350.3f)); - fractional_negpos_rect3.ExpandEdgesToPixelBoundaries(); - EXPECT_EQ(LayoutRect(gfx::Rect(-101, -151, 201, 352)), - fractional_negpos_rect3); -} - -struct LayoutRectUniteTestData { - const char* test_case; - LayoutRect a; - LayoutRect b; - LayoutRect expected; -} layout_rect_unite_test_data[] = { - {"empty", {}, {}, {}}, - {"a empty", {}, {1, 2, 3, 4}, {1, 2, 3, 4}}, - {"b empty", {1, 2, 3, 4}, {}, {1, 2, 3, 4}}, - {"a larger", {100, 50, 300, 200}, {200, 50, 200, 200}, {100, 50, 300, 200}}, - {"b larger", {200, 50, 200, 200}, {100, 50, 300, 200}, {100, 50, 300, 200}}, - {"saturated width", - {-1000, 0, 200, 200}, - {33554402, 500, 30, 100}, - {0, 0, 99999999, 600}}, - {"saturated height", - {0, -1000, 200, 200}, - {0, 33554402, 100, 30}, - {0, 0, 200, 99999999}}, -}; - -std::ostream& operator<<(std::ostream& os, - const LayoutRectUniteTestData& data) { - return os << "Unite " << data.test_case; -} - -class LayoutRectUniteTest - : public testing::Test, - public testing::WithParamInterface<LayoutRectUniteTestData> {}; - -INSTANTIATE_TEST_SUITE_P(LayoutRectTest, - LayoutRectUniteTest, - testing::ValuesIn(layout_rect_unite_test_data)); - -TEST_P(LayoutRectUniteTest, Data) { - const auto& data = GetParam(); - LayoutRect actual = data.a; - actual.Unite(data.b); - - LayoutRect expected = data.expected; - constexpr int kExtraForSaturation = 2000; - // On arm, you cannot actually get the true saturated value just by - // setting via LayoutUnit constructor. Instead, add to the expected - // value to actually get a saturated expectation (which is what happens in - // the Unite operation). - if (data.expected.Width() == GetMaxSaturatedSetResultForTesting()) { - expected.Expand(DeprecatedLayoutSize(kExtraForSaturation, 0)); - } - - if (data.expected.Height() == GetMaxSaturatedSetResultForTesting()) { - expected.Expand(DeprecatedLayoutSize(0, kExtraForSaturation)); - } - EXPECT_EQ(expected, actual); -} - } // namespace blink
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 3d60f632..34720016 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -2695,9 +2695,9 @@ crbug.com/626703 external/wpt/css/css-fonts/parsing/font-variant-invalid.html [ Crash ] # Marking sending-related tests as failed until refactoring CLs are submitted. -crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.html [ Failure ] -crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.html [ Failure ] -crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/timeout.tentative.https.window.html [ Failure ] +crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-deactivate.tentative.https.window.html [ Failure Timeout ] +crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/send-on-discard.tentative.https.window.html [ Failure Timeout ] +crbug.com/1465781 virtual/fetch-later/external/wpt/fetch/fetch-later/timeout.tentative.https.window.html [ Failure Timeout ] # These tests generate baselines whose names are too long. crbug.com/626703 [ Mac ] virtual/webcodecs-without-task-runner-with-custom-deleter/external/wpt/webcodecs/videoDecoder-codec-specific.https.any.html?h265_annexb [ Failure ] @@ -6795,4 +6795,4 @@ # Gardener 2023-10-10 crbug.com/1491468 [ Linux ] external/wpt/html/semantics/popovers/popover-light-dismiss.html [ Failure Pass ] -crbug.com/1491468 [ Linux ] virtual/popover-hint-disabled/external/wpt/html/semantics/popovers/popover-light-dismiss.html [ Failure Pass ] \ No newline at end of file +crbug.com/1491468 [ Linux ] virtual/popover-hint-disabled/external/wpt/html/semantics/popovers/popover-light-dismiss.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-001-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-001-ref.html deleted file mode 100644 index 7bbe11d..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-001-ref.html +++ /dev/null
@@ -1,48 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<title>CSS Text Decoration Test: Invalidation of text decorations in css-pseudo ::selection - reference</title> -<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/"> -<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/"> -<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org"> -<style> - div { - display: block; - margin-top: 30px; - margin-bottom: 30px; - will-change: transform; - } - - ::selection { - background: yellow; - color: currentColor; - } - - .decorated { - text-decoration-line: underline overline; - text-decoration-style: wavy; - text-decoration-color: green; - text-decoration-thickness: 5px; - } -</style> -</head> -<body> -<div> -There should be no sign of decorations when the test completes. -</div> -<div id="bottom-decorated-div" class="decorated"> -There should be decorations when the test completes. -</div> -</body> -<script> -function selectByID(id) { - const selection = window.getSelection(); - const node = document.getElementById(id); - const range = document.createRange(); - range.selectNodeContents(node); - selection.addRange(range); -} - -selectByID("bottom-decorated-div"); -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-002-ref.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-002-ref.html deleted file mode 100644 index 59351f8..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/reference/selection-pseudo-with-decoration-invalidation-002-ref.html +++ /dev/null
@@ -1,39 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<title>CSS Text Decoration Test: Invalidation of text decorations in css-pseudo ::selection</title> -<style> - div { - display: block; - margin-top: 10px; - margin-bottom: 10px; - line-height: 20px; - will-change: transform; - text-decoration-line: underline; - text-decoration-style: line; - text-decoration-thickness: 1px; - text-underline-offset: 10px; - } - ::selection { - background: yellow; - color: currentColor; - } -</style> -</head> -<body> -<div> -This is one line of text, with an image underneath. -</div> -<image src="../../../support/60x60-green.png"/> -<div> -And another line of text. -</div> -</body> -<script> - const selection = window.getSelection(); - const node = document.getElementsByTagName("body")[0]; - let range = document.createRange(); - range.selectNodeContents(node); - selection.addRange(range); -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-001.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-001.html deleted file mode 100644 index a2dfbb3..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-001.html +++ /dev/null
@@ -1,59 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<head> -<title>CSS Text Decoration Test: Invalidation of text decorations in css-pseudo ::selection</title> -<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/"> -<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/"> -<meta name="assert" content="text-decorations should be correctly invalidated on selection change."> -<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org"> -<link rel="match" href="reference/selection-pseudo-with-decoration-invalidation-001-ref.html"> -<style> - div { - display: block; - margin-top: 30px; - margin-bottom: 30px; - will-change: transform; - } - ::selection { - background: yellow; - color: currentColor; - text-decoration-line: underline overline; - text-decoration-style: wavy; - text-decoration-color: black; - text-decoration-thickness: 5px; - } -</style> -<script src="/common/reftest-wait.js"></script> -<script src="/common/rendering-utils.js"></script> -</head> -<body> -<div id="top-decorated-div"> -There should be no sign of decorations when the test completes. -</div> -<div id="bottom-decorated-div"> -There should be decorations when the test completes. -</div> -</body> -<script> - -function selectByID(id) { - const selection = window.getSelection(); - const node = document.getElementById(id); - const range = document.createRange(); - range.selectNodeContents(node); - selection.addRange(range); -} - -selectByID("top-decorated-div"); - -async function runTest() { - const selection = window.getSelection(); - selection.removeAllRanges(); - selectByID("bottom-decorated-div"); - takeScreenshot(); -} -onload = () => { - waitForAtLeastOneFrame().then(() => { runTest() }); -} -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-002.html b/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-002.html deleted file mode 100644 index 2abe8c62..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-text-decor/invalidation/selection-pseudo-with-decoration-invalidation-002.html +++ /dev/null
@@ -1,53 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<head> -<title>CSS Text Decoration Test: Invalidation of text decorations in css-pseudo ::selection</title> -<link rel="help" href="https://drafts.csswg.org/css-text-decor-4/"> -<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/"> -<meta name="assert" content="text-decorations should be correctly invalidated on selection change."> -<link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org"> -<link rel="match" href="reference/selection-pseudo-with-decoration-invalidation-002-ref.html"> -<style> - div { - display: block; - margin-top: 10px; - margin-bottom: 10px; - line-height: 20px; - will-change: transform; - } - ::selection { - background: yellow; - color: currentColor; - text-decoration-line: underline; - text-decoration-style: line; - text-decoration-thickness: 1px; - text-underline-offset: 10px; - } -</style> -<script src="/common/reftest-wait.js"></script> -<script src="/common/rendering-utils.js"></script> -</head> -<body> -<div> -This is one line of text, with an image underneath. -</div> -<image src="../../support/60x60-green.png"/> -<div> -And another line of text. -</div> -</body> -<script> -async function runTest() { - const selection = window.getSelection(); - const node = document.getElementsByTagName("body")[0]; - let range = document.createRange(); - range.selectNodeContents(node); - selection.addRange(range); - waitForAtLeastOneFrame().then(() => { takeScreenshot() }); -} - -onload = () => { - waitForAtLeastOneFrame().then(() => { runTest() }); -} -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.ellipse.html b/third_party/blink/web_tests/external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.ellipse.html new file mode 100644 index 0000000..d5550793 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/element/path-objects/2d.path.stroke.prune.ellipse.html
@@ -0,0 +1,38 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> +<title>Canvas test: 2d.path.stroke.prune.ellipse</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> +<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css"> +<body class="show_output"> + +<h1>2d.path.stroke.prune.ellipse</h1> +<p class="desc">Zero-length full ellipse are removed before stroking with miters</p> + + +<p class="output">Actual output:</p> +<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> +<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt=""> +<ul id="d"></ul> +<script> +var t = async_test("Zero-length full ellipse are removed before stroking with miters"); +_addTest(function(canvas, ctx) { + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + + ctx.beginPath(); + ctx.ellipse(25, 25, 0, 0, 0, 0, 2 * Math.PI); + ctx.stroke(); + + _assertPixel(canvas, 50,25, 0,255,0,255); + +}); +</script> +
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.html b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.html new file mode 100644 index 0000000..5eea854 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.html
@@ -0,0 +1,39 @@ +<!DOCTYPE html> +<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> +<title>OffscreenCanvas test: 2d.path.stroke.prune.ellipse</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/html/canvas/resources/canvas-tests.js"></script> + +<h1>2d.path.stroke.prune.ellipse</h1> +<p class="desc">Zero-length full ellipse are removed before stroking with miters</p> + + +<script> +var t = async_test("Zero-length full ellipse are removed before stroking with miters"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + + ctx.beginPath(); + ctx.ellipse(25, 25, 0, 0, 0, 0, 2 * Math.PI); + ctx.stroke(); + + _assertPixel(canvas, 50,25, 0,255,0,255); + t.done(); + +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.worker.js b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.worker.js new file mode 100644 index 0000000..a1fbabd --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/canvas/offscreen/path-objects/2d.path.stroke.prune.ellipse.worker.js
@@ -0,0 +1,34 @@ +// DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. +// OffscreenCanvas test in a worker:2d.path.stroke.prune.ellipse +// Description:Zero-length full ellipse are removed before stroking with miters +// Note: + +importScripts("/resources/testharness.js"); +importScripts("/html/canvas/resources/canvas-tests.js"); + +var t = async_test("Zero-length full ellipse are removed before stroking with miters"); +var t_pass = t.done.bind(t); +var t_fail = t.step_func(function(reason) { + throw reason; +}); +t.step(function() { + + var canvas = new OffscreenCanvas(100, 50); + var ctx = canvas.getContext('2d'); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + + ctx.beginPath(); + ctx.ellipse(25, 25, 0, 0, 0, 0, 2 * Math.PI); + ctx.stroke(); + + _assertPixel(canvas, 50,25, 0,255,0,255); + t.done(); +}); +done();
diff --git a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/path-objects.yaml b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/path-objects.yaml index eec142c..fab92b9 100644 --- a/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/path-objects.yaml +++ b/third_party/blink/web_tests/external/wpt/html/canvas/tools/yaml-new/path-objects.yaml
@@ -2853,6 +2853,23 @@ @assert pixel 50,25 == 0,255,0,255; expected: green +- name: 2d.path.stroke.prune.ellipse + desc: Zero-length full ellipse are removed before stroking with miters + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + + ctx.beginPath(); + ctx.ellipse(25, 25, 0, 0, 0, 0, 2 * Math.PI); + ctx.stroke(); + + @assert pixel 50,25 == 0,255,0,255; + expected: green - name: 2d.path.transformation.basic code: |
diff --git a/third_party/blink/web_tests/external/wpt/html/infrastructure/urls/base-url/document-base-url-changes-about-srcdoc-2.https.html b/third_party/blink/web_tests/external/wpt/html/infrastructure/urls/base-url/document-base-url-changes-about-srcdoc-2.https.html index 14e712ce..dab8d21 100644 --- a/third_party/blink/web_tests/external/wpt/html/infrastructure/urls/base-url/document-base-url-changes-about-srcdoc-2.https.html +++ b/third_party/blink/web_tests/external/wpt/html/infrastructure/urls/base-url/document-base-url-changes-about-srcdoc-2.https.html
@@ -3,16 +3,20 @@ <script src="/resources/testharnessreport.js"></script> <script src="/common/get-host-info.sub.js"></script> +<iframe src='about:blank'></iframe> + <script> // If document.open's behavior is modified to remove the url-rewriting behavior, // then this test can be deleted (https://github.com/whatwg/html/issues/3989). setup({ explicit_done: true }); +// This function is called by directly by the child iframe (above), with the +// child iframe's document. The child iframe's document contains an about:srcdoc iframe. window.start = childDocument => { const grandchildDocument = childDocument.getElementById('foo').contentDocument; - test(t => { + test(() => { assert_equals(childDocument.URL, 'about:blank', 'Child document starting URL'); assert_equals(grandchildDocument.URL, 'about:srcdoc', @@ -45,27 +49,19 @@ done(); }; -</script> -<iframe src='about:blank'></iframe> +let subframe_doc = document.querySelector('iframe').contentDocument; +subframe_doc.body.innerHTML = '<iframe srcdoc="foo" id="foo"></iframe>'; +promise_test(async t => { + const grandchildIframe = subframe_doc.querySelector('iframe'); + await new Promise(resolve => { + grandchildIframe.onload = resolve; + }); -<script> - window.onload = () => { - let subframe_doc = document.querySelector('iframe').contentDocument; - subframe_doc.body.innerHTML = '<iframe srcdoc="foo" id="foo"></iframe>'; - promise_test((test) => { - return new Promise(async resolve => { - // We need a timeout since the srcdoc frame takes time to setup and - // doesn't fire a loadstop. - test.step_timeout(resolve, 100); - }).then(() => { - assert_equals( - subframe_doc.getElementById('foo').contentDocument.URL, - 'about:srcdoc'); - let script = subframe_doc.createElement('script'); - script.innerHTML = 'parent.start(document);'; - subframe_doc.body.appendChild(script); - }); - }, "wrapper promise test for timeout."); - }; + assert_equals(grandchildIframe.contentDocument.URL, 'about:srcdoc'); + + let script = subframe_doc.createElement('script'); + script.innerHTML = 'parent.start(document);'; + subframe_doc.body.appendChild(script); +}, "wrapper promise test for timeout."); </script>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-focus-2.html.ini b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-focus-2.html.ini index 919edc7d..86621d6 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-focus-2.html.ini +++ b/third_party/blink/web_tests/external/wpt/html/semantics/popovers/popover-focus-2.html.ini
@@ -1,6 +1,5 @@ [popover-focus-2.html] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac13-arm64") and (virtual_suite == "popover-hint-disabled"): OK if (product == "content_shell") and (os == "mac") and (port == "mac12-arm64"): OK if (product == "content_shell") and (os == "mac") and (port == "mac11-arm64"): OK if (product == "content_shell") and (os == "win"): OK
diff --git a/third_party/blink/web_tests/external/wpt/selection/contenteditable/modifying-selection-with-non-primary-mouse-button.tentative.html.ini b/third_party/blink/web_tests/external/wpt/selection/contenteditable/modifying-selection-with-non-primary-mouse-button.tentative.html.ini index 6818fca..36e555cf 100644 --- a/third_party/blink/web_tests/external/wpt/selection/contenteditable/modifying-selection-with-non-primary-mouse-button.tentative.html.ini +++ b/third_party/blink/web_tests/external/wpt/selection/contenteditable/modifying-selection-with-non-primary-mouse-button.tentative.html.ini
@@ -1,13 +1,11 @@ [modifying-selection-with-non-primary-mouse-button.tentative.html?middle] [Shift + middle click in a link shouldn't extend the selection] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): PASS if product == "chrome": PASS FAIL [Shift + middle click should extend the selection] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): PASS if product == "chrome": PASS FAIL @@ -15,12 +13,10 @@ [modifying-selection-with-non-primary-mouse-button.tentative.html?secondary] [Shift + secondary click in a link shouldn't extend the selection] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): PASS if product == "chrome": PASS FAIL [Shift + secondary click should extend the selection] expected: - if (product == "content_shell") and (os == "mac") and (port == "mac10.15"): PASS if product == "chrome": PASS FAIL
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script-expected.txt b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script-expected.txt index 0fd9370..0642dc4 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script-expected.txt +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script-expected.txt
@@ -12,6 +12,7 @@ } waitingForDebugger : true } -Paused at http://127.0.0.1:8000/inspector-protocol/shared-storage/resources/module.js:0:0 +Paused at http://127.0.0.1:8000/inspector-protocol/shared-storage/resources/module.js:0:0 (function location) +Paused at http://127.0.0.1:8000/inspector-protocol/shared-storage/resources/module.js:4:16 (location) [WORKLET]: loaded module, test token: 42
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script.js b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script.js index 5b5d3ba2..aa8e3ac 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script.js +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/debugger-pause-on-first-script.js
@@ -30,8 +30,10 @@ const paused = (await wp.Debugger.oncePaused()).params; - const location = paused.callFrames[0].functionLocation; - testRunner.log(`Paused at ${scripts.get(location.scriptId) ?? '<unknown>'}:${location.lineNumber}:${location.columnNumber}`); + const function_location = paused.callFrames[0].functionLocation; + const location = paused.callFrames[0].location; + testRunner.log(`Paused at ${scripts.get(function_location.scriptId) ?? '<unknown>'}:${function_location.lineNumber}:${function_location.columnNumber} (function location)`); + testRunner.log(`Paused at ${scripts.get(location.scriptId) ?? '<unknown>'}:${location.lineNumber}:${location.columnNumber} (location)`); worklet_session.evaluate(`testToken = 42;`); wp.Debugger.resume();
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/resources/module.js b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/resources/module.js index 475aa67..418619fd 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/resources/module.js +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/shared-storage/resources/module.js
@@ -1,10 +1,10 @@ -console.log(`loaded module, test token: ${typeof(testToken) === 'undefined' ? '<undefined>' : testToken}`); -var globalVar = 0; - class EmptyOperation { async run(data) {} } +/* dummy text */console.log(`loaded module, test token: ${typeof(testToken) === 'undefined' ? '<undefined>' : testToken}`); +var globalVar = 0; + class SetGlobalVarAndPauseOnDebuggerOperation { async run(data) { if (data && data.hasOwnProperty('setGlobalVarTo')) {
diff --git a/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any-expected.txt b/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any-expected.txt new file mode 100644 index 0000000..ec60fed --- /dev/null +++ b/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any-expected.txt
@@ -0,0 +1,153 @@ +This is a testharness.js-based test. +Found 149 tests; 11 PASS, 138 FAIL, 0 TIMEOUT, 0 NOTRUN. +FAIL reduceL1 float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 1D tensor all non-negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 1D tensor all non-negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +PASS reduceMean float32 1D tensor all positive default options / async +PASS reduceMean float32 1D tensor all negative default options / async +PASS reduceMean float32 1D tensor all positive integers default options / async +PASS reduceMean float32 1D tensor all negative integers default options / async +PASS reduceMean float32 2D tensor default options / async +PASS reduceMean float32 3D tensor default options / async +PASS reduceMean float32 4D tensor default options / async +PASS reduceMean float32 5D tensor default options / async +PASS reduceMean float32 3D tensor options.axes / async +FAIL reduceMean float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." +PASS reduceMean float32 3D tensor options.keepDimensions=false / async +FAIL reduceMean float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +PASS reduceMean float32 4D tensor options.keepDimensions=false / async +FAIL reduceMean float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." +FAIL reduceMin float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSum float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +FAIL reduceSum float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceSum) is not supported." +FAIL reduceSumSquare float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any.worker-expected.txt new file mode 100644 index 0000000..5d6aa3b --- /dev/null +++ b/third_party/blink/web_tests/platform/fuchsia/external/wpt/webnn/reduction.https.any.worker-expected.txt
@@ -0,0 +1,302 @@ +This is a testharness.js-based test. +Found 298 tests; 11 PASS, 287 FAIL, 0 TIMEOUT, 0 NOTRUN. +FAIL reduceL1 float32 1D tensor all positive default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 1D tensor all negative default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 1D tensor all positive integers default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 1D tensor all negative integers default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceL1 float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceL1 float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL1 float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL2 float32 1D tensor all positive default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 1D tensor all negative default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 1D tensor all positive integers default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 1D tensor all negative integers default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceL2 float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceL2 float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL2 float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSum float32 1D tensor all non-negative default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 1D tensor all non-negative integers default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSum float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceLogSum float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSum float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 1D tensor all positive default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 1D tensor all negative default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 1D tensor all positive integers default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 1D tensor all negative integers default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceMax float32 1D tensor default options / sync builder[operationName] is not a function +FAIL reduceMax float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceMax float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceMax float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceMax float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceMax float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMax float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +PASS reduceMean float32 1D tensor all positive default options / sync +PASS reduceMean float32 1D tensor all negative default options / sync +PASS reduceMean float32 1D tensor all positive integers default options / sync +PASS reduceMean float32 1D tensor all negative integers default options / sync +PASS reduceMean float32 2D tensor default options / sync +PASS reduceMean float32 3D tensor default options / sync +PASS reduceMean float32 4D tensor default options / sync +PASS reduceMean float32 5D tensor default options / sync +PASS reduceMean float32 3D tensor options.axes / sync +FAIL reduceMean float32 4D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. +PASS reduceMean float32 3D tensor options.keepDimensions=false / sync +FAIL reduceMean float32 3D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +PASS reduceMean float32 4D tensor options.keepDimensions=false / sync +FAIL reduceMean float32 4D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. +FAIL reduceMin float32 1D tensor default options / sync builder[operationName] is not a function +FAIL reduceMin float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceMin float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceMin float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceMin float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceMin float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMin float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceProduct float32 1D tensor default options / sync builder[operationName] is not a function +FAIL reduceProduct float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceProduct float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceProduct float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceProduct float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceProduct float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceProduct float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceSum float32 1D tensor all positive default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 1D tensor all negative default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 1D tensor all positive integers default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 1D tensor all negative integers default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 2D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 3D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 4D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 5D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 3D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 4D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 3D tensor options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 3D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +FAIL reduceSum float32 4D tensor options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 4D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceSum) is not supported. +FAIL reduceSumSquare float32 1D tensor all positive default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 1D tensor all negative default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 1D tensor all positive integers default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 1D tensor all negative integers default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 2D tensor default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 3D tensor default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 5D tensor default options / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 3D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor options.axes / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function +FAIL reduceL1 float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL1 float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceL2 float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 1D tensor all non-negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 1D tensor all non-negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSum float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMean float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceMin float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceMin float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceProduct float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSum float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSum float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder.build is not a function" +FAIL reduceSumSquare float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +FAIL reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any-expected.txt index 79568fc..2b49539 100644 --- a/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any-expected.txt +++ b/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 149 tests; 0 PASS, 149 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 149 tests; 11 PASS, 138 FAIL, 0 TIMEOUT, 0 NOTRUN. FAIL reduceL1 float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceL1 float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceL1 float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" @@ -75,22 +75,22 @@ FAIL reduceMax float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" -FAIL reduceMean float32 1D tensor all positive default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 1D tensor all negative default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 1D tensor all positive integers default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 1D tensor all negative integers default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 5D tensor default options / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 3D tensor options.axes / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 3D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." -FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: The operator (reduceMean) is not supported." +PASS reduceMean float32 1D tensor all positive default options / async +PASS reduceMean float32 1D tensor all negative default options / async +PASS reduceMean float32 1D tensor all positive integers default options / async +PASS reduceMean float32 1D tensor all negative integers default options / async +PASS reduceMean float32 2D tensor default options / async +PASS reduceMean float32 3D tensor default options / async +PASS reduceMean float32 4D tensor default options / async +PASS reduceMean float32 5D tensor default options / async +PASS reduceMean float32 3D tensor options.axes / async +FAIL reduceMean float32 4D tensor options.axes / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." +PASS reduceMean float32 3D tensor options.keepDimensions=false / async +FAIL reduceMean float32 3D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +PASS reduceMean float32 4D tensor options.keepDimensions=false / async +FAIL reduceMean float32 4D tensor options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "NotSupportedError: XNNPACK can't support keep dimensions." +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / async promise_test: Unhandled rejection with value: object "DataError: Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter." FAIL reduceMin float32 1D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceMin float32 2D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function" FAIL reduceMin float32 3D tensor default options / async promise_test: Unhandled rejection with value: object "TypeError: builder[operationName] is not a function"
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any.worker-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any.worker-expected.txt index 82ce802..4596de3 100644 --- a/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any.worker-expected.txt +++ b/third_party/blink/web_tests/platform/win/external/wpt/webnn/reduction.https.any.worker-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -Found 298 tests; 0 PASS, 298 FAIL, 0 TIMEOUT, 0 NOTRUN. +Found 298 tests; 11 PASS, 287 FAIL, 0 TIMEOUT, 0 NOTRUN. FAIL reduceL1 float32 1D tensor all positive default options / sync builder[operationName] is not a function FAIL reduceL1 float32 1D tensor all negative default options / sync builder[operationName] is not a function FAIL reduceL1 float32 1D tensor all positive integers default options / sync builder[operationName] is not a function @@ -75,22 +75,22 @@ FAIL reduceMax float32 4D tensor options.keepDimensions=true / sync builder[operationName] is not a function FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=false / sync builder[operationName] is not a function FAIL reduceMax float32 4D tensor options.axes with options.keepDimensions=true / sync builder[operationName] is not a function -FAIL reduceMean float32 1D tensor all positive default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 1D tensor all negative default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 1D tensor all positive integers default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 1D tensor all negative integers default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 2D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 3D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 5D tensor default options / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 3D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 3D tensor options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 3D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. -FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': The operator (reduceMean) is not supported. +PASS reduceMean float32 1D tensor all positive default options / sync +PASS reduceMean float32 1D tensor all negative default options / sync +PASS reduceMean float32 1D tensor all positive integers default options / sync +PASS reduceMean float32 1D tensor all negative integers default options / sync +PASS reduceMean float32 2D tensor default options / sync +PASS reduceMean float32 3D tensor default options / sync +PASS reduceMean float32 4D tensor default options / sync +PASS reduceMean float32 5D tensor default options / sync +PASS reduceMean float32 3D tensor options.axes / sync +FAIL reduceMean float32 4D tensor options.axes / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. +PASS reduceMean float32 3D tensor options.keepDimensions=false / sync +FAIL reduceMean float32 3D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +PASS reduceMean float32 4D tensor options.keepDimensions=false / sync +FAIL reduceMean float32 4D tensor options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': XNNPACK can't support keep dimensions. +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=false / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. +FAIL reduceMean float32 4D tensor options.axes with options.keepDimensions=true / sync Failed to execute 'buildSync' on 'MLGraphBuilder': Failed to call xnn_define_static_mean( subgraph, reduction_axes.size(), reduction_axes.data(), input_id, output_id, flags): xnn_status_invalid_parameter. FAIL reduceMin float32 1D tensor default options / sync builder[operationName] is not a function FAIL reduceMin float32 2D tensor default options / sync builder[operationName] is not a function FAIL reduceMin float32 3D tensor default options / sync builder[operationName] is not a function
diff --git a/third_party/closure_compiler/externs/accessibility_private.js b/third_party/closure_compiler/externs/accessibility_private.js index 9385251b..39eeb09e 100644 --- a/third_party/closure_compiler/externs/accessibility_private.js +++ b/third_party/closure_compiler/externs/accessibility_private.js
@@ -475,9 +475,9 @@ /** * Darkens or undarkens the screen. - * @param {boolean} enabled True to darken screen; false to undarken screen. + * @param {boolean} darken True to darken screen; false to undarken screen. */ -chrome.accessibilityPrivate.darkenScreen = function(enabled) {}; +chrome.accessibilityPrivate.darkenScreen = function(darken) {}; /** * When enabled, forwards key events to the Switch Access extension
diff --git a/third_party/dawn b/third_party/dawn index 174c42e..3cd439b 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit 174c42e551ba1b82747056cb7fc2b9722082d0d4 +Subproject commit 3cd439bfaf464c0ea5ab2d669febda4bc5651e0a
diff --git a/third_party/depot_tools b/third_party/depot_tools index 4566632..aabd869 160000 --- a/third_party/depot_tools +++ b/third_party/depot_tools
@@ -1 +1 @@ -Subproject commit 456663282214a9b81f7299908f67d03beeb63845 +Subproject commit aabd869daf9956514eba5f57d92da166f993ca47
diff --git a/third_party/devtools-frontend-internal b/third_party/devtools-frontend-internal index 5fde161..e892097 160000 --- a/third_party/devtools-frontend-internal +++ b/third_party/devtools-frontend-internal
@@ -1 +1 @@ -Subproject commit 5fde161dd4df5e1bc613121743ca9a6f92e1acf8 +Subproject commit e892097f7c37eb2144577fadb1a390fc0ce3f8e4
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index 4ef9c73..a4cc1be 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit 4ef9c73c536379ce499e8771304ef3f999fc86b6 +Subproject commit a4cc1be16a5fecf8333afbb0a8bbbd70e09bdd94
diff --git a/third_party/icu b/third_party/icu index 985b9a6..995db88 160000 --- a/third_party/icu +++ b/third_party/icu
@@ -1 +1 @@ -Subproject commit 985b9a6f70e13f3db741fed121e4dcc3046ad494 +Subproject commit 995db880cff28a8b5d3a9978acd1b7cab9885edd
diff --git a/third_party/node/node.gni b/third_party/node/node.gni index 7b81117..bb7111af 100644 --- a/third_party/node/node.gni +++ b/third_party/node/node.gni
@@ -2,6 +2,9 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/toolchain/rbe.gni") +import("//build/toolchain/siso.gni") + template("node") { action(target_name) { forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) @@ -14,14 +17,32 @@ "//third_party/node/node_modules.tar.gz.sha1", ] - if (is_linux || is_chromeos) { - inputs += [ "//third_party/node/linux/node-linux-x64.tar.gz.sha1" ] + # When use_remoteexec=true or use_siso=true, node actions run on remote + # Linux worker. So it should include linux node binary in inputs. + if (is_linux || is_chromeos || use_remoteexec || use_siso) { + inputs += [ + "//third_party/node/linux/node-linux-x64.tar.gz.sha1", + "//third_party/node/linux/node-linux-x64/bin/node", + ] } - if (is_win) { - inputs += [ "//third_party/node/win/node.exe.sha1" ] + if (is_win && host_os == "win") { + inputs += [ + "//third_party/node/win/node.exe", + "//third_party/node/win/node.exe.sha1", + ] } - if (is_mac) { - inputs += [ "//third_party/node/mac/node-darwin-x64.tar.gz.sha1" ] + if (is_mac && host_os == "mac") { + if (host_cpu == "arm64") { + inputs += [ + "//third_party/node/mac/node-darwin-arm64.tar.gz.sha1", + "//third_party/node/mac/node-darwin-arm64/bin/node", + ] + } else { + inputs += [ + "//third_party/node/mac/node-darwin-x64.tar.gz.sha1", + "//third_party/node/mac/node-darwin-x64/bin/node", + ] + } } } }
diff --git a/third_party/openscreen/src b/third_party/openscreen/src index cba24a9..d0b32ca 160000 --- a/third_party/openscreen/src +++ b/third_party/openscreen/src
@@ -1 +1 @@ -Subproject commit cba24a91356b6d7d2930797541168ff6e0d17885 +Subproject commit d0b32cadd6ddc94646047ee93aff43db2470f9c0
diff --git a/third_party/skia b/third_party/skia index b72fe6f..c5f8c24 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit b72fe6f76c61be2fd9cf6878f6e3defd44960af8 +Subproject commit c5f8c24606eadfdf5ddf1741c6bd4bbeb34e0214
diff --git a/third_party/vulkan-deps b/third_party/vulkan-deps index be2755d..b0fb86c 160000 --- a/third_party/vulkan-deps +++ b/third_party/vulkan-deps
@@ -1 +1 @@ -Subproject commit be2755d4d1097be1c7efa48b4c75d2abfc689205 +Subproject commit b0fb86c92b69af3d19421199c5d8f3b6dda018e0
diff --git a/third_party/webrtc b/third_party/webrtc index 7569116..cedabf3 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 756911644f7c82cedc9230dd626e24053b9a50c4 +Subproject commit cedabf3e2ee01939dcef2fef18c1be8515b09ecd
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 3c0cf68..a98d847 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -1128,7 +1128,6 @@ 'gpu-fyi-try-android-r-pixel-4-32': 'gpu_tests_android_release_trybot_reclient', 'gpu-try-android-m-nexus-5x-64': 'gpu_tests_android_release_trybot_arm64_reclient', 'linux_android_dbg_ng': 'android_debug_bot', - 'try-nougat-phone-tester': 'android_debug_trybot_arm64_reclient', }, 'tryserver.chromium.angle': {
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.android.json b/tools/mb/mb_config_expectations/tryserver.chromium.android.json index 2b9a83a..2fd5d557 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.android.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
@@ -1651,19 +1651,5 @@ "target_os": "android", "use_goma": true } - }, - "try-nougat-phone-tester": { - "gn_args": { - "debuggable_apks": false, - "ffmpeg_branding": "Chrome", - "is_component_build": true, - "is_debug": true, - "proprietary_codecs": true, - "symbol_level": 1, - "target_cpu": "arm64", - "target_os": "android", - "use_dummy_lastchange": true, - "use_remoteexec": true - } } } \ No newline at end of file
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml index 1744217d..068ce9b8 100644 --- a/tools/metrics/actions/actions.xml +++ b/tools/metrics/actions/actions.xml
@@ -39516,6 +39516,8 @@ <suffix name="GMCCastStartStop" label="For GMCCastStartStop feature."/> <suffix name="GMCCastStartStopFeature" label="For Global Media Controls Cast start and stop feature."/> + <suffix name="GMCLocalMediaCastingFeature" + label="For GMC local media cast start feature."/> <suffix name="GoogleOneOfferNotification" label="For google one offer notification feature."/> <suffix name="HighEfficiencyInfoMode"
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 6a93437..243594e3 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -72097,10 +72097,6 @@ <int value="2" label="Android Tv"/> </enum> -<enum name="MediaRouterSinkPositionLabel"> - <int value="100" label="100+"/> -</enum> - <enum name="MediaRouterSourceTypes"> <int value="1" label="App"/> <int value="2" label="Tab"/> @@ -110747,21 +110743,6 @@ </int> </enum> -<enum name="V8SourceMapReference"> - <int value="0" label="None">The script did not specify a source map</int> - <int value="1" label="HTTP"> - The source map was specified via "SourceMap" HTTP header - </int> - <int value="2" label="HashSignComment"> - The source map was specified via hash sign prefixed sourceMappingURL magic - comment - </int> - <int value="3" label="AtSignComment"> - The source map was specified via atsgin prefixed sourceMappingURL magic - comment - </int> -</enum> - <enum name="VaapiFunctions"> <int value="0" label="vaBeginPicture()"/> <int value="1" label="vaCreateBuffer()"/>
diff --git a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml index 37bc12a..8a8e581 100644 --- a/tools/metrics/histograms/metadata/feature_engagement/histograms.xml +++ b/tools/metrics/histograms/metadata/feature_engagement/histograms.xml
@@ -179,6 +179,8 @@ <variant name="IPH_GlobalMediaControls" summary="the Global Media Controls"/> <variant name="IPH_GMCCastStartStop" summary="Cast start stop in the Zenith dialog"/> + <variant name="IPH_GMCLocalMediaCasting" + summary="Local media cast start in GMC"/> <variant name="IPH_GoogleOneOfferNotification" summary="show google one offer notification with a visit to Google Drive or Google Photo"/>
diff --git a/tools/metrics/histograms/metadata/image/histograms.xml b/tools/metrics/histograms/metadata/image/histograms.xml index 855a06cd9..7e21abb6 100644 --- a/tools/metrics/histograms/metadata/image/histograms.xml +++ b/tools/metrics/histograms/metadata/image/histograms.xml
@@ -43,6 +43,9 @@ </variants> <variants name="ImageFetcherClients"> + <variant name=".AlmanacIcons" + summary="Downloads app icons for clients of the Almanac Server to + display."/> <variant name=".AnswerSuggestions" summary="Showing cache patterns only for AnswerSuggestions (valid until M117)."/>
diff --git a/tools/metrics/histograms/metadata/media/histograms.xml b/tools/metrics/histograms/metadata/media/histograms.xml index 297d6a2..7ee53af8 100644 --- a/tools/metrics/histograms/metadata/media/histograms.xml +++ b/tools/metrics/histograms/metadata/media/histograms.xml
@@ -6926,7 +6926,7 @@ </histogram> <histogram name="MediaRouter.CastStreaming.Audio.PlaybackOnReceiver" - enum="Boolean" expires_after="2023-11-12"> + enum="Boolean" expires_after="2024-04-01"> <owner>takumif@chromium.org</owner> <owner>muyaoxu@google.com</owner> <owner>openscreen-eng@google.com</owner> @@ -7321,42 +7321,6 @@ </summary> </histogram> -<histogram name="MediaRouter.Ui.Action.CloseLatency" units="ms" - expires_after="2023-11-12"> - <owner>takumif@chromium.org</owner> - <owner>openscreen-eng@google.com</owner> - <summary> - Duration in milliseconds taken from the user opening the Media Router dialog - to the user closing the dialog. This is only recorded if closing the dialog - is the first action the user takes. - </summary> -</histogram> - -<histogram name="MediaRouter.Ui.Action.StartLocal.Latency" units="ms" - expires_after="2023-11-12"> - <owner>takumif@chromium.org</owner> - <owner>openscreen-eng@google.com</owner> - <summary> - Duration in milliseconds taken from the Media Router dialog showing the sink - list and being populated with at least one device to the user selecting a - device immediately after to create a new route. - </summary> -</histogram> - -<histogram name="MediaRouter.Ui.Action.StartLocalPosition" - enum="MediaRouterSinkPositionLabel" expires_after="2023-11-12"> - <owner>takumif@chromium.org</owner> - <owner>openscreen-eng@google.com</owner> - <summary>The index of the sink that was selected in the sink list.</summary> -</histogram> - -<histogram name="MediaRouter.Ui.Action.StopRoute" enum="MediaRouteType" - expires_after="2023-11-12"> - <owner>takumif@chromium.org</owner> - <owner>openscreen-eng@google.com</owner> - <summary>The number of times a user stops different types of routes.</summary> -</histogram> - <histogram name="MediaRouter.Ui.Android.DialogAction" enum="MediaRouterAndroidDialogAction" expires_after="2024-05-01"> <owner>muyaoxu@google.com</owner> @@ -7423,16 +7387,6 @@ </summary> </histogram> -<histogram name="MediaRouter.Ui.Dialog.Paint" units="ms" - expires_after="2023-11-12"> - <owner>takumif@chromium.org</owner> - <owner>openscreen-eng@google.com</owner> - <summary> - Duration in milliseconds taken from a user click to open the Media Router - dialog to the initial paint. - </summary> -</histogram> - <histogram name="MediaRouter.WiredDisplay.AvailableDevicesCount" units="units" expires_after="2024-02-25"> <owner>takumif@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/v8/histograms.xml b/tools/metrics/histograms/metadata/v8/histograms.xml index 8082f1d2..b111e8e 100644 --- a/tools/metrics/histograms/metadata/v8/histograms.xml +++ b/tools/metrics/histograms/metadata/v8/histograms.xml
@@ -1395,19 +1395,6 @@ </summary> </histogram> -<histogram name="V8.SourceMapReference" enum="V8SourceMapReference" - expires_after="2024-06-30"> - <owner>szuend@chromium.org</owner> - <owner>bmeurer@chromium.org</owner> - <summary> - Each time a script is parsed we report how the source map for that script is - specified. - - This histogram does not care whether a source map is actually publicly - available or if it's specified inline as a data URL. - </summary> -</histogram> - <histogram name="V8.TurboFan1KTicks" units="1000 ticks" expires_after="2023-06-30"> <owner>tebbi@chromium.org</owner>
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml index a4b51f1..3aea825 100644 --- a/tools/traffic_annotation/summary/annotations.xml +++ b/tools/traffic_annotation/summary/annotations.xml
@@ -436,4 +436,5 @@ <item id="plus_address_reservation" added_in_milestone="119" content_hash_code="02835001" os_list="linux,windows,android,chromeos" file_path="components/plus_addresses/plus_address_client.cc" /> <item id="plus_address_confirmation" added_in_milestone="119" content_hash_code="04783158" os_list="linux,windows,android,chromeos" file_path="components/plus_addresses/plus_address_client.cc" /> <item id="customize_chrome_page_handler" added_in_milestone="120" content_hash_code="003c50db" os_list="linux,windows,chromeos" file_path="chrome/browser/ui/webui/side_panel/customize_chrome/customize_chrome_page_handler.cc" /> + <item id="almanac_icon_cache" added_in_milestone="120" content_hash_code="04ca8028" os_list="chromeos" file_path="chrome/browser/apps/almanac_api_client/almanac_icon_cache.cc" /> </annotations>
diff --git a/tools/traffic_annotation/summary/grouping.xml b/tools/traffic_annotation/summary/grouping.xml index 3924f4b..fc5b030 100644 --- a/tools/traffic_annotation/summary/grouping.xml +++ b/tools/traffic_annotation/summary/grouping.xml
@@ -292,6 +292,7 @@ <annotation id="almanac_launcher_app"/> <annotation id="ip_protection_service_get_proxy_config"/> <annotation id="customize_chrome_page_handler"/> + <annotation id="almanac_icon_cache"/> </sender> </group> <group name="Admin Features" hidden="true">
diff --git a/ui/accessibility/extensions/BUILD.gn b/ui/accessibility/extensions/BUILD.gn index bdc488e..7a33b9cf 100644 --- a/ui/accessibility/extensions/BUILD.gn +++ b/ui/accessibility/extensions/BUILD.gn
@@ -3,10 +3,13 @@ # found in the LICENSE file. import("//build/config/chromeos/ui_mode.gni") -import("//chrome/test/base/js2gtest.gni") import("//testing/test.gni") import("//tools/grit/grit_rule.gni") +if (is_chromeos_ash) { + import("//chrome/test/base/js2gtest.gni") +} + group("extensions") { deps = [ ":caretbrowsing",
diff --git a/ui/accessibility/extensions/chromevoxclassic/BUILD.gn b/ui/accessibility/extensions/chromevoxclassic/BUILD.gn index ae655d0..a70c936 100644 --- a/ui/accessibility/extensions/chromevoxclassic/BUILD.gn +++ b/ui/accessibility/extensions/chromevoxclassic/BUILD.gn
@@ -8,11 +8,14 @@ import( "//chrome/browser/resources/chromeos/accessibility/tools/run_jsbundler.gni") import("//chrome/common/features.gni") -import("//chrome/test/base/js2gtest.gni") import("//testing/test.gni") import("//third_party/closure_compiler/compile_js.gni") import("//third_party/liblouis/liblouis_library.gni") +if (is_chromeos_ash) { + import("//chrome/test/base/js2gtest.gni") +} + closure_library_dir = "//third_party/chromevox/third_party/closure-library/closure/goog"
diff --git a/ui/aura/test/aura_test_helper.cc b/ui/aura/test/aura_test_helper.cc index 5997d588..482c631d 100644 --- a/ui/aura/test/aura_test_helper.cc +++ b/ui/aura/test/aura_test_helper.cc
@@ -68,6 +68,7 @@ #endif #if BUILDFLAG(IS_OZONE) && BUILDFLAG(IS_CHROMEOS_ASH) + // TODO(b/304625912): Native events should be enabled for Crosier. ui::DisableNativeUiEventDispatchForTest(); #endif
diff --git a/ui/aura/window_tree_host_platform.cc b/ui/aura/window_tree_host_platform.cc index fd4a560..a02ffb5f 100644 --- a/ui/aura/window_tree_host_platform.cc +++ b/ui/aura/window_tree_host_platform.cc
@@ -32,6 +32,7 @@ #if BUILDFLAG(IS_OZONE) #include "ui/events/keycodes/dom/dom_keyboard_layout_map.h" +#include "ui/events/ozone/events_ozone.h" #include "ui/ozone/public/ozone_platform.h" #endif @@ -119,6 +120,11 @@ } void WindowTreeHostPlatform::SetCapture() { +#if BUILDFLAG(IS_OZONE) + if (ui::IsNativeUiEventDispatchDisabled()) { + return; + } +#endif platform_window_->SetCapture(); } @@ -175,6 +181,13 @@ void WindowTreeHostPlatform::MoveCursorToScreenLocationInPixels( const gfx::Point& location_in_pixels) { +#if BUILDFLAG(IS_OZONE) + if (ui::IsNativeUiEventDispatchDisabled()) { + // Unit tests should not test or rely on the native cursor position because + // it is shared between multiple tests. + return; + } +#endif platform_window_->MoveCursorTo(location_in_pixels); }
diff --git a/ui/events/ozone/events_ozone.cc b/ui/events/ozone/events_ozone.cc index 411e8ca..f1c11c8 100644 --- a/ui/events/ozone/events_ozone.cc +++ b/ui/events/ozone/events_ozone.cc
@@ -59,10 +59,14 @@ return handled; } -EVENTS_EXPORT void DisableNativeUiEventDispatchForTest() { +void DisableNativeUiEventDispatchForTest() { dispatch_disabled = true; } +bool IsNativeUiEventDispatchDisabled() { + return dispatch_disabled; +} + void SetKeyboardImeFlagProperty(KeyEvent::Properties* properties, uint8_t flags) { properties->emplace(kPropertyKeyboardImeFlag, std::vector<uint8_t>{flags});
diff --git a/ui/events/ozone/events_ozone.h b/ui/events/ozone/events_ozone.h index 7e26a549..df7a93f 100644 --- a/ui/events/ozone/events_ozone.h +++ b/ui/events/ozone/events_ozone.h
@@ -36,7 +36,10 @@ const PlatformEvent& native_event, base::OnceCallback<void(ui::Event*)> callback); +// Disable native level event handling including dispatch, +// capture or mouse movements for tests. EVENTS_EXPORT void DisableNativeUiEventDispatchForTest(); +EVENTS_EXPORT bool IsNativeUiEventDispatchDisabled(); // Event::Properties constants for IBus-GTK and fcitx-GTK. // Both of them in async mode use gtk-specific XKeyEvent::state bits 24 and 25.
diff --git a/ui/file_manager/file_manager/foreground/js/directory_model.js b/ui/file_manager/file_manager/foreground/js/directory_model.js index db6c40d..7fc0b0c 100644 --- a/ui/file_manager/file_manager/foreground/js/directory_model.js +++ b/ui/file_manager/file_manager/foreground/js/directory_model.js
@@ -518,6 +518,9 @@ * @private */ onStateVolumeChanged_(state) { + if (!state.currentDirectory) { + return; + } for (const volume of Object.values(state.volumes)) { // Navigate out of ODFS if it got disabled and the current directory is // under ODFS.
diff --git a/ui/file_manager/integration_tests/file_manager/directory_tree.js b/ui/file_manager/integration_tests/file_manager/directory_tree.js index fa0fe2e..6071be1 100644 --- a/ui/file_manager/integration_tests/file_manager/directory_tree.js +++ b/ui/file_manager/integration_tests/file_manager/directory_tree.js
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {addEntries, ENTRIES, EntryType, RootPath, sendTestMessage, TestEntryInfo} from '../test_util.js'; +import {addEntries, ENTRIES, EntryType, getCaller, pending, repeatUntil, RootPath, sendTestMessage, TestEntryInfo} from '../test_util.js'; import {testcase} from '../testcase.js'; import {remoteCall, setupAndWaitUntilReady} from './background.js'; @@ -160,7 +160,7 @@ appId, directoryTree.rootSelector, ['scrollLeft']); chrome.test.assertTrue(original.scrollLeft === 0); - // Shrink the tree to 50px. TODO(files-ng): consider using 150px? + // Shrink the tree to 50px. await remoteCall.callRemoteTestUtil( 'setElementStyles', appId, [directoryTree.containerSelector, {width: '50px'}]); @@ -170,10 +170,14 @@ 'setScrollLeft', appId, [directoryTree.rootSelector, 100]); // Check: the directory tree should not be horizontally scrolled. - const scrolled = await remoteCall.waitForElementStyles( - appId, directoryTree.rootSelector, ['scrollLeft']); - const noScrollLeft = scrolled.scrollLeft === 0; - chrome.test.assertTrue(noScrollLeft, 'Tree should not scroll left'); + const caller = getCaller(); + await repeatUntil(async () => { + const scrolled = await remoteCall.waitForElementStyles( + appId, directoryTree.rootSelector, ['scrollLeft']); + if (scrolled.scrollLeft !== 0) { + return pending(caller, 'Tree should not scroll left'); + } + }); }; /**
diff --git a/ui/file_manager/integration_tests/file_manager/file_display.js b/ui/file_manager/integration_tests/file_manager/file_display.js index 9d5926c..6561dc4 100644 --- a/ui/file_manager/integration_tests/file_manager/file_display.js +++ b/ui/file_manager/integration_tests/file_manager/file_display.js
@@ -133,7 +133,10 @@ const appId = await setupAndWaitUntilReady(RootPath.DRIVE, [], driveFiles); // Retrieve all file list entries that could be rendered 'offline'. - const offlineEntry = '#file-list .table-row.file.dim-offline'; + // Use "first-child" here because opacity for offline only applies on the + // children elements. + const offlineEntry = + '#file-list .table-row.file.dim-offline > div:first-child'; let elements = await remoteCall.callRemoteTestUtil( 'queryAllElements', appId, [offlineEntry, ['opacity']]); @@ -145,7 +148,10 @@ chrome.test.assertEq('0.38', elements[0].styles.opacity); // Retrieve file entries that are 'available offline' (not dimmed). - const availableEntry = '#file-list .table-row:not(.dim-offline)'; + // Use "first-child" here because opacity for offline only applies on the + // children elements. + const availableEntry = + '#file-list .table-row:not(.dim-offline) > div:first-child'; elements = await remoteCall.callRemoteTestUtil( 'queryAllElements', appId, [availableEntry, ['opacity']]);
diff --git a/ui/file_manager/integration_tests/test_util.js b/ui/file_manager/integration_tests/test_util.js index 085dffe5..56309da 100644 --- a/ui/file_manager/integration_tests/test_util.js +++ b/ui/file_manager/integration_tests/test_util.js
@@ -115,11 +115,11 @@ * it's the return of getCaller() function. * @param {string} message Pending reason including %s, %d, or %j markers. %j * format an object as JSON. - * @param {...*} var_args Values to be assigined to %x markers. + * @param {...*} _var_args Values to be assigined to %x markers. * @return {Object} Object which returns true for the expression: obj instanceof * pending. */ -export function pending(caller, message, var_args) { +export function pending(caller, message, ..._var_args) { // |index| is used to ignore caller and message arguments subsisting markers // (%s, %d and %j) within message with the remaining |arguments|. let index = 2;
diff --git a/ui/gfx/color_conversion_sk_filter_cache.cc b/ui/gfx/color_conversion_sk_filter_cache.cc index 23bb7a5b..c2e1068 100644 --- a/ui/gfx/color_conversion_sk_filter_cache.cc +++ b/ui/gfx/color_conversion_sk_filter_cache.cc
@@ -89,7 +89,7 @@ const Key& other) const { return src == other.src && src_bit_depth == other.src_bit_depth && dst == other.dst && - sdr_max_luminance_nits == other.sdr_max_luminance_nits; + dst_sdr_max_luminance_nits == other.dst_sdr_max_luminance_nits; } bool ColorConversionSkFilterCache::Key::operator!=(const Key& other) const { @@ -97,19 +97,19 @@ } bool ColorConversionSkFilterCache::Key::operator<(const Key& other) const { - return std::tie(src, src_bit_depth, dst, sdr_max_luminance_nits) < + return std::tie(src, src_bit_depth, dst, dst_sdr_max_luminance_nits) < std::tie(other.src, other.src_bit_depth, other.dst, - other.sdr_max_luminance_nits); + other.dst_sdr_max_luminance_nits); } ColorConversionSkFilterCache::Key::Key(const gfx::ColorSpace& src, uint32_t src_bit_depth, const gfx::ColorSpace& dst, - float sdr_max_luminance_nits) + float dst_sdr_max_luminance_nits) : src(src), src_bit_depth(src_bit_depth), dst(dst), - sdr_max_luminance_nits(sdr_max_luminance_nits) {} + dst_sdr_max_luminance_nits(dst_sdr_max_luminance_nits) {} ColorConversionSkFilterCache::Value::Value() = default; @@ -132,7 +132,7 @@ float resource_multiplier, absl::optional<uint32_t> src_bit_depth, absl::optional<gfx::HDRMetadata> src_hdr_metadata, - float sdr_max_luminance_nits, + float dst_sdr_max_luminance_nits, float dst_max_luminance_relative) { // Set unused parameters to bogus values, so that they do not result in // different keys for the same conversion. @@ -143,14 +143,15 @@ src_hdr_metadata = absl::nullopt; dst_max_luminance_relative = 0; - // If neither source nor destination will use `sdr_max_luminance_nits`, then - // set it to a nonsense value. + // If neither source nor destination will use `dst_sdr_max_luminance_nits`, + // then set it to a nonsense value. if (!dst.IsAffectedBySDRWhiteLevel() && !src.IsAffectedBySDRWhiteLevel()) { - sdr_max_luminance_nits = 0; + dst_sdr_max_luminance_nits = 0; } } - const Key key(src, src_bit_depth.value_or(0), dst, sdr_max_luminance_nits); + const Key key(src, src_bit_depth.value_or(0), dst, + dst_sdr_max_luminance_nits); Value& value = cache_[key]; if (!value.effect) { @@ -166,8 +167,8 @@ gfx::ColorTransform::RuntimeOptions options; options.offset = resource_offset; options.multiplier = resource_multiplier; - options.sdr_max_luminance_nits = sdr_max_luminance_nits; options.src_hdr_metadata = src_hdr_metadata; + options.dst_sdr_max_luminance_nits = dst_sdr_max_luminance_nits; options.dst_max_luminance_relative = dst_max_luminance_relative; return value.effect->makeColorFilter( value.transform->GetSkShaderUniforms(options)); @@ -264,7 +265,7 @@ sk_sp<SkImage> ColorConversionSkFilterCache::ApplyToneCurve( sk_sp<SkImage> image, absl::optional<HDRMetadata> src_hdr_metadata, - float sdr_max_luminance_nits, + float dst_sdr_max_luminance_nits, float dst_max_luminance_relative, GrDirectContext* gr_context, skgpu::graphite::Recorder* graphite_recorder) { @@ -292,7 +293,7 @@ Get(image_color_space, target_color_space, /*resource_offset=*/0, /*resource_multiplier=*/1, /*src_bit_depth=*/absl::nullopt, src_hdr_metadata, - sdr_max_luminance_nits, dst_max_luminance_relative); + dst_sdr_max_luminance_nits, dst_max_luminance_relative); SkPaint paint; paint.setBlendMode(SkBlendMode::kSrc); paint.setColorFilter(filter);
diff --git a/ui/gfx/color_conversion_sk_filter_cache.h b/ui/gfx/color_conversion_sk_filter_cache.h index f1c61ca..0beab20 100644 --- a/ui/gfx/color_conversion_sk_filter_cache.h +++ b/ui/gfx/color_conversion_sk_filter_cache.h
@@ -39,7 +39,7 @@ // `src` maybe specified in `src_bit_depth` (relevant only for YUV to RGB // conversion). The filter also applies the offset `src_resource_offset` and // then scales by `src_resource_multiplier`. Apply tone mapping of `src` is - // HLG or PQ, using `sdr_max_luminance_nits`, `src_hdr_metadata`, and + // HLG or PQ, using `src_hdr_metadata`, `dst_sdr_max_luminance_nits`, and // `dst_max_luminance_relative` as parameters. sk_sp<SkColorFilter> Get(const gfx::ColorSpace& src, const gfx::ColorSpace& dst, @@ -47,18 +47,18 @@ float resource_multiplier, absl::optional<uint32_t> src_bit_depth, absl::optional<gfx::HDRMetadata> src_hdr_metadata, - float sdr_max_luminance_nits, + float dst_sdr_max_luminance_nits, float dst_max_luminance_relative); // Return if ApplyToneCurve can be called on `image`. static bool UseToneCurve(sk_sp<SkImage> image); - // Perform global tone mapping on `image`, using `sdr_max_luminance_nits`, + // Perform global tone mapping on `image`, using `dst_sdr_max_luminance_nits`, // `dst_max_luminance_relative`, and `src_hdr_metadata`. The resulting image // will be in Rec2020 linear space, and will not have mipmaps. sk_sp<SkImage> ApplyToneCurve(sk_sp<SkImage> image, absl::optional<HDRMetadata> src_hdr_metadata, - float sdr_max_luminance_nits, + float dst_sdr_max_luminance_nits, float dst_max_luminance_relative, GrDirectContext* gr_context, skgpu::graphite::Recorder* graphite_recorder); @@ -83,12 +83,12 @@ Key(const gfx::ColorSpace& src, uint32_t src_bit_depth, const gfx::ColorSpace& dst, - float sdr_max_luminance_nits); + float dst_sdr_max_luminance_nits); gfx::ColorSpace src; uint32_t src_bit_depth = 0; gfx::ColorSpace dst; - float sdr_max_luminance_nits = 0.f; + float dst_sdr_max_luminance_nits = 0.f; bool operator==(const Key& other) const; bool operator!=(const Key& other) const;
diff --git a/ui/gfx/color_transform.cc b/ui/gfx/color_transform.cc index 5c1aa353..b58d600 100644 --- a/ui/gfx/color_transform.cc +++ b/ui/gfx/color_transform.cc
@@ -62,7 +62,7 @@ struct SkShaderUniforms { float offset = 0.f; float multiplier = 0.f; - float sdr_max_luminance_nits = ColorSpace::kDefaultSDRWhiteLevel; + float dst_sdr_max_luminance_nits = ColorSpace::kDefaultSDRWhiteLevel; float pq_tonemap_a = 1.f; float pq_tonemap_b = 1.f; float hlg_ootf_gamma_minus_one = 0.f; @@ -920,7 +920,7 @@ const gfx::ColorTransform::RuntimeOptions& options, float& gamma_minus_one) { const float dst_max_luminance_nits = - options.sdr_max_luminance_nits * options.dst_max_luminance_relative; + options.dst_sdr_max_luminance_nits * options.dst_max_luminance_relative; gamma_minus_one = 1.2f + 0.42f * logf(dst_max_luminance_nits / kHLGRefMaxLumNits) / logf(10.f) - @@ -1012,7 +1012,7 @@ if (IsHlgPqSdrRelative()) { return src_max_lum_nits / ColorSpace::kDefaultSDRWhiteLevel; } - return src_max_lum_nits / options.sdr_max_luminance_nits; + return src_max_lum_nits / options.dst_sdr_max_luminance_nits; } // Computes the constants used by the tone mapping algorithm described in // https://colab.research.google.com/drive/1hI10nq6L6ru_UFvz7-f7xQaQp0qarz_K @@ -1036,8 +1036,10 @@ // Converts from nits-relative (where 1.0 is `unity_nits` nits) to SDR-relative // (where 1.0 is SDR white). If `use_default_sdr_white` is true then use 203 -// nits for SDR white, otherwise use `RuntimeOptions::sdr_max_luminance_nits` -// for SDR white. +// nits for SDR white, otherwise use +// `RuntimeOptions::dst_sdr_max_luminance_nits` for SDR white. +// TODO(https://crbug.com/1421266, https://crbug.com/1483235): Use source HDR +// metadata for this conversion. class ColorTransformNitsToSdrRelative : public ColorTransformStep { public: ColorTransformNitsToSdrRelative(float unity_nits, bool use_default_sdr_white) @@ -1050,7 +1052,7 @@ const ColorTransform::RuntimeOptions& options) const override { const float sdr_white_nits = use_default_sdr_white_ ? ColorSpace::kDefaultSDRWhiteLevel - : options.sdr_max_luminance_nits; + : options.dst_sdr_max_luminance_nits; const float factor = unity_nits_ / sdr_white_nits; for (size_t i = 0; i < num; i++) { color[i].Scale(factor); @@ -1061,12 +1063,12 @@ if (use_default_sdr_white_) { *src << ColorSpace::kDefaultSDRWhiteLevel << ";"; } else { - *src << "sdr_max_luminance_nits;\n"; + *src << "dst_sdr_max_luminance_nits;\n"; } } void SetShaderUniforms(const ColorTransform::RuntimeOptions& options, SkShaderUniforms* uniforms) const override { - uniforms->sdr_max_luminance_nits = options.sdr_max_luminance_nits; + uniforms->dst_sdr_max_luminance_nits = options.dst_sdr_max_luminance_nits; } private: @@ -1075,8 +1077,8 @@ }; // Converts from SDR-relative (where 1.0 is SDR white) to nits-relative (where -// 1.0 is `unity_nits` nits). Use `RuntimeOptions::sdr_max_luminance_nits` for -// the number of nits of SDR white. +// 1.0 is `unity_nits` nits). Use `RuntimeOptions::dst_sdr_max_luminance_nits` +// for the number of nits of SDR white. class ColorTransformSdrToNitsRelative : public ColorTransformStep { public: explicit ColorTransformSdrToNitsRelative(float unity_nits) @@ -1086,18 +1088,18 @@ void Transform(ColorTransform::TriStim* color, size_t num, const ColorTransform::RuntimeOptions& options) const override { - const float factor = options.sdr_max_luminance_nits / unity_nits_; + const float factor = options.dst_sdr_max_luminance_nits / unity_nits_; for (size_t i = 0; i < num; i++) { color[i].Scale(factor); } } void AppendSkShaderSource(std::stringstream* src) const override { - *src << " color.rgb *= (sdr_max_luminance_nits / " << unity_nits_ + *src << " color.rgb *= (dst_sdr_max_luminance_nits / " << unity_nits_ << ");\n"; } void SetShaderUniforms(const ColorTransform::RuntimeOptions& options, SkShaderUniforms* uniforms) const override { - uniforms->sdr_max_luminance_nits = options.sdr_max_luminance_nits; + uniforms->dst_sdr_max_luminance_nits = options.dst_sdr_max_luminance_nits; } private: @@ -1327,7 +1329,7 @@ src << "uniform half offset;\n" << "uniform half multiplier;\n" - << "uniform half sdr_max_luminance_nits;\n" + << "uniform half dst_sdr_max_luminance_nits;\n" << "uniform half pq_tonemap_a;\n" << "uniform half pq_tonemap_b;\n" << "uniform half hlg_ootf_gamma_minus_one;\n"
diff --git a/ui/gfx/color_transform.h b/ui/gfx/color_transform.h index 9fff8de..ec6d54d 100644 --- a/ui/gfx/color_transform.h +++ b/ui/gfx/color_transform.h
@@ -46,15 +46,15 @@ float offset = 0.f; float multiplier = 1.f; - // Used for interpreting color spaces whose definition depends on an SDR - // white point and for tone mapping. - float sdr_max_luminance_nits = ColorSpace::kDefaultSDRWhiteLevel; - // Used for tone mapping PQ sources. absl::optional<gfx::HDRMetadata> src_hdr_metadata; + // Used for interpreting color spaces whose definition depends on an SDR + // white point and for tone mapping. + float dst_sdr_max_luminance_nits = ColorSpace::kDefaultSDRWhiteLevel; + // The maximum luminance value for the destination, as a multiple of - // `sdr_max_luminance_nits` (so this is 1 for SDR displays). + // `dst_sdr_max_luminance_nits` (so this is 1 for SDR displays). float dst_max_luminance_relative = 1.f; };
diff --git a/ui/gfx/color_transform_unittest.cc b/ui/gfx/color_transform_unittest.cc index 1404c9d..097d5ea 100644 --- a/ui/gfx/color_transform_unittest.cc +++ b/ui/gfx/color_transform_unittest.cc
@@ -656,7 +656,7 @@ ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; std::unique_ptr<ColorTransform> xform( ColorTransform::NewColorTransform(src_srgb, dst, options)); @@ -676,7 +676,7 @@ ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; options.tone_map_pq_and_hlg_to_dst = true; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; std::unique_ptr<ColorTransform> xform( @@ -701,7 +701,7 @@ ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; std::unique_ptr<ColorTransform> xform( ColorTransform::NewColorTransform(src_hlg, dst, options)); @@ -727,7 +727,7 @@ ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; options.tone_map_pq_and_hlg_to_dst = true; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; std::unique_ptr<ColorTransform> xform( @@ -768,7 +768,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -781,7 +781,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 250.f; constexpr float kDstMaxLumRel = 6.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -807,7 +807,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; // HLG 75% will match 203 nits. @@ -844,7 +844,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -857,7 +857,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 250.f; constexpr float kDstMaxLumRel = 6.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -883,7 +883,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; // HLG 75% will match 203 nits. @@ -922,7 +922,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -936,7 +936,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 2.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; runtime_options.src_hdr_metadata = HDRMetadata(HdrMetadataCta861_3(1000.f, 100.f)); @@ -951,7 +951,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 90.f; constexpr float kDstMaxLumRel = 51.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; ColorTransform::TriStim val(1.f, 1.f, 1.f); @@ -966,7 +966,7 @@ ColorTransform::RuntimeOptions runtime_options; constexpr float kSdrWhite = 100.f; constexpr float kDstMaxLumRel = 6.f; - runtime_options.sdr_max_luminance_nits = kSdrWhite; + runtime_options.dst_sdr_max_luminance_nits = kSdrWhite; runtime_options.dst_max_luminance_relative = kDstMaxLumRel; runtime_options.src_hdr_metadata = HDRMetadata(HdrMetadataCta861_3(1000.f, 100.f)); @@ -997,7 +997,7 @@ const ColorSpace hdr10 = ColorSpace::CreateHDR10(); ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; - runtime_options.sdr_max_luminance_nits = nits[i]; + runtime_options.dst_sdr_max_luminance_nits = nits[i]; // Transform to the same color space, but with the LINEAR_HDR transfer // function. @@ -1062,7 +1062,7 @@ const ColorSpace hlg = ColorSpace::CreateHLG(); ColorTransform::Options options; ColorTransform::RuntimeOptions runtime_options; - runtime_options.sdr_max_luminance_nits = nits[i]; + runtime_options.dst_sdr_max_luminance_nits = nits[i]; // Transform to the same color space, but with the LINEAR_HDR transfer // function.
diff --git a/ui/gfx/linux/gbm_wrapper.cc b/ui/gfx/linux/gbm_wrapper.cc index c1bf39fc..5fa6feb 100644 --- a/ui/gfx/linux/gbm_wrapper.cc +++ b/ui/gfx/linux/gbm_wrapper.cc
@@ -72,10 +72,9 @@ // anyways if (ret) { ret = drmPrimeHandleToFD(dev_fd, plane_handle, DRM_CLOEXEC, &fd); - return base::ScopedFD(); } - return base::ScopedFD(fd); + return ret ? base::ScopedFD() : base::ScopedFD(fd); #endif }
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.cc b/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.cc index 6b21b02..63c674b 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.cc +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_connector.cc
@@ -45,6 +45,9 @@ // all bug fix ids are ready before initializing WaylandBufferManagerGpu. If // bug fix ids are already ready, it immediately calls OnAllBugFixesSent // synchronously. + // TODO(crbug.com/1487446): This always runs synchronously now due to the + // temporal solution for avoiding the race condition. It may return empty bug + // fix ids while there are ids sent from Ash. buffer_manager_host_->WaitForAllBugFixIds( base::BindOnce(&WaylandBufferManagerConnector::OnAllBugFixesSent, weak_factory_.GetWeakPtr()));
diff --git a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc index 2ac3e89..96f6cd2 100644 --- a/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc +++ b/ui/ozone/platform/wayland/host/wayland_buffer_manager_host.cc
@@ -14,6 +14,7 @@ #include "base/functional/bind.h" #include "base/i18n/number_formatting.h" +#include "base/logging.h" #include "base/posix/eintr_wrapper.h" #include "base/strings/strcat.h" #include "base/strings/utf_string_conversions.h" @@ -127,6 +128,10 @@ void WaylandBufferManagerHost::OnAllBugFixesSent( std::vector<uint32_t> bug_fix_ids) { + // TODO(crbug.com/1487446): Currently, we immediately call the callback when + // it's passed regardless of bug fix ids readiness, so it always falls into + // `all_bug_fixes_sent_callback_.is_null()` condition. + // If `all_bug_fixes_sent_callback_` is not registered yet, `bug_fix_ids` // should be obtained by WaitBugFixIds call later. if (all_bug_fixes_sent_callback_.is_null()) { @@ -155,9 +160,15 @@ return; } - // If bug_fix_ids is not yet ready, wait until OnAllBugFixesSent is notified. - CHECK(all_bug_fixes_sent_callback_.is_null()); - all_bug_fixes_sent_callback_ = std::move(callback); + // If bug fix ids are not yet ready, immediately call `callback` with empty + // list of bug fix ids to avoid delaying WaylandBufferManagerGpu + // initialization long enough to cause race condition on GPU setup. We should + // wait bug fix ids when the race condition will be fixed. + // TODO(crbug.com/1487446): Store `callback` to `all_bug_fixes_sent_callback_` + // and wait calling it until the bug fix ids are ready. + LOG(WARNING) << "Bug fix ids are not yet ready for WaylandBufferManagerGpu " + << "initialization. See crbug.com/1487446 for more details."; + std::move(callback).Run(std::vector<uint32_t>()); } wl::BufferFormatsWithModifiersMap
diff --git a/ui/ozone/platform/wayland/host/wayland_zaura_shell_unittest.cc b/ui/ozone/platform/wayland/host/wayland_zaura_shell_unittest.cc index 66deb47..0e9cff2 100644 --- a/ui/ozone/platform/wayland/host/wayland_zaura_shell_unittest.cc +++ b/ui/ozone/platform/wayland/host/wayland_zaura_shell_unittest.cc
@@ -55,7 +55,9 @@ ASSERT_FALSE(connection_->zaura_shell()->compositor_version().IsValid()); } -TEST_F(WaylandZAuraShellTest, AllBugFixesSent) { +// TODO(crbug.com/1487446): Disabled now since the bug fix ids feature is +// partially disabled now until the race condition got resolved. +TEST_F(WaylandZAuraShellTest, DISABLED_AllBugFixesSent) { connection_->zaura_shell()->ResetBugFixesStatusForTesting(); ASSERT_FALSE(connection_->zaura_shell()->HasBugFix(1));
diff --git a/ui/ozone/platform/x11/x11_window.cc b/ui/ozone/platform/x11/x11_window.cc index 91d5863a..87aa663 100644 --- a/ui/ozone/platform/x11/x11_window.cc +++ b/ui/ozone/platform/x11/x11_window.cc
@@ -2004,8 +2004,14 @@ if (had_pointer_grab_ && !has_pointer_grab_) OnXWindowLostPointerGrab(); +#if BUILDFLAG(IS_CHROMEOS_ASH) + bool had_pointer_capture = had_pointer_grab_; + bool has_pointer_capture = has_pointer_grab_; +#else + // TODO(crbug.com/1491239): Remove has|had_pointer_ bool had_pointer_capture = had_pointer_ || had_pointer_grab_; bool has_pointer_capture = has_pointer_ || has_pointer_grab_; +#endif if (had_pointer_capture && !has_pointer_capture) OnXWindowLostCapture();
diff --git a/ui/webui/resources/js/BUILD.gn b/ui/webui/resources/js/BUILD.gn index 2ba64cc..5dc1289 100644 --- a/ui/webui/resources/js/BUILD.gn +++ b/ui/webui/resources/js/BUILD.gn
@@ -12,6 +12,7 @@ non_web_component_files = [ "action_link.ts", + "assert.ts", "assert_ts.ts", "color_utils.ts", "cr.ts",
diff --git a/ui/webui/resources/js/assert.ts b/ui/webui/resources/js/assert.ts new file mode 100644 index 0000000..acb154ab --- /dev/null +++ b/ui/webui/resources/js/assert.ts
@@ -0,0 +1,51 @@ +// 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. + +/** + * Verify |value| is truthy. + * @param value A value to check for truthiness. Note that this + * may be used to test whether |value| is defined or not, and we don't want + * to force a cast to boolean. + */ +export function assert<T>(value: T, message?: string): asserts value { + if (value) { + return; + } + + throw new Error('Assertion failed' + (message ? `: ${message}` : '')); +} + +export function assertInstanceof<T>( + value: unknown, type: {new (...args: any): T}, + message?: string): asserts value is T { + if (value instanceof type) { + return; + } + + throw new Error( + message || `Value ${value} is not of type ${type.name || typeof type}`); +} + +/** + * Call this from places in the code that should never be reached. + * + * For example, handling all the values of enum with a switch() like this: + * + * function getValueFromEnum(enum) { + * switch (enum) { + * case ENUM_FIRST_OF_TWO: + * return first + * case ENUM_LAST_OF_TWO: + * return last; + * } + * assertNotReached(); + * } + * + * This code should only be hit in the case of serious programmer error or + * unexpected input. + */ +export function assertNotReached(message: string = 'Unreachable code hit'): + never { + assert(false, message); +}
diff --git a/ui/webui/resources/js/assert_ts.ts b/ui/webui/resources/js/assert_ts.ts index 269e061..72a0960 100644 --- a/ui/webui/resources/js/assert_ts.ts +++ b/ui/webui/resources/js/assert_ts.ts
@@ -2,52 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -/** @fileoverview A better version of assert.js for TypeScript. */ - -/** - * Verify |value| is truthy. - * @param value A value to check for truthiness. Note that this - * may be used to test whether |value| is defined or not, and we don't want - * to force a cast to boolean. - */ -export function assert<T>(value: T, message?: string): asserts value { - if (value) { - return; - } - - throw new Error('Assertion failed' + (message ? `: ${message}` : '')); -} - -export function assertInstanceof<T>( - value: unknown, type: {new (...args: any): T}, - message?: string): asserts value is T { - if (value instanceof type) { - return; - } - - throw new Error( - message || `Value ${value} is not of type ${type.name || typeof type}`); -} - -/** - * Call this from places in the code that should never be reached. - * - * For example, handling all the values of enum with a switch() like this: - * - * function getValueFromEnum(enum) { - * switch (enum) { - * case ENUM_FIRST_OF_TWO: - * return first - * case ENUM_LAST_OF_TWO: - * return last; - * } - * assertNotReached(); - * } - * - * This code should only be hit in the case of serious programmer error or - * unexpected input. - */ -export function assertNotReached(message: string = 'Unreachable code hit'): - never { - assert(false, message); -} +// TODO(crbug.com/1291526): Delete this file once all clients have been updated +// to use assert.ts directly. +export {assert, assertInstanceof, assertNotReached} from './assert.js';
diff --git a/v8 b/v8 index c57efa1..b5f6750 160000 --- a/v8 +++ b/v8
@@ -1 +1 @@ -Subproject commit c57efa129901e286f562dccac8c5e77b9517b1fd +Subproject commit b5f6750fd599671f406a077969c2caf4bd8e2da7